Press "Enter" to skip to content

Linux – Debian 12 Nextcloud Hub 5

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
  1. On créer le répertoire pour le nextcloud et pour la partie data du nextcloud.
  2. Par la suite, on créer l’emplacement pour l’enregistrement des clés SSL pour l’HTTPS.
  3. Puis les les répertoires pour les emplacements des logs.
  4. 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.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *