Pydio Cells is a self-hosted Document Sharing and Collaboration platform. It also gives you full control of your document-sharing environment. The Pydio Cells have fast performance, handle huge file transfer sizes, and provide advanced workflow automation.

In this guide, we’ll walk you through the installation of Pydio Cells on the Ubuntu 24.04 server with the MariaDB database and Apache as a reverse proxy.

Prerequisites

Before you begin, make sure you have the following:

  • An Ubuntu 24.04 server.
  • A non-root user with administrator privileges.
  • A domain name pointed to a server IP address.

Installing dependencies

Before installing Pydio Cells, you must install dependencies on your Ubuntu system. This includes the MariaDB database server and Apache web server.

First, run the following apt command to update your Ubuntu package index and install dependencies for Pydio Cells. With this command, you’ll install the Apache web server, MariaDB database server, and Certbot for generating SSL/TLS certificates.

sudo apt update sudo apt install apache2 mariadb-server certbot python3-certbot-apache wget

Input Y to confirm with the installation.

<img alt="install deps" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/3-install-deps.png6697860e1fb09.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="354" loading="lazy" src="data:image/svg xml,” width=”750″>

After the installation is complete, check the Apache service status with the following:

sudo systemctl is-enabled apache2 sudo

systemctl status apache2

You can see below the Apache web server is enabled and running.

<img alt="check apache" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/4-check-apache2.png6697860e554c1.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="250" loading="lazy" src="data:image/svg xml,” width=”750″>

Now check the MariaDB server status with the command below.

sudo systemctl is-enabled mariadb

sudo systemctl status mariadb

Below the MariaDB server is running and enabled.

<img alt="check mariadb" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/5-check-mariadb.png6697860e782a4.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="258" loading="lazy" src="data:image/svg xml,” width=”750″>

Setting up MariaDB server

After installing the MariaDB server, you’ll secure MariaDB with the mariadb-secure-installation utility. Then, you’ll create a new database and user for Pydio Cells.

To secure MariaDB server installation, run the mariadb-secure-installation command below.

sudo mariadb-secure-installation

You’ll be asked about the MariaDB server configuration below:

  • Switch local authentication to unix_socket? Input n.
  • Set up the new MariaDB root password. Input y to confirm, then type the new password for your MariaDB server deployment.
  • Remove anonymous user? Input y to confirm.
  • Remove the default database test from the deployment?. Input y to confirm.
  • Disallow MariaDB root login from remote connections? Input y to confirm.
  • Reload table privileges and apply the changes? Input y and press ENTER.

Now run the mariadb client command below to log in to the MariaDB server. Input your root password when prompted.

sudo mariadb -u root -p

Next, run the following queries to create a new database cellsdb, a user cells, and the password p4ssword. Make sure to change the details below with your information.

CREATE DATABASE cellsdb;

CREATE USER cells@localhost IDENTIFIED BY ‘cellsp4ssword’;

GRANT ALL PRIVILEGES ON cellsdb.* TO cells@localhost;

FLUSH PRIVILEGES;

<img alt="create database" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/6-create-db-user.png6697860ead7d8.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="260" loading="lazy" src="data:image/svg xml,” width=”750″>

Now run the query below to ensure that user cells@localhost can access the database cellsdb.

SHOW GRANTS FOR cells@localhost;

You should see similar output below:

<img alt="check user" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/7-check-user.png6697860ed71c6.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="269" loading="lazy" src="data:image/svg xml,” width=”750″>

Type quit to exit from the MariaDB server.

Installing Pydio Cells

In this section, you’ll create a new pydio user, set up environment variables, and then download and install Pydio Cells.

Add a new user pydio with the following command:

sudo useradd -m -s /bin/bash pydio

Then, run the command below to create a new directory /opt/pydio/bin and /var/cells, and change the ownership to the pydio user.

sudo mkdir -p /opt/pydio/bin /var/cells

sudo chown -R pydio: /opt/pydio/bin /var/cells

Now run the following command to create the env file /etc/profile.d/cells-env.sh and make it an executable. This file will be executed when the user logs in.

sudo tee -a /etc/profile.d/cells-env.sh << EOF

export CELLS_WORKING_DIR=/var/cells

export CELLS_BIND=127.0.0.1:8080

export CELLS_EXTERNAL=https://cells.howtoforge.local

EOF

sudo chmod 0755 /etc/profile.d/cells-env.sh

Next, log in as user pydio and check environment variables $CELLS_WORKING_DIR, $CELLS_BIND, and $CELLS_EXTERNAL. Ensure each pointed to the correct value as in the file /etc/profile.d/cells-env.sh.

su – pydio

echo $CELLS_WORKING_DIR

echo $CELLS_BIND

echo $CELLS_EXTERNAL

<img alt="check env" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/15-check-env.png6697860f062e3.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="248" loading="lazy" src="data:image/svg xml,” width=”515″>

Now run the command below to download the Pydio binary file to /opt/pydio/bin/cells.

export distribId=cells

wget -O /opt/pydio/bin/cells https://download.pydio.com/latest/

Make the /opt/pydio/bin/cells file executable and exit from the current pydio user.

chmod a x /opt/pydio/bin/cells exit

After that, run the setcap command below to allow Pydio to use privileges ports (0-1024) and create a symlink to the /usr/local/bin/cells.

sudo setcap ‘cap_net_bind_service= ep’ /opt/pydio/bin/cells

sudo ln -s /opt/pydio/bin/cells /usr/local/bin/cells

Log in as a pydio user again and run the cells command below to check the Pydio Cells version.

su – pydio

cells version

As you can see below the Pydio Cells 4.4.3 is installed.

<img alt="check pydio version" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/8-check-pydio.png6697860f1fd9f.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="250" loading="lazy" src="data:image/svg xml,” width=”598″>

Configuring Pydio Cells

Now that you’ve downloaded Pydio Cells, you’ll configure and integrate it with the MariaDB database server and create an admin user for Pydio Cells installation. Those can be done through the cells command line.

Run the cells command below to install and configure Pydio Cells installation.

cells configure –cli

  • Select TCP for the database connection and type your MariaDB database, user, and password.
  • Input N for the MongoDB support. In this case, you’ll build and install single Pydio Cells.
  • Press ENTER to use the default storage configuration.
  • Input a new admin user, email address, and password for your Pydio Cells installation.

<img alt="setup pydio" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/9-setup-pydio.png6697860f74bb0.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="425" loading="lazy" src="data:image/svg xml,” width=”750″>

After the installation is complete, you’ll see the message Installation finished.

<img alt="pydio cells installed" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/10-install-complete.png6697860f9dfdb.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="234" loading="lazy" src="data:image/svg xml,” width=”655″>

Running Pydio Cells as a systemd service

In this section, you’ll create and set up a systemd service file for Pydio Cells. With this, you can easily manage Pydio Cells with the systemctl command.

Create a new service file /etc/systemd/system/cells.service with nano editor.

sudo nano /etc/systemd/system/cells.service

Add the following configuration to the file and make sure to change the CELLS_EXTERNAL environment variable with your target domain name.

[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
Environment=CELLS_BIND=127.0.0.1:8080
Environment=CELLS_EXTERNAL=https://cells.howtoforge.local

[Install]
WantedBy=multi-user.target

Save the file and exit the editor.

Now run the systemctl command below to reload the systemd manager and apply your changes.

sudo systemctl daemon-reload

Start and enable the cells service with the command below. Then, check the cells status to ensure that the service is running.

sudo systemctl enable –now cells

sudo systemctl status cells

<img alt="cells as systemd service" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/11-service.png6697860fcce0f.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="298" loading="lazy" src="data:image/svg xml,” width=”750″>

Setting up Apache as a reverse proxy

After Pydio Cells runs as a systemd service, you’ll create a new Apache virtual host file as a reverse proxy for Pydio Cells. You’ll also need to enable Apache modules with the a2enmod command.

First, run the a2enmod command below to enable Apache modules. In this case, you’ll enable modules for SSL and reverse proxy.

sudo a2enmod rewrite ssl proxy proxy_http proxy_wstunnel http2 proxy_http2

<img alt="enable modules" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/12-enable-modules.png669786101a844.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="363" loading="lazy" src="data:image/svg xml,” width=”750″>

Now create a new virtual host file /etc/apache2/sites-available/cells.conf with the following nano command.

sudo nano /etc/apache2/sites-available/cells.conf

Insert the configuration below to set up Apache as a reverse proxy for Pydio Cells. Make sure to change the ServerName option with your target domain name.


    ServerName cells.howtoforge.local

    AllowEncodedSlashes On
    RewriteEngine On

    # be aware of this
    # Allow reverse proxy via self-signed certificates
    SSLProxyEngine On
    SSLProxyVerify none 
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ## The order of the directives matters.
    # If Cells is not running with https, consider using ws instead of wss
    ProxyPassMatch "https://www.howtoforge.com/ws/(.*)" wss://localhost:8080/ws/$1 nocanon

    ## This rewrite condition is required if using Cells-Sync
    # RewriteCond %{HTTP:Content-Type} =application/grpc [NC]
    # RewriteRule /(.*) h2://localhost:8080/$1 [P,L]

    ProxyPass "https://www.howtoforge.com/" "https://127.0.0.1:8080/" 
    ProxyPassReverse "https://www.howtoforge.com/" "https://127.0.0.1:8080/"

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


Save and exit the file when done.

Next, run the a2ensite command below to activate virtual host cells.conf and verify your Apache configuration. If you’ve proper Apache configuration, you’ll see an output Syntax is OK.

sudo a2ensite cells.conf

sudo apachectl configtest

Lastly, run the systemctl command below to restart the Apache web server and apply your changes.

sudo systemctl restart apache2

<img alt="setup apache" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/14-setup-vhost.png669786103de32.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="274" loading="lazy" src="data:image/svg xml,” width=”723″>

Securing Pydio Cells with HTTPS

Pydio Cells is accessible via HTTPS. So you must enable HTTPS on your Apache virtual host file. In this section, you’ll generate SSL/TLS certificates with certbot to secure Pydio Cells installation.

To secure Pydio Cells with HTTPS, run the certbot command below. make sure to change the domain name and email address below with your information.

sudo certbot –apache –agree-tos –redirect –hsts –staple-ocsp –email [email protected] -d cells.howtoforge.local

After the process is complete, your SSL/TLS certificates will be available in the /etc/letsencrypt/live/domain.com directory.

Now open your web browser and visit your domain name https://cells.howtoforge.local/. If your installation is successful, you’ll be prompted with the Pydio Cells login page.

Enter your admin user and password, and click ENTER.

<img alt="login" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/1-login.png669786108fa92.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="545" loading="lazy" src="data:image/svg xml,” width=”619″>

You’ll see the Pydio Cells dashboard like the following:

<img alt="dashboard" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/07/echo/2-dashboard.png66978610c311e.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="414" loading="lazy" src="data:image/svg xml,” width=”750″>

Conclusion

Congratulations! You’ve completed the installation of Pydio Cells on the Ubuntu 24.04 server. You have the Pydio Cells up and running with the MariaDB database server and Apache as a reverse proxy. Lastly, you’ve also secured Pydio Cells with HTTPS through Certbot and Letsencrypt.