Nextcloud
Contents
Installation
Fetch the latest version of the software package.
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.2.zip
Create an installation directory that can be owned by the web server's user (typically www-data).
mkdir /var/www/nextcloud unzip nextcloud-18.0.2.zip -d /var/www/nextcloud chown www-data:www-data /var/www/nextcloud chmod 755 /var/www/nextcloud
Also, create a data directory.
mkdir /var/nextcloud chown www-data:www-data /var/nextcloud chmod 755 /var/nextcloud
Web Server
If the site is encrypted, additional settings must be applied.
location ~ \.php(?:$|/) { # ... fastcgi_param modHeadersAvailable true; # ... }
PHP
There are several steps beyond a standard FastCGI configuration.
In /etc/php/php-fpm.d/www.conf, uncomment env[PATH] OR set clear_env = no.
Enable the opcache module and tune it. The defaults are typically enough.
opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
PHP-FPM must be explicitly allowed to access the key program and data directories. With systemd, this would be done as systemctl edit php-fpm.service.
[Service] ReadWritePaths = /usr/share/webapps/nextcloud/apps ReadWritePaths = /usr/share/webapps/nextcloud/data # Path to the data directory ReadWritePaths = /var/www/nextcloud
Back-end
Setup the MariaDB back-end to use actual UTF-8 encoding.
mysql -u root -p mysql> CREATE DATABASE nextcloud DEFAULT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password'; mysql> FLUSH PRIVILEGES; mysql> \q