This guide explains how to configure Cells on a Red-Hat-Enterprise-Linux-like system. It contains strongly opinionated choices and best practices. It guides you through the steps required for a production-ready and reasonnably secured server. For a simple test on a RHEL-like server, you can skim through our quick start page instead.
Usecase
Deploy a self-contained Pydio Cells instance on a web-facing RHEL-like Linux server,
exposed at https://<your-fqdn>
using a Let's Encrypt certificate.
Requirements
- CPU/Memory: 4GB RAM, 2 CPU
- Storage: 100GB SSD hard drive
- Operating System:
- RHEL 7, 8 or 9, Rocky Linux 8 or 9, CentOS and Scientific Linux 7.
- An admin user with sudo rights that can connect to the server via SSH
- Note: The present guide uses a Rocky Linux 9 server. You might have to adapt some commands if you use a different version or flavour.
- Networking:
- One Network Interface Controller connected to the internet
- A registered domain that points toward the public IP of your server: if you already know your IP address, it is a good idea to already add a
A Record
in your provider DNS so that the record has been already propagated when we need it.
We recommend to run Pydio Cells with a dedicated pydio
user with no sudo permission.
As admin user on your server:
# Create pydio user with a home directory
sudo useradd -m -s /bin/bash pydio
# Create necessary folders
sudo mkdir -p /opt/pydio/bin /var/cells/certs
sudo chown -R pydio:pydio /opt/pydio /var/cells
# Add system-wide ENV var
sudo tee -a /etc/profile.d/cells-env.sh << EOF
export CELLS_WORKING_DIR=/var/cells
EOF
sudo chmod 0755 /etc/profile.d/cells-env.sh
Login as user pydio
and make sure that the environment variables are correctly set:
sysadmin@server:~$ sudo su - pydio
pydio@server:~$ echo $CELLS_WORKING_DIR
/var/cells
pydio@server:~$ exit
On Rocky Linux 9.2, default MariaDB package is 10.5 that works well for Cells. So simply do:
sudo yum install mariadb-server
sudo systemctl enable --now mariadb
# Run the script to secure your install
sudo mysql_secure_installation
# Open MySQL CLI to create your database and a dedicated user
sudo mysql -u root -p
Start a MySQL prompt and create the database and the dedicated pydio
user.
CREATE DATABASE cells;
CREATE USER 'pydio'@'localhost' IDENTIFIED BY '<PUT YOUR OWN PASSWORD HERE>';
GRANT ALL PRIVILEGES ON cells.* to 'pydio'@'localhost';
FLUSH PRIVILEGES;
exit
Check the service is running and that the user pydio
is correctly created:
sudo systemctl status mariadb
mysql -u pydio -p
# As pydio user
sudo su - pydio
# Download correct binary
distribId=cells
# or for Cells Enterprise
# distribId=cells-enterprise
wget -O /opt/pydio/bin/cells -v https://download.pydio.com/latest/${distribId}/release/{latest}/linux-amd64/${distribId}
# Make it executable
chmod a+x /opt/pydio/bin/cells
exit
# As sysadmin user
# Add permissions to bind to default HTTP ports
sudo setcap 'cap_net_bind_service=+ep' /opt/pydio/bin/cells
# Declare the cells commands system wide
sudo ln -s /opt/pydio/bin/cells /usr/local/bin/cells
Call the command version
as user pydio
:
sudo su - pydio
cells version
Call the command configure
as user pydio
:
sudo su - pydio
cells configure
If you choose Browser install
at the first prompt, you can access the configuration wizard at https://<YOUR PUBLIC IP>:8080
after accepting the self-signed certificate. (Ensure the port 8080
is free and not blocked by a firewall).
You can alternatively finalise the configuration from the command line by answering a few questions.
If you used the browser install, you can login in the web browser as user admin
First insure your firewall does not block the port 8080:
sudo firewall-cmd --add-port=8080/tcp
If you have done the CLI install, you first need to start the server:
sudo su - pydio
cells start
Connect and login at https://<YOUR PUBLIC IP>:8080
Note:
At this stage, we start the server in foreground mode. It is important that you always stop the server using the CTRL + C
shortcut before calling the start
command again.
At this point, we assume that:
- your
A record
has been propagated: verify withping <YOUR_FQDN>
from your local workstation - both port 80 and 443 are free and not blocked by any firewall
sudo netstat -tulpn
Create a site:
sudo su - pydio
cells configure sites
- Choose "Create a new site"
- Choose
443
as the port to bind to - Enter your FQDN as the address to bind to
- Choose "Automagically generate certificate with Let's Encrypt"
- Enter your Email, Accept Let's Encrypt EULA
- In a first pass, if you have a complicated network setup, you might want to choose to use the staging entrypoint for Let's Encrypt: it has much more generous limitations and let you try/error while fixing glitches in your network setup without getting black-listed.
- Redirect default
HTTP
port towardsHTTPS
- Double check and save.
# Restart your server
sudo su - pydio
cells start
Connect to your web site at https://<YOUR_FQDN>
. A valid certificate is now used.
Stop your server once again before performing the finalisation steps.
Create a configuration file sudo vi /etc/systemd/system/cells.service
with the following:
[Unit]
Description=Pydio Cells
Documentation=https://pydio.com
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/opt/pydio/bin/cells
[Service]
User=pydio
Group=pydio
PermissionsStartOnly=true
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/opt/pydio/bin/cells start
Restart=on-failure
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65536
TimeoutStopSec=5
KillSignal=INT
SendSIGKILL=yes
SuccessExitStatus=0
WorkingDirectory=/home/pydio
# Add environment variables
Environment=CELLS_WORKING_DIR=/var/cells
[Install]
WantedBy=multi-user.target
Reload systemd daemon, enable and start cells:
sudo systemctl daemon-reload
sudo systemctl enable --now cells
# you can check the system logs to insure everything seems OK
sudo journalctl -fu cells -S -1h
Connect to your certified web site at https://<YOUR_FQDN>
.
You are now good to go. Happy file sharing!
With Cells running as a service, you can access the logs in different ways:
# Pydio file logs
tail -200f /var/cells/logs/pydio.log
# Some of the microservices have their own log files, check:
ls -lsah /var/cells/logs/
# Check systemd files
journalctl -fu cells -S -1h
If the server is started and you get timeout errors while trying to connect to the web UI, it is generally a sign that the connection to the declared port is blocked by a firewall. Check both on your OS and on the admin console of your machine provider.
If, after a successful installation and when you try to navigate to the main application page with your browser, you land on a blank page with following message:
Access denied.
ensure you have modified SELinux to be in permissive mode.
If the default MariaDB package shipped with your OS does not meet your needs, you can install a more recent version from official MariaDB repository. Typically to get version 10.4 on Centos7:
# Add MariaDB 10.4 CentOS repository list
# See http://downloads.mariadb.org/mariadb/repositories/
sudo mkdir -p /etc/yum.repos.d
sudo tee /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
# Install and start the server
sudo yum install MariaDB-server
sudo systemctl enable --now mariadb