Aujourd’hui nous allons voir comment installer et configurer Nextcloud sur Debian et Raspberry Pi. Ce tuto est valable pour Debian 10, Debian 11, Raspberry Pi 3 et 4.
On commence par mettre le système à jour :
sudo apt update && sudo apt dist-upgrade -y
Installation de PHP 8.2
On ajoute le repository pour avoir la version 8.2 de PHP
Note : Sur Debian 12 le package PHP est déjà à la version 8.2, vous pouvez donc passer à l’installation directement
sudo apt install apt-transport-https lsb-release ca-certificates curl wget -y sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' sudo apt update
On installe maintenant PHP 8.2 et tous les modules nécessaires
sudo apt install php8.2-{common,fpm,mysql,curl,bz2,intl,imap,bcmath,gmp,apcu,memcached,redis,xml,mbstring,gd,zip,imagick}
Une fois installés, nous allons effectuer quelques changements dans la configuration de PHP. Pour commencer, nous allons activer les variables d’environnement dans php fpm.
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Cherchez la ligne suivante, et retirer le point-virgule ;
env[PATH] = /usr/local/bin:/usr/bin:/bin
On active le module APCU que nous avons installé
sudo nano /etc/php/8.2/mods-available/apcu.ini
On ajoute
apc.enable_cli=1
Nous allons ensuite augmenter la limite de mémoire de PHP pour qu’elle soit de 512MO ou plus suivant votre configuration. Ici, je vais mettre la limite à 1024M.
sudo nano /etc/php/8.2/fpm/php.ini
Chercher la ligne memory_limit et modifiez la
memory_limit = 1024M
On en profite pour augmenter la taille maximum des uploads, 10G correspond à 10 GO
upload_max_filesize = 10G
Une fois les changements effectués, on redémarre PHP-FPM
sudo systemctl restart php8.2-fpm
Installation de Image Magick
Nextcloud utilise Image Magick, nous allons dans l’installer. Si vous vous demandez ce que c’est
ImageMagick est un logiciel libre, comprenant une bibliothèque, ainsi qu’un ensemble d’utilitaires en ligne de commande, permettant de créer, de convertir, de modifier et d’afficher des images dans un très grand nombre de format
Wikipedia
sudo apt install imagemagick
Installation de Nginx
On installe ensuite un serveur web, le tuto se fera avec Nginx mais il est tout à fait possible d’utiliser Apache. Pour plus d’explication concernant les serveurs webs, rendez-vous ici pour Apache et ici pour Nginx.
sudo apt install nginx -y
On crée un virtual host pour notre nextcloud
sudo nano /etc/nginx/sites-available/nextcloud
On ajoute cette configuration dans le fichier :
server { listen 80; listen [::]:80; server_name _; root /var/www/nextcloud; index index.php index.html; location /nextcloud { client_max_body_size 10G; client_body_buffer_size 400M; location = /nextcloud { if ( $http_user_agent ~ ^DavClnt ) { return 302 /nextcloud/remote.php/webdav/$is_args$args; } } } location ^~ /.well-known { # The rules in this block are an adaptation of the rules # in the Nextcloud `.htaccess` that concern `/.well-known`. location = /.well-known/carddav { return 301 /nextcloud/remote.php/dav/; } location = /.well-known/caldav { return 301 /nextcloud/remote.php/dav/; } location /.well-known/acme-challenge { try_files $uri $uri/ =404; } location /.well-known/pki-validation { try_files $uri $uri/ =404; } # Let Nextcloud's API for `/.well-known` URIs handle all other # requests by passing them to the front-end controller. return 301 /nextcloud/index.php$request_uri; } rewrite ^/(.*.php)(/)(.*)$ /$1?file=/$3 last; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; } location ~ /\.(?!well-known).* { deny all; access_log off; log_not_found off; } }
On crée un lien symbolique pour activer le fichier
sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud
On redémarre Nginx
sudo systemctl restart nginx
Installation de MariaDB
Pour fonctionner, Nextcloud a besoin d’une base données. Nous allons donc installer MariaDB.
sudo apt install mariadb-server
On procède à l’installation sécurisée :
sudo mysql_secure_installation
Il vous est demandé d’entrer votre mot de passe root. Plusieurs questions vous seront posées, répondez-y comme sur l’image ci-dessous.
À noter qu’au lieu de répondre « non » quand on vous demande si vous voulez changer le mot de passe de root, vous pouvez répondre oui et le changer.
Nous pouvons maintenant passer à la création de l’utilisateur et de la base de données Nextcloud
sudo mariadb -u root -p
Pour créer la base de données et l’utilisateur :
Changez nextcloud_db pour changer le nom de la base de données et nextcloud_user pour changer le nom d’utilisateur MariaDB (cela n’affecte pas le nom de votre compte sur Nextcloud) et bien sûr changez password par le mot de passe que vous souhaitez mettre.
CREATE DATABASE nextcloud_db; GRANT ALL ON nextcloud_db.* TO 'nextcloud_user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT;
Téléchargement et installation de Nextcloud
On commence par aller dans le dossier tmp et on télécharge la dernière version de Nextcloud. Nous extrayons ensuite les fichiers.
cd /tmp wget https://download.nextcloud.com/server/releases/latest.zip sudo unzip latest.zip -d /var/www/ sudo chown -R www-data:www-data /var/www/nextcloud
Nous pouvons maintenant accéder à la page d’installation de Nextcloud
Félicitation, votre Nextcloud est prêt à l’emploi !
Installation de Redis
On installe Redis et on l’ajoute au groupe www-data
sudo apt install redis-server sudo usermod -a -G redis www-data
Il faut maintenant éditer le fichier config de Nextcloud pour lui indique d’utiliser Redis
sudo nano /var/www/nextcloud/config/config.php
Ajoutez les lignes suivantes :
'filelocking.enabled' => true, 'memcache.local' => '\\OC\Memcache\\Redis', 'memcache.locking' => '\\OC\Memcache\\Redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => 6379, ),
On redémarre Nginx et voilà, Nextcloud utilise maintenant Redis pour son cache !
sudo systemctl restart nginx
Il ne vous reste plus qu’à mettre en plus le HTTPS avec Certbot pour sécuriser la communication avec votre installation Nexcloud !