Nextcloud 21 (Cloud personnel)

Logo Nextcloud

Environnement

  • Conteneur LXC Proxmox
  • Ubuntu 20.04

Installation

Installer le dépôt pour PHP 7.4 :

add-apt-repository -y ppa:ondrej/php
apt update

Installer Apache, PHP et MariaDB :

apt install -y apache2 mariadb-server libapache2-mod-php7.4 php7.4 php7.4-bcmath php7.4-curl php7.4-gd php7.4-gmp php7.4-imagick php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip php-imagick imagemagick ffmpeg

Activer les modules Apache Rewrite et Headers :

a2enmod actions rewrite headers env dir mime

Redémarrer Apache :

systemctl restart apache2

Configuration

Sécuriser l'installation de MariaDB :

mysql_secure_installation

Se connecter à MariaDB et modifier le mode de connexion pour passer du compte root système au compte root MariaDB :

mysql -u root
USE mysql;
UPDATE user SET plugin='' WHERE User='root';
FLUSH PRIVILEGES;
exit;

Se connecter à MariaDB et créer la base de données pour Nextcloud :

mysql -u root -p
CREATE DATABASE nextcloud_db;
CREATE USER 'nextcloud-admin'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud-admin'@'localhost';
FLUSH PRIVILEGES;
exit;

Redémarrer MariaDB :

systemctl restart mysql

Autoriser le téléversement d'un fichier de 128 Mio avec PHP :

cp -p /etc/php/7.4/apache2/php.ini /etc/php/7.4/apache2/php.ini.bak
cp -p /etc/php/7.4/cli/php.ini /etc/php/7.4/cli/php.ini.bak
sed -i s'/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/7.4/apache2/php.ini
sed -i s'/post_max_size = 8M/post_max_size = 128M/' /etc/php/7.4/apache2/php.ini
sed -i s'/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/7.4/cli/php.ini
sed -i s'/post_max_size = 8M/post_max_size = 128M/' /etc/php/7.4/cli/php.ini

Activer le Optimizer Plus Cache dans PHP :

sed -i s'/;opcache.enable=1/opcache.enable=1/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.enable_cli=0/opcache.enable_cli=1/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.memory_consumption=128/opcache.memory_consumption=128/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.revalidate_freq=2/opcache.revalidate_freq=1/' /etc/php/7.4/apache2/php.ini
sed -i s'/;opcache.save_comments=1/opcache.save_comments=1/' /etc/php/7.4/apache2/php.ini

Sauvegarder le virtualhost par défaut:

mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak

Éditer le virtualhost par défaut et le modifier de la manière suivante (/!\ à adapter à son besoin) :

nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>  
    ServerName nextcloud.domaine.lan
    ServerAdmin admin@domaine.lan
    DocumentRoot /var/www/nextcloud/
    AllowEncodedSlashes NoDecode

    <Directory /var/www/nextcloud/>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog  /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost> 

Éditer le fichier /etc/apache2/apache2.conf et ajouter la ligne suivante à la fin :

ServerName nextcloud.domaine.lan

Redémarrer Apache :

systemctl restart apache2

Se placer dans "/var/www/" et télécharger Nextcloud :

cd /var/www/html
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.0.zip

Décompresser l'archive, la supprimer et attribuer la propriété du dossier à l'utilisateur Apache (www-data) :

unzip nextcloud-21.0.0.zip
rm /var/www/html/nextcloud-21.0.0.zip
chown -R www-data:www-data /var/www/html/nextcloud

Redémarrer Apache :

systemctl restart apache2

Dans un navigateur Web, se connecter à l'adresse du serveur et finir l'installation.

Installer le serveur de cache Redis :

apt install redis-server php-redis

Configurer le serveur REDIS pour qu'il se lance sur un socket UNIX :

cp -p /etc/redis/redis.conf /etc/redis/redis.conf.bak
nano /etc/redis/redis.conf
port 0
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
requirepass Sûp€rMeGaP@ssw0rdHyperAleatoireZ

Ajouter l'utilisateur "www-data" au group "redis" :

usermod -a -G redis www-data

Ajouter les lignes suivantes à la fin du fichier "/var/www/html/nextcloud/config/config.php" :

cp -p /var/www/html/nextcloud/config/config.php /var/www/html/nextcloud/config/config.php.bak
nano /var/www/html/nextcloud/config/config.php
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'redis' => array (
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
    'password' => 'Sûp€rMeGaP@ssw0rdHyperAleatoireZ',
    'timeout' => 0.0,
    'dbindex' => 0,
  ),
  'enable_previews' => true,
  'enabledPreviewProviders' =>
  array (
    0 => 'OC\\Preview\\Movie',
    1 => 'OC\\Preview\\PNG',
    2 => 'OC\\Preview\\JPEG',
    3 => 'OC\\Preview\\GIF',
    4 => 'OC\\Preview\\BMP',
    5 => 'OC\\Preview\\XBitmap',
    6 => 'OC\\Preview\\MP3',
    7 => 'OC\\Preview\\MP4',
    8 => 'OC\\Preview\\TXT',
    9 => 'OC\\Preview\\MarkDown',
    10 => 'OC\\Preview\\PDF',
  ),

Activer et démarrer le serveur REDIS :

systemctl enable redis-server
systemctl start redis-server

Redémarrer le serveur :

systemctl reboot

Vérifier que le serveur Redis fonctionne :

redis-cli -s -a Sûp€rMeGaP@ssw0rdHyperAleatoireZ /var/run/redis/redis-server.sock ping
PONG

Sources

https://docs.nextcloud.com/server/15/admin_manual/installation/source_installation.html