Faire fonc­tion­ner Nextcloud sur un serveur NGINX consomme moins de res­sources système et offre plus de pos­si­bi­li­tés de per­son­na­li­sa­tion. L’ins­tal­la­tion nécessite un en­vi­ron­ne­ment système com­pa­tible ainsi qu’une con­fi­gu­ra­tion ap­pro­priée. Afin d’intégrer Nextcloud de manière trans­pa­rente dans l’en­vi­ron­ne­ment NGINX, quelques ajus­te­ments spé­ci­fiques sont né­ces­saires.

Nextcloud et NGINX : un duo per­for­mant pour votre Cloud

NGINX est un serveur Web open source, qui peut également être utilisé comme serveur reverse proxy, ré­par­ti­teur de charge (load balancer) et cache HTTP. L’ap­pli­ca­tion a été en grande partie pro­gram­mée par le dé­ve­lop­peur de logiciels russe Igor Sysoev et est publiée sous licence BSD, typique des systèmes Unix.

NGINX est conçu pour gérer ef­fi­ca­ce­ment un grand nombre de con­nexions si­mul­ta­nées. Con­trai­re­ment aux serveurs Web tra­di­tion­nels qui créent un thread ou un processus distinct pour chaque requête, NGINX repose sur une ar­chi­tec­ture évé­ne­men­tielle et non bloquante. Il fonc­tionne avec un processus maître, chargé de la con­fi­gu­ra­tion et du contrôle global, et plusieurs processus de travail, res­pon­sables du trai­te­ment des requêtes client.

La com­bi­nai­son de Nextcloud et NGINX présente divers avantages, par­ti­cu­liè­re­ment per­ti­nents pour les en­vi­ron­ne­ments serveurs per­for­mants. Parmi ceux-ci, on peut citer :

  • Une uti­li­sa­tion efficace des res­sources : NGINX est capable de gérer de nom­breuses con­nexions si­mul­ta­nées tout en éco­no­mi­sant les res­sources.
  • Une grande sca­la­bi­lité : NGINX permet une ré­par­ti­tion flexible de la charge et peut être fa­ci­le­ment étendu par l’ajout de serveurs sup­plé­men­taires.
  • Des pos­si­bi­li­tés de per­son­na­li­sa­tion : grâce à sa structure modulaire, NGINX peut être adapté à une grande variété d’ap­pli­ca­tions.
  • Des per­for­mances stables sous charge : même en cas de forte uti­li­sa­tion du serveur, NGINX reste fiable et garantit une dis­po­ni­bi­lité constante.
Note

Nextcloud ne prend of­fi­ciel­le­ment en charge qu’Apache 2.x comme serveur Web, et ne fournit donc pas de prise en charge of­fi­cielle pour NGINX. Pour cette raison, l’uti­li­sa­tion de Nextcloud avec NGINX est prin­ci­pa­le­ment re­com­man­dée aux uti­li­sa­teurs ex­pé­ri­men­tés dans la con­fi­gu­ra­tion de serveurs Web.

Quelles sont les con­di­tions requises pour utiliser Nextcloud via NGINX ?

Le prérequis principal à l’uti­li­sa­tion de Nextcloud sous NGINX est un serveur sur lequel Ubuntu, Debian ou un autre système com­pa­tible a déjà été installé. Le serveur doit disposer d’au moins 4 Go de RAM et de deux cœurs de pro­ces­seur. Pour les instances Nextcloud plus im­por­tantes intégrant de nom­breuses ap­pli­ca­tions Nextcloud, il est re­com­mandé 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 sau­ve­gardes.

Pour l’ins­tal­la­tion, vous avez besoin d’une base de données com­pa­tible telle que MySQL ou MariaDB, ainsi que du langage de script PHP (version 8.1 au minimum, version 8.3 re­com­man­dée). La base de données stocke les uti­li­sa­teurs ainsi que les plugins, leurs données et les mé­ta­don­nées des fichiers. PHP est essentiel pour le trai­te­ment et l’exécution des fonctions Nextcloud. Pour pouvoir installer Nextcloud, un compte uti­li­sa­teur disposant des droits ad­mi­nis­tra­teur est requis.

Managed Nextcloud
Le stockage Cloud qui vous donne le contrôle
  • Protégez ef­fi­ca­ce­ment vos données grâce à une sécurité de pointe
  • Gagnez du temps sur les mises à jour et la main­te­nance
  • Ajoutez fa­ci­le­ment des ap­pli­ca­tions et des outils col­la­bo­ra­tifs

Nextcloud avec NGINX comme serveur Web : ins­tal­la­tion et con­fi­gu­ra­tion

Avant d’installer Nextcloud, nous avons déjà effectué les pré­pa­ra­tifs 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é­pen­dances requises ont été préa­la­ble­ment installés. Cela inclut NGINX comme serveur Web, MySQL comme base de données et PHP version 8.3 avec toutes les ex­ten­sions né­ces­saires.

Nous avons installé Certbot, un outil en ligne de commande per­met­tant de générer et con­fi­gu­rer au­to­ma­ti­que­ment un cer­ti­fi­cat 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.

Conseil

Dans nos articles com­plé­men­taires, apprenez à installer Nextcloud sous Ubuntu 22.04 ou à con­fi­gu­rer Nextcloud sur Ku­ber­netes. Vous pouvez également suivre notre guide détaillé pour mettre en œuvre Nextcloud sous Debian 12.

Té­lé­char­ger et dé­com­pres­ser Nextcloud

Commencez par créer un dossier nommé « nextcloud » dans le ré­per­toire uti­li­sa­teur de votre serveur, dans lequel vous té­lé­char­ge­rez les fichiers d’ins­tal­la­tion de Nextcloud. Vous pouvez le faire ma­nuel­le­ment 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.zip
bash
Note

Si 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 dis­po­nible sur le changelog officiel.

Dé­com­pres­sez le fichier, déplacez le dossier vers /var/www (qui sert de ré­per­toire racine) et dé­fi­nis­sez les au­to­ri­sa­tions 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/nextcloud
bash

Con­fi­gu­rer la base de données

Pour con­fi­gu­rer 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 con­fi­gu­rer. Appuyez sur « y » pour confirmer le mot de passe, puis à nouveau pour supprimer les uti­li­sa­teurs anonymes, interdire les con­nexions à distance, supprimer la base de données de test et recharger les tables de pri­vi­lèges.

Procédez ensuite de la manière suivante :

  1. Connectez-vous à la base de données en tant qu’uti­li­sa­teur root à l’aide de la commande sudo mysql -u root -p.
  2. Ini­tia­li­sez la création de la base de données Nextcloud avec create database nextcloud;.
  3. Créez le compte uti­li­sa­teur Nextcloud avec la commande create user 'nextcloud'@'localhost' identified by <mot_de_passe>;.
  4. Accordez les au­to­ri­sa­tions de base de données au compte créé avec grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Pour finir, ac­tua­li­sez les au­to­ri­sa­tions avec flush privileges; et quittez la console de la base de données avec la commande exit.

Une fois la base de données cor­rec­te­ment con­fi­gu­rée, les données d’accès (DB_NAME, DB_USER, DB_PASSWORD) doivent être saisies dans le fichier de con­fi­gu­ra­tion Nextcloud. Pour ce faire, ouvrez le fichier /var/www/nextcloud/config/config.php et ajoutez les entrées cor­res­pon­dantes :

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<mot_de_passe>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt
Serveurs virtuels (VPS)
VPS éco­no­miques sur serveurs Dell En­ter­prise
  • 1 Gbit/s de bande passante et trafic illimité
  • Dis­po­ni­bi­lité de 99,99 % et cer­ti­fi­ca­tion ISO
  • As­sis­tance 24/7 primée pour sa qualité et con­seil­ler personnel

Dé­sac­ti­ver la con­fi­gu­ra­tion standard de NGINX

Avant d’intégrer Nextcloud dans NGINX, assurez-vous qu’aucun autre fichier de con­fi­gu­ra­tion n’écrase l’ins­tal­la­tion de Nextcloud. Il peut y avoir une con­fi­gu­ra­tion default dans /etc/nginx/sites-enabled/ qui empêche Nextcloud de se charger cor­rec­te­ment. Supprimez-la avec la commande suivante :

sudo rm /etc/nginx/sites-enabled/default
bash

Vérifiez ensuite que la nouvelle con­fi­gu­ra­tion pour Nextcloud est active à l’aide de la commande suivante :

sudo ln -s /etc/nginx/sites-available/exemplededomaine.fr /etc/nginx/sites-enabled/
bash

Con­fi­gu­rer le serveur NGINX

Pour con­fi­gu­rer NGINX en tant que serveur Web, un domaine doit déjà être configuré et associé à l’adresse IP du serveur. La con­fi­gu­ra­tion DNS doit également être correcte. Créez le fichier de con­fi­gu­ra­tion NGINX dans le ré­per­toire sites-available à l’aide de la commande Linux sudo sudo touch /etc/nginx/sites-available/exemple.fr (nous avons utilisé l’URL exemple.fr).

Ouvrez le fichier de con­fi­gu­ra­tion 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 » dis­po­nible sur le site Web Nextcloud sur la con­fi­gu­ra­tion NGINX dans /etc/nginx/sites-available/exemple.fr.

Étant donné que le cer­ti­fi­cat HTTPS est ajouté avec Certbot, vous devez supprimer toutes les lignes relatives à SSL du fichier de con­fi­gu­ra­tion NGINX. Certbot se charge de la con­fi­gu­ra­tion au­to­ma­tique, ce qui évite une con­fi­gu­ra­tion manuelle détaillée.

Con­fi­gu­rer le cer­ti­fi­cat SSL avec Certbot

Pour que Nextcloud fonc­tionne via une connexion HTTPS sécurisée, il est né­ces­saire de con­fi­gu­rer un cer­ti­fi­cat SSL, dans le cas présent de Let’s Encrypt. Commencez par con­fi­gu­rer le pare-feu afin d’autoriser les con­nexions HTTPS et SSH. Pour ce faire, utilisez la commande sudo suivante :

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

Activez ensuite le pare-feu avec sudo ufw enable et vérifiez avec sudo ufw status si les con­nexions sont bien au­to­ri­sées. Vous pouvez ensuite créer le cer­ti­fi­cat SSL avec Certbot :

sudo certbot --nginx -d exemple.fr
bash

Saisissez votre adresse email pour les re­nou­vel­le­ments de cer­ti­fi­cat, acceptez les con­di­tions d’uti­li­sa­tion, puis sé­lec­tion­nez l’option 2 pour rediriger au­to­ma­ti­que­ment toutes les requêtes HTTP vers HTTPS. Vous trouverez les fichiers de cer­ti­fi­cat dans le ré­per­toire /etc/letsencrypt/live/exemple.fr/. Le fichier fullchain.pem contient le cer­ti­fi­cat SSL, le fichier privkey.pem contient la clé privée. Ces deux fichiers doivent être ré­fé­ren­cés dans le fichier de con­fi­gu­ra­tion NGINX :

ssl_certificate /etc/letsencrypt/live/exemple.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.fr/privkey.pem;
txt

Comme Certbot a modifié le fichier de con­fi­gu­ra­tion, il est né­ces­saire de rajouter l’attribut ssl entre 443 et http2. Le bloc cor­res­pon­dant se présente alors de la manière suivante :

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name exemple.fr;
txt

Re­dé­mar­rer les services et accéder à Nextcloud

Pour que les mo­di­fi­ca­tions prennent effet, il est né­ces­saire de recharger les services PHP-FPM et NGINX :

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

Ensuite, accédez à votre domaine via le na­vi­ga­teur (dans notre cas, exemple.fr), où la page d’accueil de Nextcloud s’affichera si tout est cor­rec­te­ment configuré.

Note

Si Nextcloud ne fonc­tionne pas, cela peut être dû au fait que votre domaine n’a pas encore été en­re­gis­tré en tant que Nextcloud Trusted Domain dans le fichier config.php. Réalisez cette étape afin de résoudre le problème.

Aller au menu principal