Install Nextcloud 15 on Ubuntu 18.04 with ISPConfig 3.1
How to install Nextcloud 15 with HSTS, PHP OPCache, APCu, Redis and Pretty URLs.
Furthermore, in this tutorial is explained how to install the apps
- Preview Generator
- Collabora Online.
PHP 7.0, 7.1 or 7.2 is required for Nextcloud 15. In this manual we choose PHP 7.2 according to our existing ISPConfig installation. Note that PHP 7.0 is end of life at 10 Jan 2019. EOL of PHP 7.2 is about end of year 2020.
Check installed PHP modules
php -m
Check loaded php.ini
sudo -u web1 php -i | grep php\.ini
Install packages
apt update && apt upgrade
apt -y install apache2 mariadb-server php-imagick php-smbclient redis-server php-redis php-apcu apt -y install libapache2-mod-php7.2 php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php7.2-xml php7.2-zip php7.2-gmp apt -y install ffmpeg libreoffice libreoffice-l10n-de libreoffice-help-de
Install Nextcloud
Create two virtual hosts including Lets Encrypt SSL and Fast-CGI with ISPConfig, one for your Nextcloud instance (e.g. nextcloud.domain.xx
) and one for the Collabora Online app, e.g. collabora.domain.xx
.
With ISPConfig, create a MySQL user and database.
Download Nextcloud: https://nextcloud.com/changelog/#latest15
Go to the webroot of your Nextcloud domain, delete everything within it, unzip the downloaded file and change to the correct ownership.
chown -R web1:client1 nextcloud
Move all files in the nextcloud folder to the parent directory and remove the empty folder after.
rmdir nextcloud
Open your Nextcloud domain in the browser and follow the installation instructions.
If you want to change the Nextcloud data path, add it to ISPConfig | Sites | Nextcloud-domain | Options | PHP open_basedir before running the Nextcloud web installer.
Done! Nextcloud 15 is now installed and ready to use.
Configure Nextcloud
As Nextcloud Admin, go to Settings | Overview and check the Security and setup warnings.
HSTS
Enable mod_headers
to activate HSTS:
a2enmod headers && service apache2 restart
Add the following line to ISPConfig | Sites | Nextcloud-domain | Options | Apache Directives
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
PHP OPcache
You should use the following settings in the php.ini
at the [opcache]
section
opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=1 opcache.save_comments=1
To achive it, add it to ISPConfig | Sites | Nextcloud-domain | Options | Custom php.ini settings
APCu
Add to config.php
'memcache.local' => '\OC\Memcache\APCu',
Redis
Add to config.php
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array ( 'host' => 'localhost', 'port' => 6379, ),
occ db:convert-filecache-bigint
Set your Nextcloud instance into maintenace mode by adding
'maintenance' => true,
to config.php
then go to the webroot of your Nextcloud domain and execute
sudo -u web1 php occ db:convert-filecache-bigint
Disable maintenance mode.
Voila!
All checks passed.
Cronjob
crontab -e -u web1
*/15 * * * * php -f /var/www/nextcloud.domain.xx/web/cron.php
Enable the cronjob in Nextcloud with Basic settings | Background jobs | Cron
Monitoring
Add to PHP open_basedir with ISPConfig at your Nextcloud domain:
/dev/urandom:/proc/meminfo
Pretty URLs
How to remove index.php
of your URLs.
Add the following line to config.php
'htaccess.RewriteBase' => '/',
Execute
occ maintenance:update:htaccess
Fail2ban
Create a filter and jail for Nextcloud.
Congratulations!
Nextcloud 15 is now fully configured – it’s time to install apps.
Before upgrading to Nextcloud 16 it’s recommended to upgrade the MySQL datasbase to 4-byte support.