Configuration de Nextcloud
Télécharger le logiciel serveur
Rendez vous donc sur le site officiel de Nextcloud dans la section Get Nextcloud et cliquez sur le bouton Download for server pour télécharger la dernière version disponible. Pensez bien à prendre la version Archive pour obtenir une archive d'installation complète.
Une fois l'archive récupérée, téléversez là sur votre serveur en utilisant votre logiciel et votre protocole favori (je recommande l'usage du SFTP pour des raisons pratiques).
Mettre en place le site
Décompresser l'archive
Après avoir téléversé l'archive de Nextcloud sur votre serveur, déplacez la dans le dossier qui servira de racine pour votre serveur de stockage (c'est-à-dire le dossier que Nginx va utiliser comme dossier principal). Dans notre cas, nous avons choisi /srv/www/
, vu que /srv
est couramment utilisé pour stocker des fichiers qui ne doivent pas être modifiés par le système sous UNIX :
sudo mv nextcloud-X.X.X.zip /srv/www
Note : Au cas où le dossier n'existe pas sur votre serveur, vous pouvez le créer à l'aide de ce couple (ici, nginx
est l'utilisateur par défaut de Nginx) :
sudo mkdir /srv/www && sudo chown -R www-data:www-data /srv/www
Attention : Pensez à remplacer les X de la commande par les bons numéros de version de votre archive Nextcloud !
Ensuite, on doit extraire l'archive pour installer le tout sur notre serveur dans un dossier dédié qui sera nommé nextcloud
et ajusté pour permettre au serveur Web d'accéder à l'application sans problèmes :
sudo unzip nextcloud-X.X.X.zip && sudo chown -R nginx:nginx nextcloud
Créer son certificat Let's Encrypt
Pour sécuriser les connexions des utilisateurs et utiliser HTTPS, nous allons générer un certificat SSL gratuit avec le client officiel fourni par Let's Encrypt. Ce dernier peut être installé directement dans notre CentOS à l'aide de la commande suivante : sudo apt install certbot python3-certbot-nginx
.
Après installation, je conseille de créer un fichier de configuration qui permet d'ajouter directement des options intéressantes sans devoir les spécifier à chaque fois. On peut indiquer notamment la taille de la clé RSA générée (4096 étant la valeur recommandée), l'adresse mail à utiliser ou encore la validation automatique des conditions d'utilisation. Il sera enregistré à l'adresse /etc/letsencrypt/cli.ini
et son contenu sera donc le suivant :
## Taille de la clé RSA pour le certificat
rsa-key-size = 4096
## Mail par défaut
email = votremail@example.com
## Accepter le règlement
agree-tos = true
## Activer le HSTS (validation longue durée)
hsts = true
## Activer le OCSP Stapling (protection de la connexion)
staple-ocsp = true
## Activer l'option Forcage de OCSP
must-staple = true
## On ne veut pas la newsletter EFF
no-eff-email = true
On génére enfin notre certificat avec la commande suivante :
sudo certbot certonly --nginx -c /etc/letsencrypt/cli.ini -d cloud.votrenom.org
Astuce : Pour renouveler votre certificat lorsqu'il arrive à expiration, il suffit de faire sudo certbot renew
après avoir arrêté Nginx pour que le processus se fasse automatiquement.
Configurer Nginx
La prochaine étape consiste alors à configurer Nginx pour créer notre site et lui indiquer où trouver le dossier de Nextcloud pour le faire fonctionner. Par défaut, Nginx est configuré pour récupérer ses paramètres dans le fichier /etc/nginx/nginx.conf
et dans tous les fichiers situés dans le dossier /etc/nginx/conf.d/
. Nous allons donc définir notre site en ajoutant un fichier de configuration dans ce dossier, ce qui nous évitera de devoir modifier le fichier principal à chaque fois que cela sera nécessaire.
Dans cet exemple, on va utiliser un sous-domaine nommé cloud pour simplifier la configuration et avoir une adresse facile à retenir pour nos utilisateurs.
Créez alors un fichier nommé nextcloud.conf
dans le dossier /etc/nginx/conf.d/
et ajoutez le contenu suivant :
## Ici, il s'agit de la méthode utilisée pour communiquer avec PHP
upstream php-handler {
server unix:/var/run/php/php7.3-fpm.sock;
}
## On redirige tout le contenu sur HTTPS
server {
listen 80;
listen [::]:80;
server_name cloud.votrenom.org;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.votrenom.org;
# Ici, on met le chemin de notre certificat Let's Encrypt
ssl_certificate /etc/letsencrypt/live/cloud.votrenom.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.votrenom.org/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/cloud.votrenom.org/fullchain.pem;
# Taille maximale des uploads dans Nginx (différent de PHP)
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Activer GZIP pour réduire les temps de chargement
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# En-têtes utilisées pour sécuriser notre connexion en HTTPS
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Mode OCSP pour Nginx
ssl_stapling on;
ssl_stapling_verify on;
resolver 80.67.169.12 1.1.1.1 valid=300s;
resolver_timeout 5s;
# Enlever l'en-tête X-Powered-By, qui peut être une faille potentielle
fastcgi_hide_header X-Powered-By;
# Chemin des fichiers de logs
access_log /var/log/nginx/nextcloud-access.log main;
error_log /var/log/nginx/nextcloud-error.log;
# Racine du serveur
root /srv/www/nextcloud;
#
index index.php index.html /index.php$request_uri;
# Politique par défaut pour le cache
expires 1m;
# Règles particulières pour les clients Microsoft DAV
location = / {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /remote.php/webdav/$is_args$args;
}
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# On redirige les connexions pour les services de synchronisation
location ^~ /.well-known {
rewrite ^/\.well-known/host-meta\.json /public.php?service=host-meta-json last;
rewrite ^/\.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/\.well-known/webfinger /public.php?service=webfinger last;
rewrite ^/\.well-known/nodeinfo /public.php?service=nodeinfo last;
location = /.well-known/carddav { return 301 /remote.php/dav/; }
location = /.well-known/caldav { return 301 /remote.php/dav/; }
try_files $uri $uri/ =404;
}
# Interdire l'accès aux dossiers de configuration et autres dossiers sensibles
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ici, on a toute la partie pour interpréter correctement les fichier .php
# Pas besoin de changer quoi que ce soit ici, vu que le bloc tout en haut se charge d'envoyer ça au bon endroit
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; # Pour éviter d'envoyer deux fois les en-têtes sécurisées
fastcgi_param front_controller_active true; # Pour avoir de belles URL
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ \.(?:css|js|svg|gif)$ {
try_files $uri /index.php$request_uri;
expires 6M;
access_log off;
}
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
expires 7d;
access_log off;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
}
}
Lancer la configuration
Avant toute chose, on lance les différents services restants et on active leur démarrage automatique : sudo systemctl enable php7.3-fpm nginx && sudo systemctl start nginx php7.3-fpm
.
On se rend ensuite à l'adresse de notre nouveau site (https://cloud.votrenom.org) à l'aide de son navigateur favori et, normalement, cette charmante page d'accueil s'affiche sans problèmes :
Nextcloud nous demande alors de renseigner les informations nécessaires pour se connecter au serveur de base de données et pour créer le premier compte utilisateur sur l'instance.
En fonction de votre choix précédent, sélectionnez le nom du moteur correspondant (MySQL ou PostgreSQL) et indiquez le nom de la base de données, son utilisateur et son mot de passe. On peut laisser localhost dans le champ Adresse, vu qu'on va utiliser le serveur installé directement sur notre machine. Indiquez aussi votre nom d'utilisateur et votre mot de passe avant de cliquer sur Terminer l'installation.
L'assistant lance alors la configuration de l'instance et va créer les bonnes tables pour permettre à Nextcloud de démarrer et d'enregistrer tout le nécessaire. Cela dure environ deux ou trois minutes en fonction de la puissance de votre machine. Une fois terminé, l'assistant recharge automatiquement la page et le site vous affiche une page de connnexion.
Indiquez alors le nom d'utilisateur et le mot de passe que vous avez rentrés et cliquez sur Se connecter. La page d'accueil de Nextcloud s'affiche alors et on va pouvoir accéder aux paramètres avancés avant de nous amuser avec le reste.
Note de l'auteur : à l'instar de la capture ci-dessus, il est possible de changer le logo et la couleur de l'interface pour arborer votre propre thème !
Quelques options en plus
Ajouter ou enlever des applications
Par défaut, l'assistant propose d'installer un pack comprenant plusieurs applications pour avoir, dès le lancement, un environnement correct pour travailler à plusieurs avec notamment une suite bureautique en ligne, un système de contacts ou encore un calendrier.
Dans mon cas, je préfère désactiver la case à cocher lors de l'installation et choisir moi-même les applications que je souhaite ajouter à mon instance, afin de garantir la stabilité du système et choisir avec soin des applications adaptées à mes besoins et aux besoins de mes utilisateurs.
Pour ajouter une application, connectez vous avec votre compte administrateur (celui créé lors de l'installation de Nextcloud) et cliquez sur votre avatar pour afficher le menu déroulant. Cliquez alors sur le panneau Applications pour ouvrir le gestionnaire d'applications.
La fenêtre suivante s'affiche alors dans votre navigateur :
Les différents sections se décomposent donc comme ceci :
- Applications actives vous montre les applications installées et activées sur votre instance
- Applications désactivées vous montre les applications installées, mais non activées
- Packs d'applications vous montre les packs d'applications, pour installer en un clic un environnement complet en fonction de ce que vous souhaitez faire
- Les catégories d'applications disponibles et classées en fonction de leur rôle
En cliquant sur le nom d'une application, une brève description, une capture d'écran et quelques liens vers la page du projet s'affichent pour vous expliquer et montrer son rôle.
Pour installer une application, il suffit de cliquer sur le bouton Télécharger et activer derrière le nom de l'application pour lancer son installation. Son icône s'affichera alors dans la barre du haut et elle sera immédiatement disponible pour tous les utilisateurs.
Pour installer un pack, il suffit de cliquer sur le bouton Tout activer pour installer les applis du pack correspondant. Elles s'activeront alors au fur et à mesure.
Pour chercher une application dans le magasin, cliquez sur l'icône de loupe en haut à droite et écrivez le nom de l'application dans la barre de recherche. Elle s'affichera automatiquement.
Changer le thème
Pour changer le thème, connectez vous avec votre compte administrateur (celui créé lors de l'installation de Nextcloud) et cliquez sur votre avatar pour afficher le menu déroulant. Cliquez alors sur le panneau Paramètres pour afficher l'ensemble des paramètres de l'installation.
Dans la section Administration sur la gauche, cliquez sur Personnaliser l'apparence pour afficher les paramètres de thème.
La fenêtre suivante s'affiche alors dans votre navigateur :
Ici, vous pouvez changer la couleur de l'interface dans la section Couleur, le slogan qui apparaît en bas de la page de connexion, le nom de l'instance, l'URL de la page d'accueil (https://cloud.automario.eu), le logo de l'instance (sa taille sera adaptée automatiquement) et l'image de la page de connexion.
Pour l'image de la page de connexion, j'utilise une photo que j'ai prise en Roumanie qui est sous licence CC-BY 4.0, mais je vous conseille l'excellente banque d'images Unsplash pour obtenir des images libres d'utilisation.