Install Nextcloud 17 on Debian 10

This tutorial will demonstrate how to install Nextcloud 17 on a Debian 10 server. Watch the video version here.

Prerequisites: You will need a server running Debian 10 (visit or if you don't have one.) You will also need a domain name (visit if you don't have one.)

Example parameters: In this example, the domain name for our Nextcloud server will be "". All passwords will be set to "P@ssw0rd".

Step 1: Make sure your server is entirely up-to-date:

sudo apt update
sudo apt full-upgrade

Step 2: Install Apache, PHP, and MariaDB:

apt install apache2 mariadb-server libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip

Step 3: Test your domain name to make sure Apache is installed properly.

Step 4: Install Certbot:

apt install certbot python-certbot-apache

Step 5: Create a directory for the Nextcloud application files:

mkdir /var/www/nextcloud

Step 6: Copy the default virtual host file and configure a virtual host for Nextcloud:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/nextcloud.conf
nano /etc/apache2/sites-available/nextcloud.conf

Uncomment and set the following parameters:

DocumentRoot /var/www/nextcloud

Step 7: Enable the virtual host and restart Apache:

a2ensite nextcloud
systemctl reload apache2

Step 8: Run Certbot to enable SSL/TLS using Let's Encrypt:

certbot --apache

Step 9: Copy the .tar.bz2 download link from the Nextcloud download page and download the archive to your server:

cd /var/www/nextcloud
wget https://paste.the/

Step 10: Extract the Nextcloud application files from the archive, delete the archive, and move the Nextcloud application files into the current directory:

tar xvf
mv ./nextcloud/* .
mv ./nextcloud/.* .
rmdir nextcloud

Step 11: Make the web server the owner of the Nextcloud application files:

chown -R www-data:www-data /var/www/nextcloud

Step 12: Create a Nextcloud data directory and make the web server the owner of that data directory:

mkdir /ncdata
chown www-data:www-data /ncdata

Step 13: Secure your MariaDB server, enter MariaDB, create a database and user for Nextcloud, and give the MariaDB user permissions for the database:

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON nextcloud . * TO 'nextcloud'@'localhost';

Step 14: Fill in the details on the Nextcloud setup page and click the "Finish setup" button.

Step 15: Access the PHP configuration file for Apache:

nano /etc/php/7.3/apache2/php.ini

Set the memory limit to 512 MB:


Step 16: Access the Apache virtual host configuration file:

nano /etc/apache2/sites-available/nextcloud-le-ssl.conf

Add the HSTS header configuration and allow Nextcloud's .htaccess file to overwrite the default server settings:

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"

<Directory /var/www/nextcloud/>
AllowOverride All

Step 17: Enable the headers module, make sure the redirect module is enabled, and restart Apache:

a2enmod headers
a2enmod rewrite
systemctl restart apache2

Step 18: Install APCu for memory caching:

apt install php-apcu

Step 19: Configure Nextcloud to use APCu for memcaching:

nano /var/www/nextcloud/config/config.php

Add this line:

'memcache.local' => '\OC\Memcache\APCu',

Step 20: Restart Apache again:

systemctl restart apache2

Your Nextcloud server should now be fully functional.

There are no pages beneath this page

Expand: Discussion Discussion (0 posts)