Last updated on 08/09/2023
NEXTCLOUD HUB 5 – v27.0.2
Présentation
Ce tutoriel est destiné aux utilisateurs Linux pour les systèmes suivants :
Debian 12
Il vous sera expliqué comment configurer sa machine Debian 12 pour l’utilisation de Nextcloud hub 5 (27.0.x).
Depuis Debian 10, vérifier que le chemin /usr/sbin est présent dans votre variable $PATH. Vous pourrez trouver plus d’informations sur cette ressource.
L’absence de ce chemin dans la variable $PATH peut causé des soucis d’appels des commandes en SSH.
Disclaimer
Avant de poursuivre, il est nécessaire de prendre connaissance des indications ci-dessous :
Toutes les manipulations décrites ici sont effectuées en « root » (super utilisateur) sur des systèmes fraichement installé et configuré de manière minimal. Nous ne pourrons garantir ou être tenu responsables d’une quelconque manipulation rendant le système inopérant.
Prérequis
Version & validation
Debian 12 : Validé le 07/09/23
Raspbian : Non testé
PHP : 8.2
Status : Validé
Niveau tutoriel
Habitué de Linux et des serveurs web.
Niveau requis
- Savoir lire
- Connaître le concept de DNS (l’histoire avec les domaines)
- Connaître le concept de Virtualhost
source.list – Debian 12
Le fichier ci-dessous se situe à l’emplacement suivant : /etc/apt/source.list
deb http://deb.debian.org/debian bookworm main contrib non-free deb-src http://deb.debian.org/debian bookworm main contrib non-free deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free deb http://deb.debian.org/debian bookworm-updates main contrib non-free deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free
Updates
$ su # apt update && apt upgrade -y
Toutes les manipulations sont effectuées, avec le fichier source.list présenté ci-dessus, et après avoir effectué une recherche puis une installation des mises à jour liées à ces sources.
Préparation de la Base de Données
Mariadb-server sera le paquet favorisé pour effectuer les manipulations de ce tutoriel.
Pour l’installer, procédez comme suit :
apt install mariadb-server -y
Par le suite, conformément à la documentation Nextcloud, nous allons configuré les fichiers de configuration de la base de donnée :
nano /etc/mysql/my.cnf
Une fois dans le fichier « my.cnf », ajouter les paramètres suivants :
[server] skip_name_resolve = 1 innodb_buffer_pool_size = 128M innodb_buffer_pool_instances = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 32M innodb_max_dirty_pages_pct = 90 query_cache_type = 1 query_cache_limit = 2M query_cache_min_res_unit = 2k query_cache_size = 64M tmp_table_size= 64M max_heap_table_size= 64M slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 [client-server] !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mariadb.conf.d/ [client] default-character-set = utf8mb4 [mysqld] character_set_server = utf8mb4 collation_server = utf8mb4_general_ci transaction_isolation = READ-COMMITTED binlog_format = ROW innodb_large_prefix=on innodb_file_format=barracuda innodb_file_per_table=1
Redémarrer le service puis créer l’utilisateur et la base de données suivants (On modifie les valeurs entre crochet « [ ] » et on efface les crochets !) :
# systemctl restart mysql # mysql -u root -p > CREATE USER '[userdb]'@'localhost' IDENTIFIED BY '[PASSWORD]'; > CREATE DATABASE IF NOT EXISTS [nextcloud] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; > GRANT ALL PRIVILEGES on [nextcloud.*] to '[userdb]'@'localhost'; > FLUSH privileges; > exit;
Installation d’Apache2 et PHP
Installation des paquets conformément au Prérequis système Nextcloud:
apt install apache2 -y apt install php-fpm -y systemctl reload apache2
Ajouter les paquets non-optionnels suivants qui ne seraient pas pris en compte par fpm :
apt install php8.2 libapache2-mod-php8.2 php8.2-curl php-xml php-common php8.2-gd php-json php8.2-mbstring php-zip -y
On peut ajouter les paquets optionnels suivants :
apt install php-ldap libsmbclient php-imap php-bcmath php-gmp php*-smbclient php-intl php-mysql php-bz2 php-memcache php-redis redis-server php-imagick libmagickcore-6.q16-6-extra -y
Modifier les paramètres PHP parce que c’est rigolo :
nano /etc/php/8.2/apache2/php.ini
Modifier les valeurs comme suit :
memory_limit = 512M upload_max_filesize = 15G max_execution_time = 360 output_buffering = Off date.timezone = Europe/Paris
NOTE :
Cette section liste tous les modules PHP requis et optionnels. Consultez le manuel PHP pour plus d’informations sur les modules. Votre distribution Linux devrait avoir des paquets pour tous les modules requis. Vous pouvez vérifier la présence d’un module en tapant php -m | grep -i <nom_du_module>. Si vous obtenez un résultat, c’est que le module est présent.
Requis (source):
- PHP (voir Prérequis système pour la liste des versions supportées)
- PHP module ctype (pris en charge par php-common)
- PHP module curl
- PHP module dom (pris en charge par php-common)
- PHP module fileinfo (inclus dans PHP)
- PHP module filter (seulement dans Mageia et FreeBSD)
- PHP module gd
- PHP module hash (seulement en FreeBSD)
- PHP module json (inclus avec PHP >= 8.0)
- PHP module libxml (Linux package libxml2 must be >=2.7.0)
- PHP module mbstring
- PHP module openssl (inclus avec PHP >= 8.0)
- PHP module posix (pris en charge par php-common)
- PHP module session
- PHP module SimpleXML
- PHP module XMLReader
- PHP module XMLWriter
- PHP module zip
- PHP module zlib
Connecteurs de base de données (choisissez celui qui correspond à votre base de données) :
- PHP module pdo_sqlite (>= 3, généralement déconseillé pour des raisons de performance)
- PHP module pdo_mysql (MySQL/MariaDB)
- PHP module pdo_pgsql (PostgreSQL)
Packages recommandés :
- PHP module bz2 (recommandé, requis pour l’extraction des applications)
- PHP module intl (améliore les performances des traductions linguistiques et corrige le tri des
- caractères non ASCII)
Requis pour des applications spécifiques :
- PHP module ldap (pour intégration LDAP)
- PHP module smbclient (Intégration SMB/CIFS, voir SMB/CIFS)
- PHP module ftp (pour le stockage FTP / l’authentification de l’utilisateur externe) (pris en charge par php-common)
- PHP module imap (pour l’authentification des utilisateurs externes)
- PHP module bcmath (pour une connexion sans mot de passe)
- PHP module gmp (pour une connexion sans mot de passe)
Recommandé pour des applications spécifiques (facultatif) :
- Module PHP gmp (pour le stockage SFTP)
- Module PHP exif (pour la rotation des images dans l’application Photos) (pris en charge par php-common)
Pour améliorer les performances du serveur (optionnel), sélectionnez l’un des memcaches suivants :
- Module PHP apcu (>= 4.0.6)
- Module PHP memcached
- Module PHP redis (>= 2.2.6, requis pour le verrouillage transactionnel des fichiers)
Voir Mise en cache de la mémoire pour savoir comment sélectionner et configurer un memcache.
Préparation d’Apache2
Préparation des répertoires
- On créer le répertoire pour le nextcloud et pour la partie data du nextcloud.
- Par la suite, on créer l’emplacement pour l’enregistrement des clés SSL pour l’HTTPS.
- Puis les les répertoires pour les emplacements des logs.
- On finalise les manipulations en donnant les droits à l’utilisateur www-data aux répertoires contenu à l’emplacement /var/www.
mkdir /var/www/nextcloud mkdir /var/www/data mkdir -p /etc/ssl/apache2/nextcloud mkdir /var/log/apache2/nextcloud chown -R www-data:www-data /var/www/
Création du fichier de conf
La configuration d’Apache nécessite la création d’un seul fichier de configuration. Sur Debian, Ubuntu et leurs dérivés, ce fichier sera /etc/apache2/sites-available/nextcloud.conf.
NB : Vous pouvez renommer « nextcloud.conf » à votre convenance.
nano /etc/apache2/sites-available/nextcloud.conf
Mettre ce qui suit dans nextcloud.conf en remplaçant ServerName, ainsi que les chemins de fichier DocumentRoot et Directory par des valeurs appropriées à votre système.
Le module « mod_cav » sert pour l’utilisation des calendriers/agenda partagés sur nextcloud. Par défaut ce module est activé. Ici, il est désactivé dans le fichiers de configuration du virtualhost.
<VirtualHost *:80> DocumentRoot /var/www/nextcloud/ ServerName localhost <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory> </VirtualHost>
Sous Debian, Ubuntu et leurs dérivés, exécuter la commande suivante pour activer la configuration :
cd /etc/apache2/sites-available/ a2ensite nextcloud.conf
Exécuter les commandes suivantes pour désactiver les configurations par défaut :
a2dissite 000-default.conf a2dissite default-ssl.conf
Si message d’erreur « bash: a2ensite : commande introuvable » se référer au tutoriel suivant : Linux – Préparation de Debian 12
Une fois la configuration du Virtualhost activée, activer les modules additionnels d’Apache.
a2enmod rewrite headers env dir mime
Modules SSL (utile pour HTTPS)
a2enmod ssl service apache2 reload
Création des certificats
(On modifie les valeurs entre crochet « [ ] » et on efface les crochets !)
openssl genrsa -out /etc/ssl/apache2/nextcloud/nxt.key 4096 openssl req -new -x509 -key /etc/ssl/apache2/nextcloud/nxt.key -subj "/CN=[Nom afficher sur le certificat]" -out /etc/ssl/apache2/nextcloud/nxt.pem
Adaptation du fichier de conf pour HTTPS et HSTS
Les éléments en orange sont les éléments à rajouter.
nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80> DocumentRoot /var/www/nextcloud/ ServerName localhost RewriteEngine On RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory> </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/nextcloud/ ServerName localhost <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory> #--LOGS--# ErrorLog /var/log/apache2/nextcloud/errors.log LogLevel warn CustomLog /var/log/apache2/nextcloud/access.log combined #--HTTPS--# SSLEngine on SSLCertificateFile /etc/ssl/apache2/nextcloud/nxt.pem SSLCertificateKeyFile /etc/ssl/apache2/nextcloud/nxt.key #-- HSTS--# <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=63072000;includeSubDomains; preload" </IfModule> </VirtualHost>
apachectl configtest systemctl restart apache2
NOTE :
Le HTTP Strict Transport Security, ou HSTS, est un en-tête de réponse qui permet de forcer les navigateurs à utiliser le HTTPS pour toutes les requêtes ultérieures qu’ils envoient à un serveur.
Sigature du serveur en Off
Optionnel mais considéré comme « best-practice », on vient commenter le paramètre « ServerSignature On » et dé-commenter le « ServerSignature Off » :
nano /etc/apache2/conf-available/security.conf
ServerSignature Off #ServerSignature On
systemctl restart apache2
Installation de NextCloud
cd /var/www/nextcloud wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
=> Depuis un navigateur, rendez-vous à l’adresse de votre machine :
https://IP_OU_FQDN/setup-nextcloud.php
Indiquer le » . » afin d’installer Nextcloud dans le dossier /var/www/nextcloud
Indiquer un nom d’utilisateur et un mot de passe pour le compte administrateur
Pour le répertoire de données, indiquer le chemin suivant : /var/www/data
L’important est que le répertoire data ne se situe pas dans le répertoire d’installation de Nextcloud.
Indiquer le nom d’utilisateur, le mot de passe associé et le nom de la base de donnée que vous avez précédemment créé lors de l’installation de mariadb :
Finalisation de la configuration
Une fois l’initialisation terminée, retourner dans le terminal pour peaufiner la configuration de Nextcloud.
nano /var/www/nextcloud/config/config.php
Voici le fichier de base :
<?php $CONFIG = array ( 'instanceid' => 'oceanrm7m8c2', 'passwordsalt' => '24egvvTWAlo/spBTpp2C-8Zx118ztbU', 'secret' => '-2kzRr8KCLXyodoMFR49m5LOLoLW1u2amgdY9VXUwEH6UgYD', 'trusted_domains' => array ( 0 => '127.0.0.1', ), 'default_phone_region' => 'FR', 'datadirectory' => '/var/www/data', 'dbtype' => 'mysql', 'version' => '27.0.2.1', 'overwrite.cli.url' => 'https://127.0.0.1', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'test', 'dbpassword' => 'test', 'installed' => true, );
Apporter les modifications suivantes avant le dernier paramètre » ); » :
Gestion de l’expérience utilisateur (source) :
'default_phone_region' => 'FR',
'default_language' => 'fr',
'force_language' => 'fr',
'default_locale' => 'fr_FR',
'force_locale' => 'fr_FR',
Gestion du FileLocking (source) et du cache (source) :
'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'timeout' => 0,
'dbindex' => 0,
),
NOTE : Dans le fichier de conf, veiller à bien aligner les paramètres sur ceux du dessus.
Configuration du service de messagerie
Installer un serveur SMTP pour permettre la gestion des pertes de mot de passe et l’envoie de notification :
apt install postfix postfix-mysql -y
Sélectionner « Site internet »
systemctl reload apache2
Se rendre sur : https://IP_OU_FQDN/index.php/settings/admin
Sélectionner le mode d’envoi « Sendmail« , le mode Sendmail « smtp (-bs) » puis indiquer une adresse source. Finaliser par « envoyer un e-mail« . Si le test est « Successful » votre serveur Nextcloud est pleinement opérationnel.