Installer Nextcloud sur Debian & Raspberry Pi 4 avec Nginx

Installer Nextcloud avec Nginx

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.

secure install mariadb

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

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 !

5/5 - (3 votes)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles de la même catégorie

gestion des utilisateurs sur linux

Gestion des utilisateurs sur Linux

La gestion des comptes utilisateurs est l’un des nombreux défis que doivent relever les administrateurs système Linux. Parmi les responsabilités d’un administrateur système figurent l’activation/désactivation

Lire plus »
Retour en haut