Sommaire
- Présentation
- 1) Préparation de l’environnement
- 2) Installation de Nextcloud 30
- 3) Configuration de Nextcloud 30
- 4) Connexion à LDAP ou Active Directory
- 5) Utilisateurs et Groupes
- 6) Stockages Externes
- 7) Optimisation de Nextcloud
- 8) Certificat SSL avec Let’s Encrypt
- 9) Sauvegarde de Nextcloud
- 10) Mise à jour de Nextcloud
Présentation
Nous allons, dans ce tutoriel, créer un Cloud personnel en installant Nextcloud.
Nous verrons par la suite comment connecter Nextcloud à un annuaire LDAP ou Active Directory.
Pour finir, nous optimiserons notre installation afin d’améliorer les performances de notre Cloud Personnel.
Ce tutoriel est prévu pour Debian 12 et Ubuntu Server 22.04.
Dans ce tutoriel, Nextcloud est installé sur une VM dans Proxmox VE (PVE) mais vous pourrez l’installer sur un VPS disponible 24h/24.
1) Préparation de l’environnement
Avant d’installer Nextcloud et de créer notre Cloud Personnel, il faut s’assurer que le système est correctement configuré.
Important : A partir d’ici, toutes les commandes seront exécutées en tant que root.
1.1) Configuration de l’heure
1 2 3 |
sudo timedatectl set-timezone Europe/Paris sudo hwclock -w timedatectl status |
Vous pouvez obtenir la liste des fuseaux horaire acceptés en utilisant la commande : timedatectl list-timezones
1.2) Mise à jour du dépôt et des paquets
1 |
sudo apt -y update && sudo apt -y upgrade |
1.3) Ajout d’un nouveau dépôt pour php8.3
La version 8.3 de php n’est pour le moment pas disponible dans le dépôt officiel de Debian 12 et Ubuntu 22.04.
On ajoute donc un dépôt qui contient la version 8.3 :
Pour Debian 11 et Debian 12 :
1 2 3 4 5 |
sudo apt install -y lsb-release apt-transport-https ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list sudo apt update -y |
Pour Ubuntu 22.04 :
1 2 3 |
sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ondrej/php sudo apt update -y |
1.4) Installation des prérequis pour Nextcloud 30
1 2 3 4 5 6 7 8 |
export DEBIAN_FRONTEND=noninteractive # Installation des paquets (dont sudo pour Debian 11 et Debian 12) sudo apt-get install -y apache2 mariadb-server libapache2-mod-php8.3 imagemagick \ php8.3-gd php8.3-mysql php8.3-curl php8.3-mbstring \ php8.3-intl php8.3-imagick php8.3-xml php8.3-zip \ php8.3-apcu redis-server php8.3-redis \ php8.3-ldap smbclient php8.3-bcmath php8.3-gmp |
2) Installation de Nextcloud 30
2.1) Création du Site Nextcloud dans Apache
Téléchargement de Nextcloud :
1 |
wget https://download.nextcloud.com/server/releases/latest-30.tar.bz2 |
Extraction dans le répertoire /var/www/
:
1 |
sudo tar -xvf latest-30.tar.bz2 -C /var/www/ |
Edition du fichier de configuration du site :
1 |
sudo nano /etc/apache2/sites-available/nextcloud.conf |
Contenu :
1 2 3 4 5 6 7 8 9 10 11 12 |
Alias / "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> </Directory> |
Attention à l’indentation. Problème constaté lors du copier/coller sous Firefox 107.0.1.
Activation du site nextcloud :
1 2 3 4 5 6 7 8 9 10 11 |
# Activation du site nextcloud sudo a2ensite nextcloud.conf # Activation du site et des modules nécessaires sudo a2enmod rewrite headers env dir mime ssl # Activation du site default-ssl sudo a2ensite default-ssl # Redémarrage service apache sudo systemctl restart apache2 |
Changement du propriétaire du répertoire nextcloud :
1 |
sudo chown -R www-data:www-data /var/www/nextcloud/ |
Vérifications versions :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ -V sudo -u www-data php /var/www/nextcloud/occ status |
2.2) Création de la base de données Nextcloud
Pré-configuration de la base MariaDB :
Les commandes qui suivent sont l’équivalent du script interactif mysql_secure_installation.
1 2 3 4 5 6 7 |
sudo mysql --user=root <<-EOF SET PASSWORD FOR 'root'@'localhost' = PASSWORD('VotreMotDePasse'); DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.db WHERE Db='test' OR Db='test_%'; FLUSH PRIVILEGES; EOF |
Attention : Remplacer VotreMotDePasse par le mot de passe que vous aurez choisi.
Création de la base de données :
1 2 3 4 5 6 |
sudo mysql --user=root <<-EOF CREATE DATABASE nextcloud; CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'VotreMotDePasse'; GRANT ALL PRIVILEGES ON nextcloud.* TO "nextcloud"@"localhost"; FLUSH PRIVILEGES; EOF |
Attention : Remplacer VotreMotDePasse par le mot de passe que vous aurez choisi.
2.3) Finalisation de l’installation
Pour terminer l’installation, il va falloir se connecter à l’URL de votre serveur Nextcloud.
Exemple : https://192.168.1.203
Cliquer sur « Terminer l’installation ».
3) Configuration de Nextcloud 30
Une fois l’installation terminée, retourner dans l’invite de commande.
3.1) Configuration de la région par défaut pour les numéros de téléphone
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set \ default_phone_region --value="FR" |
Remplacer FR par votre code pays ISO 3166-1.
3.1) Configuration de Pretty URLs
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set htaccess.RewriteBase --value="/" sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess |
Pretty URLs permet de supprimer le « index.php » dans la barre d’adresse.
3.2) Forcer HTTPS
Edition du fichier .htaccess
:
1 |
sudo nano /var/www/nextcloud/.htaccess |
Se rendre à la fin du fichier et renseigner les lignes suivantes juste avant la balise <IfModule mod_env.c>
et avant l’instruction RewriteBase /
:
1 2 |
RewriteCond %{HTTPS} !=on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
3.3) Suppressions des fichiers par défaut
Le répertoire modèle utilisé lors de la création d’un profil utilisateur se trouve dans : /var/www/nextcloud/core/skeleton/Documents/
1 2 3 4 |
sudo rm -r "/var/www/nextcloud/core/skeleton/Documents/" sudo rm -r "/var/www/nextcloud/core/skeleton/Photos/" sudo rm "/var/www/nextcloud/core/skeleton/Nextcloud intro.mp4" sudo rm "/var/www/nextcloud/core/skeleton/Nextcloud.png" |
L’exemple ci-dessus supprime les répertoires et les fichiers et ne garde que le fichier Nextcloud Manual.pdf
Bien entendu, de nouveaux fichiers et répertoires peuvent être rajoutés en fonction du besoin.
3.4) Installation et Activation d’applications dans Nextcloud
External storage support :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ app:install files_external sudo -u www-data php /var/www/nextcloud/occ app:enable files_external |
Application permettant de se connecter à des partages externes (SMB, FTP etc…).
LDAP user and group backend :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ app:install user_ldap sudo -u www-data php /var/www/nextcloud/occ app:enable user_ldap |
Application permettant de se connecter à un annuaire LDAP (Exemple : Active Directory).
Mise à jour de toutes les applications
1 |
sudo -u www-data php /var/www/nextcloud/occ app:update --all |
3.5) Gestion des fichiers supprimés (Corbeille)
L’application Deleted files installée par défaut gère les fichiers supprimés en fonction du paramètre trashbin_retention_obligation du fichier config.php
.
Vérification du paramètre trashbin_retention_obligation :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:get \ trashbin_retention_obligation |
A noter : Si aucune valeur n’est retournée, la configuration par défaut sera utilisée.
Modification du paramètre trashbin_retention_obligation :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set \ trashbin_retention_obligation --value="auto, 15" |
Les fichiers seront définitivement supprimés au bout de 15 jours.
Si la taille de l’ensemble des fichiers supprimés dépassent la limite autorisée (par défaut 50% de l’espace libre), l’application Deleted files supprimera les fichiers les plus anciens jusqu’à descendre en dessous de la limite autorisée.
Forcer la suppression définitive des fichiers supprimés ne respectant plus les conditions de rétention
1 |
sudo -u www-data php /var/www/nextcloud/occ trashbin:expire |
Forcer la suppression définitive de tous les fichiers supprimés
1 |
sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users |
Il est possible de remplacer --all-users
par le nom des utilisateurs séparés par des espaces.
Pour un utilisateur provenant de l’annuaire LDAP, il faudra utiliser son ID.
Pour aller plus loin : Nextcloud – Deleted Items (trash bin) et Nextcloud – Occ Trashbin
3.6) Tâches de fond
Pour son bon fonctionnement, Nextcloud exécute régulièrement des tâches de fond (Jobs).
Exemple de tâche : Scan à la recherche de nouveaux fichiers.
Par défaut, ces tâches sont exécutées à chaque chargement de page.
Cependant, si personne ne visite le site, aucune tâche ne sera exécutée.
Il est donc recommandé d’utiliser Cron afin d’exécuter ces tâches de manière régulière sans intervention humaine.
Création de la tâche Cron :
1 |
sudo crontab -u www-data -e |
Ajouter la ligne suivante à la fin du fichier :
1 |
*/5 * * * * php -f /var/www/nextcloud/cron.php |
Le fichier cron.php contenant les tâches Nextcloud sera exécuté toutes les 5 minutes.
Cet intervalle peut être modifié en remplaçant le 5 par une autre valeur.
Configuration du type de tâche dans Nextcloud :
1 |
sudo -u www-data php /var/www/nextcloud/occ background:cron |
Attention aux espaces. Problème constaté lors du copier/coller sous Firefox 107.0.1.
Configuration des horaires de maintenance dans Nextcloud :
1 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set maintenance_window_start --type=integer --value=1 |
Pour aller plus loin, vous pouvez consulter la page Background jobs de la documentation officielle.
3.6) Configuration de la langue du profil
Rentrer dans le menu « Paramètres » :
Dans le panneau de gauche, sélectionner « Informations personnelles ».
Régler la Langue et les Paramètres régionaux :
Il est également possible de définir les autres paramètres (Adresse email, téléphone etc…)
3.7) Vérification de Mise à Jour
Cliquer sur « Vue d’ensemble » sous « Administration ».
4) Connexion à LDAP ou Active Directory
Cette étape et facultative, si vous n’avez pas d’annuaire LDAP, passez à l’étape suivante.
Grâce à l’application LDAP user and group backend, il est possible de connecter Nextcloud à un Annuaire LDAP (Exemple : Active Directory avec Samba 4).
4.1) Configuration LDAP
Se rendre dans le menu Paramètres puis Intégration LDAP/AD et renseigner les informations de connexion au serveur LDAP ou Active Directory.
Serveur
Remarque :
Si votre annuaire LDAP est sur un Serveur AD Samba 4.
Il faudra rajouter la ligne ldap server require strong auth = no
dans la section [global] du fichier de configuration de samba 4 (Généralement /etc/samba/smb.conf).
Un redémarrage du service Samba sera nécessaire : systemctl restart samba.service
Utilisateurs
Attributs de login
Groupes
Les utilisateurs et les groupes de l’AD sont maintenant disponibles dans Nextcloud.
5) Utilisateurs et Groupes
5.1) Création Utilisateurs et Groupes
Se rendre dans le menu Utilisateurs.
5.2) Administrateurs Nextcloud
Pour définir un utilisateur en tant qu’Administrateur, il faut l’ajouter au groupe « admin ».
6) Stockages Externes
6.1) Configuration générale
Grâce à l’application External storage support, il est possible de se connecter à des stockages externes (Exemple : SMB, FTP etc…).
Nous allons, dans l’exemple qui suit, nous connecter à un partage SMB/WINDOWS de notre serveur TrueNAS (Installé grâce à notre Tutoriel TrueNAS).
Se rendre dans Paramètres, Stockages externes :
6.2) Autoriser le Partage
Pour que les utilisateurs puissent partager des fichiers provenant du stockage externe, il faudra activer l’option "Permettre le partage"
.
Cliquer sur les « … » et cocher l’option « Permettre le partage ».
7) Optimisation de Nextcloud
A partir d’ici, le serveur Nextcloud est fonctionnel.
Cependant, des problèmes de performances peuvent se faire ressentir.
Pour s’en prévenir, il faut suivre quelques recommandations de la documentation officielle de Nextcloud.
7.1) Base de données
Sources : Documentation Nextcloud – MariaDB/MySQL
Edition du fichier mysql.cnf
:
1 |
sudo nano /etc/mysql/conf.d/mysql.cnf |
Contenu :
1 2 3 |
[mysqld] innodb_buffer_pool_size=512M innodb_io_capacity=4000 |
Attention, il s’agit de la section mysqld.
Exemple :
Il est possible d’aller plus loin dans l’optimisation en utilisant cette documentation : Documentation Nextcloud – Configuring a MySQL or MariaDB database
Edition du fichier my.cnf
:
1 |
sudo nano /etc/mysql/my.cnf |
Contenu :
1 2 3 |
[mysqld] transaction_isolation = READ-COMMITTED binlog_format = ROW |
Exemple :
Redémarrage MariaDB :
1 |
sudo systemctl restart mariadb.service |
7.2) PHP – Modification memory_limit et désactivation output_buffering
Valeur initiale :
1 |
cat /etc/php/8.3/apache2/php.ini | egrep "memory_limit|^output_buffering" |
Modification :
1 2 3 |
sudo sed -i -e "s/^memory_limit \+= \+.*$/memory_limit = 512M/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^output_buffering \+= \+.*$/output_buffering = 0/g" /etc/php/8.3/apache2/php.ini sudo systemctl restart apache2.service |
Modification du paramètre memory_limit à 512M minimum pour le bon fonctionnement de Nextcloud.
Cette valeur peut être augmentée en fonction du besoin.
Vérifications :
1 |
cat /etc/php/8.3/apache2/php.ini | egrep "memory_limit|^output_buffering" |
7.3) Configuration de Redis
Source : Documentation Nextcloud – Redis
Ajout de l’utilisateur www-data au groupe redis :
1 |
sudo usermod -a -G redis www-data |
Configuration du fichier redis.conf
:
1 2 3 |
sudo sed -i -e "s/^#* *port +*6379$/port 0/g" /etc/redis/redis.conf sudo sed -i -e "s/^#* *unixsocket +*.*$/unixsocket \/var\/run\/redis\/redis-server.sock/g" /etc/redis/redis.conf sudo sed -i -e "s/^#* *unixsocketperm+*.*$/unixsocketperm 770/g" /etc/redis/redis.conf |
Merci à Modoki pour sa remarque dans la section commentaire.
Vérification :
1 |
sudo cat /etc/redis/redis.conf | egrep "^#* *port +|^#* *unixsocket +|^#* *unixsocketperm +" |
Redémarrage de Redis :
1 |
sudo systemctl restart redis-server.service |
7.4) File Locking et Memory Cache
Source : File Locking et Memory Caching
Activation de filelocking :
1 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set filelocking.enabled --value="true" |
Configuration du Redis :
1 2 3 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis host --value="/var/run/redis/redis-server.sock" sudo -u www-data php /var/www/nextcloud/occ config:system:set redis port --value="0" sudo -u www-data php /var/www/nextcloud/occ config:system:set redis timeout --value="0.0" |
Configuration de memcache.distributed (à effectuer après la configuration de Redis) :
1 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.distributed --value="\OC\Memcache\Redis" |
Configuration de memcache.local et memcache.locking :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.local --value="\OC\Memcache\Redis" sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.locking --value="\OC\Memcache\Redis" |
Vérification :
1 2 3 |
sudo cat /var/www/nextcloud/config/config.php | \ egrep "'filelocking\.enabled|'memcache\.local\ |'memcache\.locking|'host|'port|'timeout|'memcache\.distributed" |
Redémarrage d’Apache :
1 |
sudo systemctl restart apache2.service |
7.5) Activation de PHP OPcache
Source : Documentation Nextcloud – Enable PHP OPcache
Edition du fichier php.ini
:
1 2 3 4 5 6 7 |
sudo sed -i -e "s/^;* *opcache\.enable *= *.*$/opcache.enable=1/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.memory_consumption *= *.*$/opcache.memory_consumption=128/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.interned_strings_buffer *= *.*$/opcache.interned_strings_buffer=8/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.max_accelerated_files *= *.*$/opcache.max_accelerated_files=10000/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.revalidate_freq *= *.*$/opcache.revalidate_freq=60/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.save_comments *= *.*$/opcache.save_comments=1/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *opcache\.interned_strings_buffer *= *.*$/opcache.interned_strings_buffer=16/g" /etc/php/8.3/apache2/php.ini |
Vérification :
1 2 3 4 5 |
cat /etc/php/8.3/apache2/php.ini | \ egrep "^;* *opcache\.enable *=|^;* *opcache\.interned_strings_buffer *=\ |^;* *opcache\.max_accelerated_files *=|^;* *opcache\.memory_consumption *=\ |^;* *opcache\.save_comments *=|^;* *opcache\.revalidate_freq *=\ |^;* *opcache\.interned_strings_buffer*=" |
Redémarrage d’Apache :
1 |
sudo systemctl restart apache2.service |
7.6) Taille limite de téléchargement
Source : Documentation Nextcloud – Uploading big files
Edition du fichier php.ini
:
1 2 |
sudo sed -i -e "s/^;* *upload_max_filesize *= *.*$/upload_max_filesize=16G/g" /etc/php/8.3/apache2/php.ini sudo sed -i -e "s/^;* *post_max_size *= *.*$/post_max_size=16G/g" /etc/php/8.3/apache2/php.ini |
Vérification :
1 |
cat /etc/php/8.3/apache2/php.ini | egrep "^;* *upload_max_filesize *=|^;* *post_max_size *=" |
Redémarrage d’Apache :
1 |
sudo systemctl restart apache2.service |
8) Certificat SSL avec Let’s Encrypt
8.1) Explications
Pour accéder au serveur Nextcloud depuis l’extérieur, il est fortement recommandé de le faire au travers du protocole HTTPS.
Grâce aux étapes précédentes, le serveur Nextcloud force l’utilisation du protocole HTTPS.
Cependant, le certificat SSL utilisé est un certificat auto-signé et n’est pas considéré comme fiable par les navigateurs. Ces derniers afficheront donc un avertissement.
Exemple d’avertissement :
Afin de ne pas faire fuir les futurs visiteurs, nous utiliserons Let’s Encrypt pour générer et mettre en place gratuitement un certificat reconnu.
8.2) Génération d’un certificat SSL avec Let’s Encrypt
Le procédure d’obtention de certificat que nous utiliserons nécessite que le serveur soit joignable depuis l’extérieur via le port 80.
Généralement, cela est possible en effectuant une redirection de port depuis votre Routeur ou Box Internet.
Source : https://certbot.eff.org/lets-encrypt/ubuntubionic-apache.html
Activation du dépôt universe :
1 2 3 4 |
sudo apt update -y sudo apt install -y software-properties-common sudo add-apt-repository universe sudo apt update -y |
Installation de Certbot et du plugin pour Apache :
1 |
sudo apt install -y certbot python3-certbot-apache |
Génération et installation du Certificat :
1 |
sudo certbot --apache -d nextcloud.domaine.fr -m monadresse@mail.fr --no-redirect |
Remplacer nextcloud.mondomaine.dom par le nom de votre domaine.
Remplacer monadresse@mail.fr par votre adresse mail.
no-redirect car plus haut dans le tutoriel, nous avons déjà forcé la redirection vers HTTPS.
Si vous n’avez pas suivi la méthode de redirection du tuto ou si vous souhaitez quand même que Certbot se charge de la redirection il faudra utiliser le paramètre --redirect
.
Test renouvellement automatique :
1 |
sudo certbot renew --dry-run |
Visualisation de la tâche de renouvellement :
1 |
sudo systemctl list-timers certbot |
Visualisation des noms de domaine autorisés dans Nextcloud :
1 |
sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains |
Ajout d’un nom de domaine dans Nextcloud :
1 2 |
sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 1 \ --value=nextcloud.domaine.dom |
Le 1 est l’index dans la liste des domaines autorisés (0 étant le 1er)
–value= est suivi du nom de domaine à autoriser.
9) Sauvegarde de Nextcloud
Source : Nextcloud Backup
Création des répertoires de sauvegarde :
1 2 3 4 5 6 7 8 |
# Fichiers sudo mkdir -p /backups/nextcloud/files # Base de données sudo mkdir -p /backups/nextcloud/database # Permissions sudo chmod -R o-rwx /backups/ |
Activation du mode Maintenance :
1 2 3 4 5 |
# Activation sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on # Vérification sudo -u www-data php /var/www/nextcloud/occ maintenance:mode |
Sauvegarde des fichiers dans un répertoire /backups/nextcloud/
:
1 2 3 4 |
# Sauf répertoire data et corbeille sudo rsync -Aavx /var/www/nextcloud/ \ /backups/nextcloud/files/nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/ \ --exclude={'data/*','*/files_trashbin/files/*'} |
Le répertoire de sauvegarde sera /backups/nextcloud/files/nextcloud-backup_20201010_153025/
pour une sauvegarde effectuée le 10 Octobre 2020 à 15:30:25.
Important : Si vous souhaitez tout de même sauvegarder le répertoire data et la corbeille, il faudra supprimer le paramètre --exclude
.
Sauvegarde de la base de données MySQL/MariaDB :
1 2 |
sudo mysqldump --single-transaction -h localhost -u root nextcloud | \ sudo tee /backups/nextcloud/database/nextcloud-sqlbkp_`date +"%Y%m%d_%H%M%S"`.bak |
-h : nom ou IP du serveur de base de données
-u : utilisateur de la base de données
-p : mot de passe de l’utilisateur
Attention :
– Pas d’espace entre -p et le mot de passe
– Remplacer VotreMotDePasse par le mot de passe de l’utilisateur.
Désactivation du mode Maintenance :
1 2 |
# Désactivation sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off |
Exemple de script de sauvegarde :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#!/bin/bash # Path nextcloudPath=/var/www/nextcloud/ occPath=$nextcloudPath\occ sourcePath=/var/www/nextcloud/ mainDestinationPath=/backups/nextcloud/`date +"%Y/%m"`/ filesDestinationPath=$mainDestinationPath\files/ databaseDestinationPath=$mainDestinationPath\database/ # Database dbhost=$(cat $nextcloudPath\config/config.php | egrep "dbhost" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//') dbname=$(cat $nextcloudPath\config/config.php | egrep "dbname" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//') dbuser=$(cat $nextcloudPath\config/config.php | egrep "dbuser" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//') dbpassword=$(cat $nextcloudPath\config/config.php | egrep "dbpassword" | sed 's/^.*\=> *'\''//' | sed 's/'\'',.*$//') # Verbose cyan='\e[1;36m' white='\e[1;37m' neutral='\e[0;m' echo -e "${cyan}dbhost : ${white}$dbhost${neutral}" echo -e "${cyan}dbname : ${white}$dbname${neutral}" echo -e "${cyan}dbuser : ${white}$dbuser${neutral}" #echo -e "${cyan}dbpassword : ${white}$dbpassword${neutral}" read -t 10 -p "The backup will start after 10 seconds" || true # Destinations creation mkdir -p $filesDestinationPath mkdir -p $databaseDestinationPath chmod -R o-rwx /backups/ # Maintenance mode activation sudo -u www-data php $occPath maintenance:mode --on # Database backup mysqldump --single-transaction -h $dbhost -u $dbuser -p$dbpassword $dbname > $databaseDestinationPath\nextcloud-sqlbkp_`date +"%Y%m%d_%H%M%S"`.bak # Files backup rsync -Aavx $sourcePath $filesDestinationPath\nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/ --exclude={'data/*','*/files_trashbin/files/*'} #rsync -Aavx $sourcePath $filesDestinationPath\nextcloud-backup_`date +"%Y%m%d_%H%M%S"`/ # Maintenance mode deactivation sudo -u www-data php $occPath maintenance:mode --off exit 0 |
Sauvegarde de base de données MySql/MariaDB.
Exemple de restauration : Nextcloud – Restoring backup
10) Mise à jour de Nextcloud
Source : Nextcloud Upgrade
Lancement du programme de mise à jour :
1 |
sudo -u www-data php /var/www/nextcloud/updater/updater.phar |
Pour un lancement sans interaction utilisateur, il faudra le lancer en mode Batch en rajoutant l’argument --no-interaction
La ligne Update of code successful
confirme que la mise à jour des fichiers est terminée.
La ligne Update successful
confirme que la mise à jour est terminée.
Voilà ! C’est terminé !
Vous avez enfin créé votre Cloud personnel grâce à Nextcloud.
Il ne reste plus qu’à :
- Créer vos propres utilisateurs
- Configurer votre routeur pour que nextcloud soit accessible depuis l’extérieur
- Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés.
- Visiter la page de la documentation officielle pour aller encore plus loin.
- Faire un don pour soutenir notre travail
En savoir plus sur Jj World
Subscribe to get the latest posts sent to your email.
Bravo Kévin !
Le fond, la forme, la clarté, la précision, j’apprécie. Merci.
Super Kévin !
Ayant déjà pratiquer une installation manuelle de NextCloud, toutes les instructions sont présentes et bien détaillées 🙂
Utilisant également Debian comme OS, il manque pour être totalement complet une préconisation pour sizer correctement les différentes partitions LVM du système (je ne suis pas sûr d’avoir fait les bons choix…)
Bonjour, je suis novice dans les commande de line (toujours été sur windows)
J’ai un un message d’erreur quand je rentre ses lignes
mysql -u root <<-EOF
UPDATE mysql.user SET Password=patate WHERE User='root';
…
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?) WHERE User='root'' at line 1
Comme vous pouvez voir j'ai modifier le mot de passe mais est ce la seule chose a modifier?
Merci d'avance :p
Bonjour yandesiles974,
Il faut modifier uniquement la chaine de caractères indiquée.
Dans ton exemple ça serait plutôt :
UPDATE mysql.user SET Password=PASSWORD(‘patate’) WHERE User=’root’;
Merci beaucoup, ça fonctionne 🙂
Bonjour,
Un tuto comme j’aime hyper bien détailler rare de trouver une explication aussi bien faite.
Merci.
Bonjour,
Merci pour ce tuto excellent. Un travail au top 🙂
Bonjour,
Excellent tuto, mais je suis bloqué à l’activation de Redis ! Je reçois une “Internal server error” après avoir fait les modifs indiquées, mais je n’ai aucun répertoire \OC\Memcache\Redis, car j’utilise Virtualmin et ce chemin n’existe pas. Vers quoi dois-je pointer mes variables memcache.local, .locking et .distributed ?
Par ailleurs, à quoi sert exactement OPcache ?
Merci d’avance pour toute aide !
Bonjour,
Je ne sais quoi dire à part MERCI , merci pour ce fabuleux tuto, je vais pas dire que c est le seul qui est parfait mais pas loin; Alors merci à toi du temps que tu as passé à le faire
Rarement vu un tuto aussi complet et détaillé!! Un grand Bravo!
Bonjour,
Un grand merci pour le tuto.
Salut !
J’utilise Debian 11 dans un container proxmox et redis-server ne voulait pas se lancer.
J’ai dû faire, sur les recommandations de https://stackoverflow.com/questions/49670211/failed-to-start-advanced-key-value-store-redis-server-service-control-process-e :
chown -R redis:redis /var/log/redis
chmod -R u+rwX,g+rwX,u+rx /var/log/redis
chmod +r /etc/redis/redis.conf
Il est possible qu’il faille activer le nesting du container mais pas sûr que ça serve vraiment.
Aussi « sed -i -e « s/^#* *port +*.*$/port 0/g » /etc/redis/redis.conf » met aussi ce port 0 pour le TLS.
Suite à la vérification de la config j’ai donc deux fois « Port 0 » qui s’affiche. Je ne sais pas si c’est voulu ou pas, j’ai recommenté le port 0 dans la partie TLS de la config.
Merci pour ta remarque Modoki.
J’ai modifié la commande « sed » qui permet de modifier le port d’écoute.
Merci pour ce super tuto. Je suis plutôt dans la catégorie « power user » que « teckos pur et dur ». Je m’en suis sorti après avoir suivi plusieurs autres tutos sans succès. J’ai fait l’installation sur une VM hébergée sur ma Freebox delta sur une debian11 arm64
Le meilleur tuto trouvé sur le net et le seul qui fonctionne sans erreur. Bravo !
Si comme moi vous êtes derrière un Opnsense + HAproxy et avez confié la gestion des certificats au plugin acme client de Opnsense (donc sautez la section ssl du tuto); noubliez pas de ne pas spécifier le port et cocher ssl dans « real server » et d’ajouter l’url publique dans les domaines de confiance (dans le fichier de conf de nextcloud config.php) :
‘trusted_domains’ =>
array (
0 => ‘192.168.xx.xx’,
1 => ‘cloud.xxxx.com’,
),
Juste un petit ajout qui améliore la perf : http2
a2enmod http2
systemctl restart apache2
Bonjour
Quelles sont les caractéristiques du serveur (machine virtuelle) pour une école de 300 utilisateurs
?
Bonjour,
Merci pour ce tuto d’une rare qualité.
Cependant j’aimerais que Nextcloud soit accessible par IP/nextcloud.
C’est un Nextcloud sur un raspberry en local. Pas de nom de domaine.
Pouvez-vous m’indiquer la marche à suivre s’il vous plaît?
Merci d’avance!
Bonjour,
Superbe tuto! Merci!!!
Pouvez-vous m’indiquer la marche à suivre pour avoir Nextcloud (raspberry, uniquement en local) comme ceci: ip_locale/nextcloud
Merci d’avance!
Bonjour,
Je te renvoie à la partie #8 du tutoriel https://www.jjworld.fr/installer-nextcloud-creer-son-cloud-personnel/#8_Certificat_SSL_avec_Letrsquos_Encrypt.
Plus précisément les sous-parties :
– Visualisation des noms de domaine autorisés dans Nextcloud
– Ajout d’un nom de domaine dans Nextcloud
Nextcloud devrait être accessible avec http://AdresseIP ou https://AdresseIP.
Cordialement.
Merci beaucoup!
Bonjour,
Un grand merci 😉
Cela fonctionne maintenant sur ma Freebox Delta avec une VM en Debian 11 (sauf le chapitre Universe > pour Ubuntu ?)
Cdt.
Un tutoriel chirurgical comme on aimerait avoir plus souvent ! Un grand merci Kevin pour le temps passé à la réalisation. Je suis débutant dans le monde linux, j’utilise actuellement TrueNAS 13 et impossible d’installer Nextcloud 23 avec le plugin et j’ai essayé aussi d’autres scripts sans succès. Je voudrais savoir si en installant une vm Ubuntu dans TrueNas je pouvais utiliser ton tutoriel sans rien changer au niveau des cmd t’elle qu’elle ?
Merci pour ta réponse et passe une bonne journée
Sblooga,
Merci pour ton retour, ça fait toujours plaisir de voir que ça aide des gens.
C’est actuellement la solution que j’utilise.
Nextcloud 23 installé sur une VM Debian 11 hébergée par mon serveur TrueNas.
Donc aucun soucis pour utiliser le tutoriel.
Merci Kévin je vais commencer par installer la VM Debian ensuite je passerai sur l’installe de Nextcloud en espérant que tout se passe bien. A bientôt passe une bonne journée
J’aurai tout de même une question Kévin, pourquoi avoir choisi plutôt Debian que Ubuntu ? C’est un choix personnel ou c’est par rapport à la prochaine évolution de TrueNas Scale qui sera décliné sous Debian ? Comme je débute dans le monde Linux moi, je n’ai pas d’à priori sur les différentes distributions. C’est juste par curiosité ! 😁😉
sblooga, C’est un choix personnel.
Bonjour,
Quand je veux me connecter pour la premiere fois j’ai ce message d’erreur:
Error while trying to create admin user: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [1045] Access denied for user ‘nextcloud’@’localhost’ (using password: YES)
Pouvez vous m’aidez ?
Quelque chose a peut être changé dans mysql.
J’ai modifié la ligne de commande dans la section concernée pour éviter le message d’erreur.
Excellent tutoriel, un grand grand merci pour toutes ces explications claires et bien détaillées !
Salut Kevin !!
Un grand merci principalement pour la partie optimisations !!
Précieuses informations pour les novices de Nextcloud, de PHP, de redis, etc….
Merci aussi au commentaires de certains : Modoki, Jobino, et les autres !!
Cette solidarité des pontes de l’adminsys et du dev est si précieuse pour les pauvres autodidactes comme moi !!
Merci merci merci merci !!!
Stef
Bonjour Kevin,
Le tuto est très bien détaillé et expliqué mais j’aimerai pouvoir le mettre en pratique si quelqu’un venait à mon aide pour m’indiquer comment franchir « sélection des logiciels » dans l’installation de DEBIAN 11!!!. Tout s’installe selon tes directives jusqu’à la sélection des logiciels qui bloque.
Merci d’avance
Merci, génial !
Bonjour / Bonsoir , j’ai quelques difficultées à partir de la section « 2.2 » , il m’est impossible de change le mot de passe root
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘VotreMotDePasse’);
J’ai une erreur:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
Auriez-vous une suggestion ?
Sconio, quelque chose a peut être changé dans mysql.
J’ai modifié la ligne de commande dans la section concernée pour éviter le message d’erreur.
Bonjour Kévin,
Je te remercie sincèrement pour ton travail.
Si tu en as d’autres des comme ça, n’hésites pas 😉
Bonne continuation
Bonjour Kevin,
Bravo et merci pour ton superbe tuto !
Une question :
Je passe par le reverse proxy de mon NAS Synology, ça fonctionne très bien mais je n’arrive pas à me débarrasser de l’avertissement de sécurité dans NextCloud (25) : « La configuration des entêtes du reverse proxy est incorrecte, ou vous accédez à Nextcloud depuis un proxy de confiance. »
Ou peut-être que je ne dois pas faire attention à ce message, mon certificat let’s encrypt étant ok…
Bonjour et merci Gauthier,
Je crois avoir rencontré le même problème avec mon reverse proxy Nginx.
Ce que tu cherches se trouve ici : https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html#defining-trusted-proxies
Pour vérifier la liste des proxy de confiance :
sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_proxies
Pour ajouter un proxy de confiance :
sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_proxies 0 –value=xxx.xxx.x.x
0 étant l’index dans la liste. Il faudra mettre 1 puis 2 si tu as d’autres reverses proxy à rajouter.
Ah ben oui !
Merci pour ta réponse !!!
J’avais essayé avec le nom de domaine ou avec l’ip de mon proxy, mais pas les 2…
Bonjour Kevin, tuto formidablement complet, précis et détaillé. Bravo.Etant débutant autodidacte linux et lignes de commande, l’installation d’un serveur n’est pas chose aisée. J’en suis à ma 5ième tentative d’installation nextcloud sur disque externe à partir d’un debian 11 sur raspberry non satisfaisantes avec la version nextcloud 25.0.1. Tout s’est correctement déroulé lors de l’application de votre tuto, pourtant, lors du lancement de nextcloud en http comme https, j’ai la même erreur 404. J’ai vérifié les droits d’accès au dossier nextcloud (770 pour www-data), ainsi que ceux de mariadb. Pas de message d’erreur sur error.log, access.log, syslog, auth.log. Le journal de nextcloud n’est pas édité car pas de dossier data vu l’échec de l’install de nextcloud. Je suis sec. Quelqu’un aurait-il une piste?
Bonjour,
Merci pour ce tuto, il fonctionne bien 🙂 il manque une partie pour faire fonctionner Nextcloud + CODE intégré pour Nextcloud office a travers un reverse proxy.
Je n’y arrive pas.. Nextcloud + CODE est ok en direct, mais derriere mon reverse proxy seul nextcloud fonctionne.
Et également, la partie user root pour maradb n’est pas necessaire, depuis debian 11 (ou meme 10) on se connecte a la base avec les utilisateurs linux, donc un $sudo mysql se connecte en root.
Bonjour,
J’ai enfin réussi, je pense qu’il peut etre pas mal d’ajouter dans le tuto.
Pour utiliser Nexcloud avec collabora derriere un reverse proxy nginx, j’ai du crée un bloc spécifique pour collabora qui est sur le port 9983 de la meme machine :
Voici le bloc en question :
location / {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://%5BIPserver%5D:9983/;
client_max_body_size 16G;
}
Bonjour Kévin,
Super tutoriel ! Merci !
Je viens d’installer Nextcloud sur une VM sur ma Freebox Delta.
La seule chose que je n’arrive pas à faire c’est permettre l’accès depuis l’extérieur.
La Freebox Delta me permet déjà d’avoir un nom de domaine sécurisé.
J’ai donc réenregistré celui-ci dans Nextcloud et cela semble avoir fonctionné, mais je ne vois pas bien comment accéder à Nextcloud depuis l’extérieur par la suite. En renseignant le nom de domaine de ma Freebox, cela me donne une page en erreur.
Mais je réessairerai plus tard.
I just want to tell you that I am very new to blogging and honestly savored this web blog. More than likely I’m want to bookmark your website . You really come with very good well written articles. Many thanks for sharing your web-site.
Hello Kevin,
1000 merci pour ce mega tuto hallucinant ! C’est très bien expliqué, rédigé et documenté.
Je crois bien que c’est la première fois que je lis un tuto aussi complet !! Bravo ! Kevin vous avez mis des pailettes dans mes yeux !!! Désolé je pouvais pas m’empécher de la faire 🙂
N’éanmoins j’ai rencontrer quelques bricoles mineures et si vous avez du temps je serais ravi d’avoir votre aide.
1/ Au point 3.2 (Forcer HTTPS), dès que je place les deux balises rewrite dans le .htaccess mon site est en erreur.
Sur mon url local 192.168.1.48 j’ai une page blanche (The requested URL was not found on this server.) et quand je passe par mon domaine https://www…. j’ai bien la page de login qui apparaît mais impossible de me connecter, mes identifiants admin ne sont pas reconnus :/
2/ Au point 9 (Sauvegarde de Nextcloud) j’ai corrigé/adapté la ligne de code pour le mysqldump de la bdd. Elle fontionne bien quannd vous l’expliquez au tout début mais dans le script final elle ne fonctionne plus. En retirant le critère « -h $dbhost » et en encadrant la variable $dbpassword avec des apostrophes (le passw était refusé) tout fonctionne.
3/ Votre script de sauvegarde est très complet mais peut être amélioré si vous me permettez quelques idées :
– Pourquoi ne pas faire une archive des données avec une ligne de ce type (tar -czvf $cheminbackup/
echo $now
_backup.tar.gz /var/www/nextcloud)– Si on planifie un backup quotidien on risque de se retrouver rapidement saturé de backup, pourrais tu ajouter une partie qui permettrait tel logrotate de faire le ménage pour ne conserver que le dernier mois ou bien les x dernière sauvegardes ?
Voila c’est tout c’est déjà pas mal, encore une fois 1000 merci pour ton travail de pro !
Bonjour
Un vrai tuto de rêve , c’est vraiment un tres beau travail , grâce a vous j’ai pour la premiere une solution Nextcloud auto-hebergé qui tient la route, et d’ailleur c’est cette difficulté qui depuis des années me fait utilisé Seafile ( qui est exellent mais qui est vraiement basé sur la syncronistation et le partage ) et j’avais envie aujourd’hui de Nexcloud et de ses application tierce .
MERCI et bravo
Bonjour,
merci pour cet excellent tuto.
cependant, j’ai noté que : opcache.revalidate_freq=60 et non 1
et aussi : \OC\Memcache\Redis et APCu
Bien @ toi
Bonjour a tous excellent tuto,
Pour être honnête, c’est des plus complet que j’ai vu (en français en plus).
1 – >Je l’ai installer via docker pour mon entreprise mais je rencontre des soucis de ralentissement lorsque les utilisateurs se connecte par internet (15 seconde pour ouvrir un fichier excel via onlyoffice)
2 -> une erreur d’adresse ip qui bloque la connexion 30 sec
3 -> l’addresse ip apparait lors de partage des cercles alors que le domaine est bien renseigner
4 -> depuis le passage en 26, l’indexation ne fonctionne et j’avais un soucis (surement php) qui bloquais l’indexation a 512 Mb après il plante (d’ailleurs comment peut on implémenter correctement elasticsearch via docker ??)
Merci de votre aide
Merci pour ce super travail, toujours du travail bien chiadé :). Installation d’une VM nextcloud et une docker en local sur un ubuntu 22.04 sans difficulté. Restera à choisir et acheter le matériel nécessaire.
Merci pour ton retour Mister TheCat 😉
C’est encore un truc bien chiader de notre ami JJ!
Superbe sit lol
Un énorme merci
Trés trés bon tuto ! Merci beaucoup pour le travail et le partage !