Comment installer Nextcloud sur Debian 11
Nextcloud est un logiciel open-source pour créer un stockage de fichiers public et privé. Il te permet de créer tes services auto-hébergés comme Dropbox, Google Drive ou Mega.nz. À l’origine, il est créé par le développeur original d’Owncloud, Frank Karlitschek. En 2016, il bifurque le projet Owncloud et crée un nouveau projet avec le nouveau nom « Nextcloud ».
À ce moment-là, le projet Nextcloud se développe rapidement et devient plus qu’un logiciel d’hébergement de fichiers, c’est plutôt une plateforme de synchronisation de fichiers et de collaboration de contenu. Soutenu par de nombreux plugins, Nextcloud devient un logiciel de collaboration très puissant. Tu peux installer des plugins pour la gestion de projet, la vidéoconférence, l’édition collaborative, la prise de notes, le client de messagerie, etc.
Dans ce guide, tu apprendras comment installer Nextcloud sur la dernière version de Debian 11 Bullseye. Tu installeras Nextcloud sous la pile LAMP (Linux, Apache2/httpd, MySQL/MariaDB et PHP).
Conditions préalables
- Un serveur Debian 11. Assure-toi que tous les paquets sont mis à jour à la dernière version.
- Un utilisateur root ou un utilisateur avec des privilèges root. Cet utilisateur sera utilisé pour installer de nouveaux paquets et modifier les configurations du système.
Obtiens les dépôts racine et de mise à jour
Tout d’abord, exécute la commande suivante pour obtenir les privilèges root.
1. Si tu as installé‘sudo‘, exécute la commande sudo ci-dessous.
sudo su
Tape maintenant le mot de passe login de ton utilisateur.
2. Si tu n’as pas le paquet sudo, exécute la commande‘su‘ ci-dessous.
su
Tape maintenant ton mot de passe root et appuie sur‘Enter‘.
3. Ensuite, mets à jour tous tes dépôts Debian à l’aide de la commande apt ci-dessous.
apt update
Installation du serveur Web Apache
Après avoir mis à jour les dépôts Debian, tu vas installer un serveur Web Apache et activer certains modules Apache pour Nextcloud.
1. Exécute la commande apt ci-dessous pour installer le serveur Web Apache.
apt install apache2
Tape‘y‘ et appuie sur‘Enter‘ pour poursuivre l’installation.
2. Si l’installation est terminée, vérifie le service apache à l’aide de la commande suivante.
systemctl is-enabled apache2
systemctl status apache2
Tu verras le résultat‘enabled‘, ce qui signifie que le service apache démarre automatiquement au démarrage du système. Et l’état actuel du service apache est‘actif (en cours d’exécution)‘.
3. Ensuite, active les modules Apache ‘ssl, rewrite, et headers’ en exécutant la commande a2enmod ci-dessous.
a2enmod ssl rewrite headers
Voici le résultat que tu obtiendras.
4. Après cela, exécute la commande suivante pour redémarrer le service apache.
systemctl restart apache2
De nouveaux modules apache seront appliqués, vérifie ces modules à l’aide de la commande apachectl ci-dessous.
apachectl -M | egrep "ssl|rewrite|headers"
Tu obtiendras le même résultat que ci-dessous.
Installer et configurer PHP
Pour ce guide, tu déploieras Nextcloud avec la dernière version stable de PHP 8.0.
Par défaut, le référentiel Debian fournit des paquets pour PHP 8.0. Mais Nextcloud a besoin de certains paquets PHP supplémentaires qui peuvent être installés à partir d’un dépôt tiers. Tu vas donc ajouter un nouveau dépôt à ton système Debian.
1. Exécute la commande ci-dessous pour ajouter un référentiel PHP pour le système Debian.
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main"\
| sudo tee /etc/apt/sources.list.d/sury-php.list
Télécharge la clé GPG dans le répertoire‘/etc/apt/trusted.gpg.d‘.
curl -o /etc/apt/trusted.gpg.d/sury-php8.gpg https://packages.sury.org/php/apt.gpg
Exécute à nouveau la commande ‘apt update’ pour mettre à jour tous les référentiels.
apt update
2. Installe les paquets PHP et les modules PHP supplémentaires pour Nextcloud à l’aide de la commande apt ci-dessous.
apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu
Ensuite, exécute à nouveau la commande apt pour installer certains paquets supplémentaires.
apt install -y libmagickcore-dev
Les paquets‘libmagickcore-dev‘ sont nécessaires à php-imagick pour le traitement des images SVG sur Nextcloud.
3. Si l’installation de tous les paquets est terminée, change le répertoire de travail en‘/etc/php/8.0/apache2‘ et modifie la configuration‘php.ini‘ en utilisant nano.
cd /etc/php/8.0/apache2/
nano php.ini
Pour le déploiement de base de nextcloud, modifie les options par défaut en utilisant la configuration suivante.
file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam
output_buffering = Off
Décommente l’option‘zend_extension=opcache‘ pour charger l’extension opcache.
zend_extension=opcache
Va dans la section ‘[opcache]’ et ajoute la configuration suivante.
[opcache]
...
....
.....
opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
Sauvegarde la configuration en appuyant sur le bouton‘Ctrl+x‘ et tape‘y‘, puis appuie sur‘Enter‘ pour quitter.
4. Redémarre maintenant le service apache pour appliquer les nouveaux changements à l’aide de la commande ci-dessous.
systemctl restart apache2
Installer et configurer MariaDB
Pour cette étape, tu vas installer le serveur de base de données mariadb, sécuriser le déploiement de mariadb et créer une nouvelle base de données et un nouvel utilisateur pour Nextcloud.
1. Pour installer le serveur de base de données mariadb, exécute la commande ci-dessous.
apt install mariadb-server mariadb-client
Tape‘y‘ pour confirmer et installer les paquets mariadb.
2. Une fois l’installation terminée, vérifie le service mariadb à l’aide de la commande suivante.
systemctl is-enabled mariadb
systemctl status mariadb
Le service mariadb est actif et fonctionne, et il est activé pour démarrer automatiquement au démarrage du système.
3. Ensuite, tu dois sécuriser ton déploiement mariadb en configurant le mot de passe root pour mariadb et en supprimant certaines configurations par défaut. Pour cela, tu peux utiliser l’outil en ligne de commande ‘mysql_secure_installation’, qui est inclus dans l’installation par défaut de mariadb.
Exécute la commande« mysql_secure_installation » ci-dessous.
mysql_secure_installation
Au début, il te sera demandé de saisir le mot de passe root de mariadb. Appuie simplement sur‘Enter‘ pour continuer.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Tape‘Y‘ pour activer l’authentification‘unix_socket‘ pour l’utilisateur‘root‘.
Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
... Success!
Tape ton mot de passe mariadb root fort et répète-le, puis appuie sur« Enter » pour continuer.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Tape maintenant‘Y‘ et appuie sur‘Enter‘ pour supprimer l’utilisateur anonyme par défaut du serveur mariadb.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Ensuite, désactive la connexion à distance pour l’utilisateur par défaut‘root‘. Tape« Y » et appuie sur« Enter » pour continuer.
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
Tape encore« Y » pour supprimer la base de données par défaut« test » et appuie sur« Entrée« .
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Et enfin, tape encore« Y » pour recharger les privilèges de toutes les tables afin d’appliquer une nouvelle configuration.
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Le processus est maintenant terminé et tu verras le résultat suivant.
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Créer une base de données et un utilisateur pour Nextcloud
1. Connecte-toi au shell mariadb en utilisant la commande mysql ci-dessous.
mysql -u root -p
2. Exécute maintenant la requête mysql suivante pour créer une nouvelle base de données« nextcloud_db« .
CREATE DATABASE nextcloud_db;
3. Exécute la requête suivante pour créer un nouvel utilisateur de base de données« nextclouduser« . Change le« strongpassword » par ton mot de passe fort.
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
4. Autorise l’utilisateur« nextclouduser » à accéder et à écrire dans labase de données « nextcloud_db » en utilisant la requête suivante.
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
5. Recharge maintenant tous les privilèges des tables pour appliquer la nouvelle configuration de la base de données.
FLUSH PRIVILEGES;
Ensuite, tu peux taper« quit » et appuyer sur« Enter » pour sortir du shell mariadb.
Télécharger le code source de Nextcloud
1. Change le répertoire de travail en« /var/www » et télécharge la dernière version du code source de Nextcloud en utilisant la commande wget comme ci-dessous.
cd /var/www/
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-22.1.1.zip
2. Installe maintenant le paquet unzip à l’aide de la commande suivante.
apt install unzip
3. Ensuite, extrais le code source de Nextcloud« nextcloud.zip » et tu obtiendras un nouveau répertoire « nextcloud », puis change le propriétaire du répertoire« nextcloud » en utilisateur« www-data« .
unzip nextcloud-22.1.0.zip
chown -R www-data:www-data nextcloud
Tu es maintenant prêt à générer SSL Letsencrypt et à configurer l’hôte virtuel apache pour Nextcloud.
Génération de SSL Letsencrypt
Dans cette étape, tu vas installer l’outil certbot et générer les certificats SSL pour l’installation Nextcloud. Tu vas générer des Letsencrypt SSL avec le plugin webroot.
1. Exécute la commande suivante pour installer l’outil certbot afin de générer des Letsencrypt SSL.
apt install certbot
Tape‘y‘ et appuie sur‘Enter‘ pour poursuivre l’installation.
2. Une fois l’installation terminée, crée un nouveau répertoire pour l’autorisation de letsencrypt à l’aide des commandes suivantes.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
3. Ensuite, change le répertoire de travail en« /etc/apache2/conf-available/ » et crée une nouvelle configuration« well-known.conf » en utilisant nano.
cd /etc/apache2/conf-available/
nano well-known.conf
Copie et colle la configuration suivante.
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Appuie sur« Ctrl+x« , tape« y » et appuie sur« Entrée » pour enregistrer la configuration et quitter.
Active maintenant la nouvelle configuration en créant un lien symbolique du fichier‘well-known.conf‘ vers le répertoire ‘conf-enabled’ à l’aide de la commande‘ln‘ ci-dessous.
ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/
4. Exécute maintenant les commandes suivantes pour vérifier la configuration d’apache et redémarrer le service apache.
apachectl configtest
systemctl restart apache2
Si tu n’as pas d’erreur, tu es prêt à générer SSL Letsencrypt avec le plugin webroot.
5. Avant de générer SSL Letsencrypt, assure-toi que ton nom de domaine est résolu à l’adresse IP du serveur. Ensuite, tu peux générer SSL Letsencrypt avec le plugin webroot en exécutant la commande certbot ci-dessous. Change aussi l’adresse e-mail et le nom de domaine par les tiens.
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d files.domain-name.io
Lorsque le processus est terminé, tes certificats SSL sont disponibles dans le répertoire« /etc/letsencrypt/live/files.nom-de-domaine.io/« .
Configurer l’hôte virtuel Apache pour Nextcloud
Dans cette étape, tu vas ajouter une nouvelle configuration d’hôte virtuel apache/httpd pour Nextcloud.
1. Change le répertoire de travail en« /etc/apache2/sites-available/ » et crée une nouvelle configuration« nextcloud.conf » en utilisant nano.
cd /etc/apache2/sites-available/
nano nextcloud.conf
Change le nom de domaine détaillé et le répertoire du chemin SSL par les tiens et colle la configuration dans le fichier« nextcloud.conf« .
<VirtualHost *:80>
ServerName files.domain-name.io
ServerAlias www.files.domain-name.io
# auto redirect HTTP to HTTPS
Redirect permanent / https://files.domain-name.io/
</VirtualHost>
<VirtualHost *:443>
ServerName files.domain-name.io
ServerAlias www.files.domain-name.io
DocumentRoot /var/www/nextcloud/
Protocols h2 http/1.1
# auto redirect www to non-www
<If "%{HTTP_HOST} == 'www.files.domain-name.io'">
Redirect permanent / https://files.domain-name.io/
</If>
# log files
ErrorLog /var/log/apache2/files.domain-name.io-error.log
CustomLog /var/log/apache2/files.domain-name.io-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/files.domain-name.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/files.domain-name.io/privkey.pem
# HSTS
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
</VirtualHost>
Appuie sur « Ctrl+x » et tape « Y », puis appuie sur« Enter » pour enregistrer la configuration et quitter.
2. Active maintenant la configuration de l’hôte virtuel‘nextcloud.conf‘ en exécutant la commande suivante.
a2ensite nextcloud.conf
3. Vérifie maintenant la nouvelle configuration d’apache et assure-toi que tu n’as pas d’erreur, puis redémarre le service apache.
apachectl configtest
systemctl restart apache2
Installation de Nextcloud
Si toute la configuration connexe du serveur est terminée, tu peux accéder à ton installation Nextcloud avec le navigateur Web.
1. Ouvre ton navigateur Web et tape l’adresse URL de ton installation Nextcloud.
https://files.domain-name.io
Crée ton premier utilisateur et ton administrateur pour Nextcloud et le répertoire de données est accessible en écriture par l’utilisateur‘www-data‘.
2. Fais défiler la page jusqu’en bas, tape les détails du nom de la base de données, l’utilisateur et le mot de passe. Pour l’option‘Installer les applications recommandées‘, décoche-la pour accélérer l’installation. Puis clique sur le bouton‘Terminer l’installation‘ pour installer Nextcloud.
3. Si l’installation est réussie, tu verras le tableau de bord Nextcloud comme ci-dessous.
4. Clique maintenant sur l’icône de l’utilisateur en haut à droite et clique sur le menu‘Paramètres‘. Dans la section‘Administration‘, clique sur‘Aperçu‘.
- Dans la section ‘Avertissements de sécurité et d’installation’, tu trouveras quelques recommandations que tu dois faire, en fonction de ton environnement d’installation.
- Dans la section ‘Versions’, tu verras la branche actuelle de ton installation Nextcloud.
5. Ensuite, clique sur le menu‘Système‘ en bas de la section‘Administration‘.
Tu verras les détails de ton environnement, la charge du système, l’état de l’espace disque, l’état de la mémoire, l’état du réseau, etc.
6. Comme dit précédemment, nextcloud est devenu plus qu’une simple synchronisation de fichiers. Avec la prise en charge d’apps/plugins supplémentaires, il est devenu un costume de collaboration.
Sur l’icône de profil en haut à droite, clique sur le menu‘Apps‘, et tu verras la boutique d’applications nextcloud comme ci-dessous.
Choisis les apps que tu veux installer, puis clique sur le bouton‘Télécharger et activer‘ pour installer de nouvelles apps.
7. Ci-dessous se trouve la vue par défaut du tableau de bord de l’utilisateur Nextcloud. Tu peux étendre les fonctionnalités de ton tableau de bord en installant des plugins supplémentaires.
Réglage des performances de Nextcloud
Après avoir installé Nextcloud, tu peux faire quelques étapes supplémentaires pour augmenter les performances de Nextcloud en activant le cache de la mémoire locale et en configurant un cronjob pour Nextcloud lui-même.
1. Dans la partie supérieure de l’installation de PHP, tu as déjà configuré PHP pour la mise en cache. Pour activer la mise en cache sur Nextcloud, modifie la configuration de Nextcloud « config.php ».
Change le répertoire de travail en« /var/www/nextcloud/config » et modifie la configuration« config.php » à l’aide de l’éditeur nano.
cd /var/www/nextcloud/config/
nano config.php
Ajoute la configuration suivante entre les crochets‘array (..);‘ comme ci-dessous
<?php
$CONFIG = array (
....
# Additional configuration
'memcache.local' => '\OC\Memcache\APCu',
);
Appuie maintenant sur le bouton« Ctrl+x » et tape« y« , puis appuie sur« Enter » pour enregistrer la configuration et quitter.
2. Un système Nextcloud a besoin d’exécuter certaines tâches d’arrière-plan de façon régulière et sans aucune interaction de l’utilisateur/administrateur. Pour cela, tu peux utiliser le cronjob pour planifier les tâches Nextcloud.
Sur le système Debian Linux, l’installation par défaut d’Apache fonctionne sous l’utilisateur« www-data« . Crée un nouveau cronjob pour l’utilisateur« www-data » à l’aide de la commande ci-dessous.
crontab -u www-data -e
Si tu as plusieurs éditeurs sur ton système, choisis l’éditeur que tu utilises le mieux. Pour ce guide, nous utiliserons l’éditeur nano.
Ajoute la configuration suivante.
*/5 * * * * php -f /var/www/nextcloud/cron.php
Sauvegarde la configuration et quitte.
Configuration cronjob que tu dois connaître :
- Cette configuration cronjob permet à l’utilisateur« www-data » d’exécuter le script PHP« /var/www/nextcloud/cron.php » toutes les 5 minutes.
Pour vérifier la configuration du cronjob, tu peux exécuter la commande suivante.
crontab -u www-data -l
Si ta configuration est réussie, tu obtiendras la configuration en haut comme résultat. Sinon, tu obtiendras un résultat vide.
Conclusion
Félicitations ! Tu as réussi à installer Nextcloud sur Debian 11 Bullseye. Le serveur Nextcloud fonctionne sous la pile LAMP avec SSL activé. De plus, ton installation Nextcloud fonctionne avec la mise en cache de la mémoire activée avec les extensions PHP APC et opcache.