Nextcloud avec NGINX : prérequis, installation et configuration
Faire fonctionner Nextcloud sur un serveur NGINX consomme moins de ressources système et offre plus de possibilités de personnalisation. L’installation nécessite un environnement système compatible ainsi qu’une configuration appropriée. Afin d’intégrer Nextcloud de manière transparente dans l’environnement NGINX, quelques ajustements spécifiques sont nécessaires.
Nextcloud et NGINX : un duo performant pour votre Cloud
NGINX est un serveur Web open source, qui peut également être utilisé comme serveur reverse proxy, répartiteur de charge (load balancer) et cache HTTP. L’application a été en grande partie programmée par le développeur de logiciels russe Igor Sysoev et est publiée sous licence BSD, typique des systèmes Unix.
NGINX est conçu pour gérer efficacement un grand nombre de connexions simultanées. Contrairement aux serveurs Web traditionnels qui créent un thread ou un processus distinct pour chaque requête, NGINX repose sur une architecture événementielle et non bloquante. Il fonctionne avec un processus maître, chargé de la configuration et du contrôle global, et plusieurs processus de travail, responsables du traitement des requêtes client.
La combinaison de Nextcloud et NGINX présente divers avantages, particulièrement pertinents pour les environnements serveurs performants. Parmi ceux-ci, on peut citer :
- Une utilisation efficace des ressources : NGINX est capable de gérer de nombreuses connexions simultanées tout en économisant les ressources.
- Une grande scalabilité : NGINX permet une répartition flexible de la charge et peut être facilement étendu par l’ajout de serveurs supplémentaires.
- Des possibilités de personnalisation : grâce à sa structure modulaire, NGINX peut être adapté à une grande variété d’applications.
- Des performances stables sous charge : même en cas de forte utilisation du serveur, NGINX reste fiable et garantit une disponibilité constante.
Nextcloud ne prend officiellement en charge qu’Apache 2.x comme serveur Web, et ne fournit donc pas de prise en charge officielle pour NGINX. Pour cette raison, l’utilisation de Nextcloud avec NGINX est principalement recommandée aux utilisateurs expérimentés dans la configuration de serveurs Web.
Quelles sont les conditions requises pour utiliser Nextcloud via NGINX ?
Le prérequis principal à l’utilisation de Nextcloud sous NGINX est un serveur sur lequel Ubuntu, Debian ou un autre système compatible a déjà été installé. Le serveur doit disposer d’au moins 4 Go de RAM et de deux cœurs de processeur. Pour les instances Nextcloud plus importantes intégrant de nombreuses applications Nextcloud, il est recommandé d’utiliser des systèmes avec plus de cœurs de CPU et de mémoire. Vous devez également disposer d’un espace de stockage suffisant pour vos données et vos sauvegardes.
Pour l’installation, vous avez besoin d’une base de données compatible telle que MySQL ou MariaDB, ainsi que du langage de script PHP (version 8.1 au minimum, version 8.3 recommandée). La base de données stocke les utilisateurs ainsi que les plugins, leurs données et les métadonnées des fichiers. PHP est essentiel pour le traitement et l’exécution des fonctions Nextcloud. Pour pouvoir installer Nextcloud, un compte utilisateur disposant des droits administrateur est requis.
- Protégez efficacement vos données grâce à une sécurité de pointe
- Gagnez du temps sur les mises à jour et la maintenance
- Ajoutez facilement des applications et des outils collaboratifs
Nextcloud avec NGINX comme serveur Web : installation et configuration
Avant d’installer Nextcloud, nous avons déjà effectué les préparatifs de base. Dans ce guide, nous partons du principe que vous disposez d’un serveur Ubuntu sur lequel le système et toutes les dépendances requises ont été préalablement installés. Cela inclut NGINX comme serveur Web, MySQL comme base de données et PHP version 8.3 avec toutes les extensions nécessaires.
Nous avons installé Certbot, un outil en ligne de commande permettant de générer et configurer automatiquement un certificat SSL gratuit via Let’s Encrypt. Ce guide suppose que vous disposez déjà d’un nom de domaine, afin d’accéder à Nextcloud via une URL lisible plutôt qu’une simple adresse IP.
Dans nos articles complémentaires, apprenez à installer Nextcloud sous Ubuntu 22.04 ou à configurer Nextcloud sur Kubernetes. Vous pouvez également suivre notre guide détaillé pour mettre en œuvre Nextcloud sous Debian 12.
Télécharger et décompresser Nextcloud
Commencez par créer un dossier nommé « nextcloud » dans le répertoire utilisateur de votre serveur, dans lequel vous téléchargerez les fichiers d’installation de Nextcloud. Vous pouvez le faire manuellement via le changelog Nextcloud, mais la commande curl suivante est encore plus simple :
mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zipbashSi vous installez une autre version de Nextcloud, veillez à indiquer l’URL correcte du fichier ZIP dans la commande. Pensez également à remplacer le numéro de version par la plus récente disponible sur le changelog officiel.
Décompressez le fichier, déplacez le dossier vers /var/www (qui sert de répertoire racine) et définissez les autorisations d’accès aux fichiers. Pour ce faire, utilisez les commandes suivantes :
unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloudbashConfigurer la base de données
Pour configurer la base de données MySQL, exécutez la commande sudo mysql_secure_installation. Entrez « y » pour définir votre mot de passe root (VALIDATE PASSWORD) et « 2 » pour un mot de passe fort (STRONG), que vous pourrez ensuite configurer. Appuyez sur « y » pour confirmer le mot de passe, puis à nouveau pour supprimer les utilisateurs anonymes, interdire les connexions à distance, supprimer la base de données de test et recharger les tables de privilèges.
Procédez ensuite de la manière suivante :
- Connectez-vous à la base de données en tant qu’utilisateur root à l’aide de la commande
sudo mysql -u root -p. - Initialisez la création de la base de données Nextcloud avec
create database nextcloud;. - Créez le compte utilisateur Nextcloud avec la commande
create user 'nextcloud'@'localhost' identified by <mot_de_passe>;. - Accordez les autorisations de base de données au compte créé avec
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';. - Pour finir, actualisez les autorisations avec
flush privileges;et quittez la console de la base de données avec la commandeexit.
Une fois la base de données correctement configurée, les données d’accès (DB_NAME, DB_USER, DB_PASSWORD) doivent être saisies dans le fichier de configuration Nextcloud. Pour ce faire, ouvrez le fichier /var/www/nextcloud/config/config.php et ajoutez les entrées correspondantes :
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<mot_de_passe>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,txt- Virtualisation complète avec accès root
- Trafic illimité et jusqu'à 1 Gbit/s de bande passante
- Stockage SSD NVMe rapide et édition Plesk Web Host
Désactiver la configuration standard de NGINX
Avant d’intégrer Nextcloud dans NGINX, assurez-vous qu’aucun autre fichier de configuration n’écrase l’installation de Nextcloud. Il peut y avoir une configuration default dans /etc/nginx/sites-enabled/ qui empêche Nextcloud de se charger correctement. Supprimez-la avec la commande suivante :
sudo rm /etc/nginx/sites-enabled/defaultbashVérifiez ensuite que la nouvelle configuration pour Nextcloud est active à l’aide de la commande suivante :
sudo ln -s /etc/nginx/sites-available/exemplededomaine.fr /etc/nginx/sites-enabled/bashConfigurer le serveur NGINX
Pour configurer NGINX en tant que serveur Web, un domaine doit déjà être configuré et associé à l’adresse IP du serveur. La configuration DNS doit également être correcte. Créez le fichier de configuration NGINX dans le répertoire sites-available à l’aide de la commande Linux sudosudo touch /etc/nginx/sites-available/exemple.fr(nous avons utilisé l’URLexemple.fr`).
Ouvrez le fichier de configuration dans un éditeur de texte tel que Vim avec sudo vim /etc/nginx/sites-available/exemple.fr et ajoutez le bloc de code de la section « Nextcloud in a subdir of the NGINX webroots » disponible sur le site Web Nextcloud sur la configuration NGINX dans /etc/nginx/sites-available/exemple.fr.
Étant donné que le certificat HTTPS est ajouté avec Certbot, vous devez supprimer toutes les lignes relatives à SSL du fichier de configuration NGINX. Certbot se charge de la configuration automatique, ce qui évite une configuration manuelle détaillée.
Configurer le certificat SSL avec Certbot
Pour que Nextcloud fonctionne via une connexion HTTPS sécurisée, il est nécessaire de configurer un certificat SSL, dans le cas présent de Let’s Encrypt. Commencez par configurer le pare-feu afin d’autoriser les connexions HTTPS et SSH. Pour ce faire, utilisez la commande sudo suivante :
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'bashActivez ensuite le pare-feu avec sudo ufw enable et vérifiez avec sudo ufw status si les connexions sont bien autorisées. Vous pouvez ensuite créer le certificat SSL avec Certbot :
sudo certbot --nginx -d exemple.frbashSaisissez votre adresse email pour les renouvellements de certificat, acceptez les conditions d’utilisation, puis sélectionnez l’option 2 pour rediriger automatiquement toutes les requêtes HTTP vers HTTPS. Vous trouverez les fichiers de certificat dans le répertoire /etc/letsencrypt/live/exemple.fr/. Le fichier fullchain.pem contient le certificat SSL, le fichier privkey.pem contient la clé privée. Ces deux fichiers doivent être référencés dans le fichier de configuration NGINX :
ssl_certificate /etc/letsencrypt/live/exemple.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.fr/privkey.pem;txtComme Certbot a modifié le fichier de configuration, il est nécessaire de rajouter l’attribut ssl entre 443 et http2. Le bloc correspondant se présente alors de la manière suivante :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name exemple.fr;txtRedémarrer les services et accéder à Nextcloud
Pour que les modifications prennent effet, il est nécessaire de recharger les services PHP-FPM et NGINX :
sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.servicebashEnsuite, accédez à votre domaine via le navigateur (dans notre cas, exemple.fr), où la page d’accueil de Nextcloud s’affichera si tout est correctement configuré.
Si Nextcloud ne fonctionne pas, cela peut être dû au fait que votre domaine n’a pas encore été enregistré en tant que Nextcloud Trusted Domain dans le fichier config.php. Réalisez cette étape afin de résoudre le problème.

