Pydio is a high-quality, self-hosted, open-source software that provides a central place for users to collaborate and share files internally or externally while providing security to organizations’ data.
Pydio was developed to help in document sharing while maintaining full control of organizations’ data. Pydio bridges the gap between rapidly growing open-source software and enterprise-ready solutions, giving security-conscious companies a platform they can rely on to securely exchange documents and communicate.
Pydio Cells Features
- Has built-in collaboration tools to help teams access files anywhere on their phones and on web, chat features for comments etc.
- Its secure and compliant by design alowing users to take control and monitor their own data sharing.
- It is scalable and reliable and easy to mantain designed in GoLang
- It has a central access point for all your files making file sharing very easy.
- Its designed with security of data at heart, hence very secure.
- It makes data analysis very easy due to its compliance with GDPR.
- It makes team collaboration very efficient.
- Has ability to handle huge amounts of data as it is written in GoLang.
- supports indepth-integrations.
- Its very easy to manage teams in a central place.
With the brief intro, we turn our focus on how to install Pydio Cells File Sharing Server on Rocky Linux 9 | AlmaLinux 9.
Setup Pre-requisites
- Database: A running MySQL DB-server – Latest version of MariaDB or MySQL community server.
- Hardware : 4GB RAM , minimum of 2 CPU cores, SSD hard disk most preffered due to its high data writing speeds.
- Web browser.
Setup Pydio Cells on Rocky Linux 9 / AlmaLinux
With all requirements checked, let’s begin the process of installation and configuration.
Step 1: Update your system
Before installing Pydio Cells, ensure your system is up to date.
Run the command :
sudo dnf update -y
sudo dnf install -y curl unzip wget
Put SELinux in enforcing mode by editing the its configuration file.
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
You can reboot the server if no applications will be affected by this:
sudo reboot
Step 2: Install and Configure MariaDB
Install MariaDB in your system by running the commands below:
sudo dnf install @mariadb -y
After MariaDB installation, start and enable MariaDB.
sudo systemctl start mariadb && sudo systemctl enable mariadb
systemctl status mariadb
Next, secure MySQL and set a root password by running the command:
sudo mysql_secure_installation
Agree to prompts by either y or n depending on your preferences.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Next, create a Pydio database and a user.
mysql -u root -p
Then create a Database called PydioDB and a Pydio database user called Pydio_User.
CREATE DATABASE cells;
CREATE USER 'pydio'@'localhost' IDENTIFIED BY 'StrongPassw0rd';
GRANT ALL PRIVILEGES ON cells.* to 'pydio'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 3: Create Pydio user and set directories
Create a Pydio user with home directory.
sudo useradd -m -s /bin/bash pydio
Create folders needed to run Pydio:
sudo mkdir -p /opt/pydio/bin /var/cells/certs
sudo chown -R pydio: /opt/pydio /var/cells
Add system-wide ENV variables:
sudo tee -a /etc/profile.d/cells-env.sh << EOF
export CELLS_WORKING_DIR=/var/cells
export CADDYPATH=/var/cells/certs
EOF
Set permissions for the envs file
sudo chmod 0755 /etc/profile.d/cells-env.sh
Step 4: Download and Install Pydio Cells
Install curl and uzip packages.
sudo dnf -y install curl unzip
To install Pydio Cells, switch user to pydio and then download Pydio cells from the pydio official website.
sudo su - pydio
VER=$(curl --silent "https://api.github.com/repos/pydio/cells/releases/latest"|grep '"tag_name"'|sed -E 's/.*"([^"]+)".*/\1/'|sed 's/v//')
wget https://download.pydio.com/latest/cells/release/{latest}/linux-amd64/pydio-cells-$VER-linux-amd64.zip
Extract the zip file :
unzip -q pydio-cells-$VER-linux-amd64.zip
A file named cells have been created and added to the path. Move the binary file to /opt/pydio/bin/
mv cells cells-fuse /opt/pydio/bin/
Ensure it is executable:
chmod a+x /opt/pydio/bin/cells
exit
As a 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
Verify it works by calling cells command with version as argument:
$ cells version
Pydio Cells Home Edition
Version: 4.4.9
Built: 27 Jan 25 13:56 +0000
Git commit: eb934e272fbdb043978fcf6ae9c164eda6ebc714
OS/Arch: linux/amd64
Go version: go1.22.11
Step 5: Configure Pydio Cells
Increase File descriptor size run the command :
sudo ulimit -n 8192
Allow port 8080, http and https on the firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
Run the script to install Pydio Cells.
sudo su - pydio
cells configure
Once installation begins you are prompted to select either a browser-based installation or command-line installation mode.
Choose the browser-based installation as shown below:
Welcome to Pydio Cells Home Edition installation
Pydio Cells Home Edition (v4.4.9) will be configured to run on this machine.
Make sure to prepare access and credentials to a MySQL 5.6+ (or MariaDB equivalent) server.
Pick your installation mode when you are ready.
Use the arrow keys to navigate: ↓ ↑ → ←
? Installation mode:
▸ Browser-based (requires a browser access)
Command line (performed in this terminal)
Then press Enter to proceed. A sample output will look like this:
Pick your installation mode when you are ready.
✔ Browser-based (requires a browser access)
2025-02-07T16:13:31.014+0300 INFO pydio.gateway.rest Started
2025-02-07T16:13:31.014+0300 INFO pydio.rest.install Started
✅ Created a new local CA at "/root/.config/pydio/cells/certs/rootCA.pem" 💥
✅ Created a new certificate valid for the following names 📜 - "127.0.0.1" - "192.168.1.183" - "192.168.1.183" - "localhost" - "localhost.localdomain" - "localhost4" - "localhost4.localdomain4"
✅ The certificate is at "/root/.config/pydio/cells/certs/247f86e3257b13e9a363f26506652c69.pem"
and the key at "/root/.config/pydio/cells/certs/247f86e3257b13e9a363f26506652c69-key.pem"
👉 If you are behind a reverse proxy, you can either install the RootCA on the proxy machine trust store, or configure your proxy to `insecure_skip_verify` for pointing to Cells.
👉 If you are developing locally, you may install the RootCA in your system trust store to see a green light in your browser!
🗒 To easily install the RootCA in your trust store, use https://github.com/FiloSottile/mkcert. Set the $CAROOT environment variable to the rootCA folder then use 'mkcert -install'
Installation Server is starting...
Listening to: 0.0.0.0:8080
Opening URL https://0.0.0.0:8080 in your browser. Please copy/paste it if the browser is not on the same machine.
Let’s proceed to install Pydio Cells via the browser.
https://192.168.1.183:8080/
Step 6: Pydio cells browser installation
To do the browser installation, copy and paste the opening URL on your browser and follow the steps.
As shown in the screenshot :

Agree with the terms and click NEXT.
On the next screen provide the database configurations. Fill them with details of database and user created earlier;Database Name: cells
Database User: pydio
Database Password: StrongPassw0rd
Once the information has been filled click Next.

Then create database admin user and his password as shown below:

Then click NEXT. Optionally make any changes on the advanced settings then click Install now.

The installation proces will begin, please be patient while Pydio Cells is being installed.

Once the installation is complete you will be taken to the login page as shown below.

Login with admin as username and password set during installation. Supply your login credentials and click Enter. Once login is successful you can take the tour or skip then click Enter.

Your interface will look like this.

Choose the Files to work with from the workspace.
Personal Files Workspace Interface:
Under Personal Files you can add new files or folders from other sources, you can create folders to store your data, you can bookmark URL’s etc.

Common Files Workspace Interface:
Under this tab, you can create cells to share files with other team members.

That sums up how to install Pydio Cells via the browser. We briefly look at how to install Pydio Cells on the terminal.
Step 7: Start Pydio Cells using Systemd
Exit the pydio session.
pydio@rocky9:~[pydio@rocky9 ~]$ ^C
pydio@rocky9:~[pydio@rocky9 ~]$ exit
logout
Create systemd service unit to manage Pydio cells as sysadmin user:
sudo tee /etc/systemd/system/cells.service<<EOF
[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
EOF
Reload systemd daemon, enable and start cells:
sudo systemctl daemon-reload
sudo systemctl enable cells
sudo systemctl restart cells
Let’s check service status:
$ systemctl status cells
● cells.service - Pydio Cells
Loaded: loaded (/etc/systemd/system/cells.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-02-07 16:55:04 EAT; 8s ago
Docs: https://pydio.com
Main PID: 61447 (cells)
Tasks: 103 (limit: 36017)
Memory: 757.3M
CPU: 4.630s
CGroup: /system.slice/cells.service
├─61447 /opt/pydio/bin/cells start
├─61490 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61491 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61500 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61506 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61512 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61513 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61522 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61528 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
├─61535 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
└─61543 /opt/pydio/bin/cells start --fork --discovery grpc://127.0.0.1:8030 --grpc_port 0 --grpc_discovery_port 0 --http http --adverti>
Feb 07 16:55:07 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:07.939+0300 INFO pydio.generic.timer Registering Job >
Feb 07 16:55:07 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:07.939+0300 INFO pydio.generic.timer Registering Job >
Feb 07 16:55:07 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:07.939+0300 INFO pydio.generic.timer Registering Job >
Feb 07 16:55:07 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:07.939+0300 INFO pydio.generic.timer Registering Job >
Feb 07 16:55:07 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:07.923+0300 INFO pydio.grpc.data.sync.pydiods1 Index conne>
Feb 07 16:55:08 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:08.032+0300 INFO pydio.grpc.data.sync.personal Successfull>
Feb 07 16:55:08 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:08.063+0300 INFO pydio.grpc.data.sync.cellsdata Successful>
Feb 07 16:55:08 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:08.145+0300 INFO pydio.grpc.data.sync.pydiods1 Successfull>
Feb 07 16:55:08 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:08.157+0300 INFO pydio.grpc.data.sync.versions Successfull>
Feb 07 16:55:08 rocky9.cloudspinx.com cells[61447]: 2025-02-07T16:55:08.197+0300 INFO pydio.grpc.data.sync.thumbnails Successfu>
You can check the system logs to insure Pydio Cells is working as expected:
tail -200f /var/cells/logs/pydio.log
sudo journalctl -fu cells -S -1h
Other Pydio cells microservices wills store their own log files on;
ls -lsah /var/cells/logs/
If the service is running okay, you can connect to Pydio cells administration dashboard at:
https://<YOUR_SERVER_IP_OR_FQDN>:8080
Conclusion:
Congratulations, you have started the Pydio Cells on your terminal. That sums up our article on how to Install Pydio Cells File Sharing Server on Rocky Linux 9 | AlmaLinux 9. I thank you for following along.
See more resources below: