Date de la dernière modification de l’article:
Dans cet article, nous allons explorer la configuration de Nextcloud et comment nous pouvons rendre ce service Open-Source et Auto-Hébergé comme une solution complète d’espace de travail collaboratif.
Je couvrirai seulement l’installation sur un client Windows et seulement la configuration serveur sur une distribution Debian (12 Bookworm).
Section 1: Comment configurer la partie serveur de Nextcloud ?
A. Installation d’Apache, PHP & MariaDB
Pensez à rafraichir la liste de paquets disponibles et mettez les à jour sur votre serveur Debian avec la commande suivante :
#(En Root)
sudo apt update && apt upgrade -y
Installation de de toutes les dépendances nécéssaires à Apache 2, PHP8.2 & MariaDB ainsi que l’activation des modules essentiels Apache & PHP FPM:
#(En Root)
sudo apt-get -y install mariadb-server apache2 curl apache2-doc apache2-utils libapache2-mod-php8.2 php8.2 php8.2-common php8.2-gd php8.2-mysql php8.2-imap php8.2-cli libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php8.2-curl php8.2-intl php8.2-pspell php8.2-sqlite3 php8.2-tidy php8.2-xmlrpc php8.2-xsl php-imagick php8.2-zip php8.2-mbstring php8.2-soap php8.2-fpm php8.2-opcache php8.2-apcu
a2enmod suexec rewrite ssl include dav_fs dav auth_digest expires headers fastcgi actions proxy_fcgi
a2enconf php8.2-fpm -y
Une fois les dépendances installées et les modules activés, redémarrez votre service Apache & PHP:
#(En Root)
sudo systemctl enable apache2 && sudo systemctl start apache2
sudo systemctl enable mariadb && sudo systemctl start mariadb
B. Configuration de la base de données MariaDB :
Nous allons faire la première configuration de sécurité de la base de donnée avec la commande suivante :
su -
mysql_secure_installation
Ensuite, le mot de passe par défaut de l’utilisateur root est vide, tapez « Entrée », tapez deux fois « y » pour valider ce que l’on vous demande et definissez le nouveau mot de passe de l’utilisateur root pour accéder à la base de donnée MySQL :
Continuez à taper « y » a toutes les prochaines interactions nécéssitant un choix que vous émettra le terminal :
Nous allons pouvoir maintenant nous connecter en root à notre base de données MariaDB pour venir la configurer :
mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
C. Installation de Nextcloud :
Vous allez pouvoir récupérer l’archive de Nextcloud sur le site offciel et extraire l’archive avec les commandes suivantes :
cd /var/www/html/
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip -d /var/www/html/
sudo rm index.html latest.zip
Les fichiers NextCloud doivent être attribués à l’utilisateur et au groupe www-data
(l’utilisateur par défaut sous lequel Apache s’exécute) afin que le serveur web puisse lire et écrire les fichiers nécessaires. L’option -R
permet d’appliquer ces modifications de manière récursive à tous les fichiers et sous-répertoires.
sudo chown -R www-data:www-data /var/www/html/nextcloud
D. Configuration du VirtualHost
Passons à la configuration du fichier vhost de Apache :
sudo nano /etc/apache2/sites-available/nextcloud.steve-infra.local.conf
Dans ce fichier de configuration, vous allez pouvoir mettre les paramètres de votre VirtualHost Apache :
<VirtualHost *:80>
ServerName nextcloud.steve-infra.local
DocumentRoot /var/www/html/nextcloud
<Directory /var/www/html/nextcloud>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/nextcloud.steve-infra.local.error_log
CustomLog /var/log/apache2/nextcloud.steve-infra.local.access_log common
</VirtualHost>
Ensuite, activez le VirtualHost que vous venez de configurer avec ces commandes :
sudo a2ensite nextcloud.steve-infra.local
sudo systemctl reload apache2
sudo a2enmod rewrite
sudo systemctl restart apache2
D. Testons & configurons l’accès a Nextcloud grâce au VirtualHost que nous avons configuré précédemment :
Veuillez vous référer à l’article suivant pour savoir comment configurer un sous-domaine dans votre AD pour résoudre l’adresse IP de l’un de vos services présent dans votre Infra avec un nom de domaine :
Nous allons tester que notre VirtualHost fonctionne bien en allant sur un poste client, pour ma part, je vais utiliser mon PC client Debian « PC-SP-ADM02 » et en se connectant au nom de domaine « nextcloud.steve-infra.local » ou avec l’IP « 10.192.11.60 »:
Sur la page de configuration :
- Créer un compte administrateur :
- Nom d’utilisateur : Choisissez un nom d’utilisateur pour l’administrateur
- Mot de passe : Créez un mot de passe sécurisé.
- Dossier de données : Confirmez que le chemin du dossier de données est «
/var/www/html/nextcloud/data
« .
Lors de votre premier accès à la page de configuration de NextCloud, vous devez créer un compte administrateur qui aura un contrôle total sur l’instance. Le dossier de données est l’emplacement où tous les fichiers des utilisateurs seront stockés. Assurez-vous que ce dossier est correctement configuré sur « /var/www/html/nextcloud/data
» .
Configurer la base de données :
- Type de base de données : Sélectionnez
MySQL / MariaDB
. - Utilisateur de la base de données : Entrez
nextcloud
(l’utilisateur que vous avez créé précédemment dans MariaDB). - Mot de passe de la base de données : Entrez le mot de passe que vous avez défini pour l’utilisateur
nextcloud
. - Nom de la base de données :
nextcloud
(le nom de la base de données que vous avez créée précédemment). - Hôte de la base de données :
localhost
.
INFO : une commande importante pour pouvoir réinitialiser votre mot de passe administrateur Nextcloud en cas de perte ou d’oubli :
cd /var/www/html/nextcloud
#Remplacez admin pour le nom d'utilsateur de votre compte administrateur :
sudo -u www-data php /var/www/html/nextcloud/occ user:resetpassword admin
sudo systemctl restart apache2
sudo systemctl restart php8.2-fpm # Ou la version PHP que vous utilisez
NextCloud nécessite une base de données pour stocker ses métadonnées. Vous devez fournir les informations d’identification nécessaires pour connecter NextCloud à la base de données MariaDB que vous avez configurée précédemment.
Vous vous retrouverez ensuite sur une page vous proposant de choisir les applications recommandées à installer, une fois l’opération d’installation de la configuration Nextcloud précédente terminée, choisissez celles qui vous interessent :
Vous retrouverez en haut à gauche tous les services collaboratif que vous avez choisi d’installer préalablement :
E. Optimisation de Apache & PHP :
Nous allons légèrement améliorer la sécurité de notre service Apache en allant dans le fichier de configuration « security.conf » :
sudo nano /etc/apache2/conf-enabled/security.conf
# Limite les informations renvoyées par le serveur dans l'en-tête HTTP "Server" à "Apache",
# sans inclure de détails sur les modules chargés ou la version d'Apache.
ServerTokens Prod
# Désactive la signature du serveur, empêchant Apache d'ajouter des informations
# telles que la version du serveur et le nom d'hôte aux pages d'erreur.
ServerSignature Off
sudo systemctl restart apache2
Nous pouvons améliorer la réactivité et l’efficacité de notre PHP-FPM avec les fichiers de configuration suivants :
Ouvrez le fichier de configuration « /php.ini » avec un éditeur de texte et modifiez les valeurs des lignes suivantes, cherchez-les rapidement avec le raccourci CTRL+W dans votre editeur de texte :
#Décommentez les lignes en retirant le point virgule !
sudo nano /etc/php/8.2/fpm/php.ini
# Définit le nombre maximum de variables d'entrée (GET, POST, COOKIE) à 10 000.
# Cela peut être nécessaire pour les applications qui traitent de nombreuses données d'entrée.
max_input_vars = 10000
# Définit le temps maximum en secondes (600 secondes = 10 minutes) qu'un script peut passer à analyser les données d'entrée.
# Utile pour éviter les délais d'attente lors du traitement de grandes quantités de données.
max_input_time = 600
# Définit le temps maximum en secondes (300 secondes = 5 minutes) qu'un script est autorisé à s'exécuter.
# Cela aide à prévenir les scripts qui s'exécutent indéfiniment.
max_execution_time = 300
# Définit la taille maximale des données POST à 64 Mo.
# Utile pour les applications nécessitant l'envoi de grandes quantités de données via des formulaires.
post_max_size = 64M
# Définit la taille maximale des fichiers téléchargés à 64 Mo.
# Important pour les applications qui permettent aux utilisateurs de télécharger des fichiers.
upload_max_filesize = 64M
# Définit le fuseau horaire par défaut pour l'interpréteur PHP à "Europe/Paris".
# Assure que les fonctions de date et d'heure utilisent le bon fuseau horaire.
date.timezone = Europe/Paris
sudo service php8.2-fpm restart
OPcache est une extension de cache d’opcode pour PHP qui améliore les performances en stockant le code précompilé des scripts PHP en mémoire, ce qui évite de les recompiler à chaque requête.
sudo nano /etc/php/8.2/fpm/conf.d/10-opcache.ini
opcache.jit=off
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=512
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=60229
opcache.max_wasted_percentage=10
opcache.revalidate_freq=10
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.max_file_size=0
opcache.jit = 1255
opcache.jit_buffer_size = 128M
sudo service php8.2-fpm restart
F. Configuration du certificat SSL pour NextCloud :
Solution 1 : Pour de la certification si l’on veut que notre nextcloud soit accessible en HTTPS uniquement via notre réseau local :
#Affichez le contenu de ce fichier de configuration et allez récupérer les valeurs suivantes avec leur chemin absolu :
sudo cat /etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile "soncheminabsolu"
SSLCertificateKeyFile "soncheminabsolu"
#Ensuite allez dans le fichier de conf de votre VirtualHost et remplacez le port 80 par 443:
sudo nano /etc/apache2/sites-available/nextcloud.steve-infra.local.conf
<VirtualHost *:443>
#Et rajoutez les lignes suivantes quelque part dedans :
SSLEngine On
SSLCertificateFile "soncheminabsolu"
SSLCertificateKeyFile "soncheminabsolu"
#Vérifiez en amont que le module SSL d'Apache soit bien activé & redemarrez le #service Apache :
sudo a2enmod ssl
sudo service apache2 reload
Solution 2 : Pour de la certification si l’on veut que notre nextcloud soit accessible en HTTPS en dehors de notre réseau local :
Nous allons ouvrir le fichier de configuration de NextCloud avec l’éditeur nano. Dans ce fichier, vous devez spécifier les domaines de confiance, qui incluent l’adresse IP de votre serveur et les noms de domaine utilisés pour accéder à votre instance NextCloud. Pour permettre l’accès via l’URL nextcloud.steve-infra.
com, ajoutez ce domaine à la liste trusted_domains
.
sudo nano /var/www/html/nextcloud/config/config.php
Installez « CERTBOT » pour la génération du certificat SSL :
Certbot est un outil permettant d’obtenir des certificats SSL gratuits auprès de Let’s Encrypt. Le paquet python3-certbot-apache
permet à Certbot de collaborer avec Apache pour configurer automatiquement le SSL.
sudo apt install certbot python3-certbot-apache -y
Voici la commande qui indique à Certbot d’obtenir un certificat SSL pour nextcloud.steve-infra.com :
sudo certbot --apache -d nextcloud.steve-infra.com
G. Optimisation de notre Interface Nextcloud :
Sur l’interface Principale de Nextcloud, vous allez pouvoir cliquer sur votre image de profil en haut à droite, puis cliquer sur « paramètres d’administration » :
Sur la page » Vue d’ensemble », nous allons nous soucier des messages d’erreurs présents dedans et les résoudres progressivement (je vous montrerai la résolution de certaines erreurs, à vous ensuite de vous aider de la documentation officielle de Nextcloud associée aux messages d’erreur) :
Pour ce faire, nous allons d’abord activer le mode maintenance en allant dans le fichier de configuration « config.php ».
sudo nano /var/www/html/nextcloud/config/config.php
#Ajoutez-y tout à la fin la ligne suivante, juste avant le );
'maintenance_window_start' => 1
Ensuite, nous allons activer l’entête http strict Transport Security en allant dans le fichier de configuration de notre VirtualHost :
sudo nano /etc/apache2/sites-enabled/nextcloud.steve-infra.local.conf
#Rajoutez toute cette section là dans le script de votre VirtualHost ou #modifiez les valeurs si elle est déjà pré-existane :
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
sudo service apache2 reload
Ensuite, nous allons corriger l’erreur indices facultatifs manquants avec la commande suivante :
sudo php occ db:add-missing-indices
Dernier paramètre à optimiser, c’est le vidage des logs de nextcloud, pour ce faire, tapez la commande suivante :
cat /dev/null > nextcloud.log
H. Activation de l’application « LDAP user and group backend » sur Nextcloud :
Nous allons pouvoir commencer à mettre en place le service LDAP pour joindre nos Utilisateurs AD directement avec notre Nextcloud, pour se faire, nous allons d’abord activer l’application LDAP user and group backend :
Seulement, avant de pouvoir l’activer, nous auront un module PHP à installer avant :
sudo apt install php-ldap
sudo systemctl restart apache2
Une fois le module installé, cliquez sur votre image de profil en haut à droite, puis cliquez sur « Applications » :
Dans le menu latéral à gauche, vous pourrez cliquer sur « Applications désactivées », puis dans la liste des applications désactivées, vous devriez retrouver « LDAP user and group backend », activez-la :
Ensuite, recliquez sur votre image de profil et cliquez sur « Paramètres d’administration » :
Dans le menu latéral à gauche, vous pourrez cliquer sur « Integration LDAP/AD », suivez les instruction ci-dessous pour comprendre comment remplir les champs requis pour bien intégrér votre LDAPS (aidez vous des informations présentes dans votre AD:
Informations du Serveur :
- Nom du Serveur : Entrez un nom pour identifier le serveur (ex.
ldaps://SRV-SP-AD01.steve-infra.local
). - Adresse du Serveur : Entrez l’adresse du serveur LDAP (ex.
ldaps://SRV-SP-AD01.steve-infra.local
). - Port : Indiquez le port utilisé par le serveur LDAP (par défaut, 389 pour LDAP, 636 pour LDAPS).
- Détecter le Port : Cliquez sur « Détecter le port » pour que Nextcloud détecte automatiquement le port.
Informations d’Identification :
- Nom Distingué (DN) de l’Utilisateur : Entrez le DN de l’utilisateur qui a les droits de lecture dans l’annuaire LDAP (ex.
CN=Steve Admin,OU=Utilisateurs,DC=steve-infra,DC=local
). - Mot de Passe : Entrez le mot de passe correspondant au DN de l’utilisateur.
- Sauvegarder les Informations d’Identification : Cliquez sur « Sauvegarder les informations d’identification » pour enregistrer les informations.
Base DN :
- DN de Base des Utilisateurs : Entrez le DN de base où les utilisateurs sont situés (ex.
OU=Utilisateurs,DC=steve-infra,DC=local
). - Détecter le DN de Base : Cliquez sur « Détecter le DN de base » pour que Nextcloud détecte automatiquement le DN de base.
- Tester le DN de Base : Cliquez sur « Tester le DN de base » pour vérifier la connexion.
Finaliser la Configuration :
- Tester la Configuration : Cliquez sur « Tester la configuration » pour vérifier que tous les paramètres sont corrects. ( la pastille devrait s’allumer en vert si tout se passe bien ).
- Enregistrer la Configuration : Cliquez sur « Continuer » pour enregistrer la configuration.
Vérifiez que l’utilisateur c’est bien intégré a Nextcloud en cliquant de nouveau sur votre image de profil en haut à droite, puis en cliquant sur « Comptes » :
Vous allez pouvoir voir si votre utilisateur de votre AD figure bien dans la liste des comptes :
Section 2: Comment configurer mon poste de travail pour accéder à mon service nextcloud ? :
Vous allez pouvoir suivre la documentation officielle à partir du lien suivant –> https://nextcloud.com/support/, autrement, vous allez pouvoir installer l’exécutable côté client en cliquant ici :
Si le bouton d’installation ne fonctionne plus, vous pouvez vous rendre sur le lien suivant : https://nextcloud.com/install/#desktop-files et sur le GitHub officiel de Nextcloud pour aller vérifier quelle est la release stable la plus récente de l’application desktop de Nextcloud : https://github.com/nextcloud/desktop/releases/, elle sera tagué en « Latest ».
Une fois le package .MSI de Nextcloud Desktop téléchargé, lancez son éxecution et commencez à suivre les instructions de l’assistant d’installation :
Cliquez encore une fois sur « Next » :
Ensuite, cliquez sur « Install » :
Patientez pour que l’installation se termine et ensuite cliquez sur « Finish » :
Vous devrez redémarrer votre poste pour que les modifications de l’installation prennent effet :
Une fois votre poste client redémarré, sur la fenêtre de lancement de Nextcloud Desktop, cliquez sur « Se connecter » :
Puis, renseignez l’URL qui permet de joindre votre serveur Nextcloud, soit par adresse IP, soit par nom de domaine :
Etant donné que j’ai utilisé un certificat SSL auto-signé pour l’accès en HTTPS au service Nextcloud, il faudra cocher la case pour « Faire confiance à ce certificat malgré tout » et cliquer sur « OK » :
Vous serez redirigé vers la page de connexion de Nextcloud, rentrez vos identifiants utilisateur :
Une fois la liaison réalisée, Nextcloud Desktop tournera en tâche de fond sur votre ordinateur et vous pourrez utiliser la petite interface graphique pour manipuler vos dossier et fichiers :
Laisser un commentaire