Nextcloud 28 (Nextcloud Hub 7) – Interface de connexion
Nous allons, dans ce tutoriel, créer un Cloud personnel en installant Nextcloud.
Pour finir, nous optimiserons notre installation afin d’améliorer les performances de notre Cloud Personnel.
jjworld.frhttps://www.jjworld.fr/installer-nextcloud-creer-son-cloud-personnel/
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.
timedatectl set-timezone Europe/Paris hwclock -w timedatectl status
Vous pouvez obtenir la liste des fuseaux horaire acceptés en utilisant la commande : timedatectl list-timezones
apt -y update && apt -y upgrade
La version 8.2 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.2 :
apt install -y lsb-release apt-transport-https ca-certificates && \ 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” |\ tee /etc/apt/sources.list.d/php.list && \ apt update -y
apt install -y software-properties-common\ add-apt-repository -y ppa:ondrej/php\ apt update -y
export DEBIAN_FRONTEND=noninteractive
# Installation des paquets (dont sudo pour Debian 11 et Debian 12)
apt-get install -y apache2 mariadb-server libapache2-mod-php8.2 imagemagick \ php8.2-gd php8.2-mysql php8.2-curl php8.2-mbstring \ php8.2-intl php8.2-imagick php8.2-xml php8.2-zip \ php8.2-apcu redis-server php8.2-redis \ php8.2-ldap smbclient php8.2-bcmath php8.2-gmp \ sudo
wget https://download.nextcloud.com/server/releases/latest-28.tar.bz2
tar -xvf latest-28.tar.bz2 -C /var/www/
nano /etc/apache2/sites-available/nextcloud.conf
Contenu :
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>
# Activation du site nextcloud
a2ensite nextcloud.conf
Activation des modules </code> a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime </code> # SSL
a2enmod ssl a2ensite default-ssl
# Redémarrage service apache
systemctl restart apache2
chown -R www-data:www-data /var/www/nextcloud
sudo -u www-data php /var/www/nextcloud:occ -V sudo -u www-data php /var/www/nextcloud:occ status
Les commandes qui suivent sont l’équivalent du script interactif mysql_secure_installation.
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.
mysql –user=root –password=VotreMotDePasse <<-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.
Pour terminer l’installation, il va falloir se connecter à l’URL de votre serveur Nextcloud.
Exemple : https://192.168.1.203
1 : Nom du compte Administrateur Nextcloud
2 : Mot de passe du compte Administrateur
3 : Nom de l’utilisateur de base de données
4 : Mot de passe de la base de données
5 : Nom de la base de données
6 : Serveur hébergeant la base de données
Cliquer sur « Terminer l’installation ».
Une fois l’installation terminée, retourner dans l’invite de commande.
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.
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.
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 /
:
RewriteCond %{HTTPS} !=on\\ RewriteRule (.*) https:%%//%%%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
La première ligne RewriteCond est la condition.
La seconde est la règle de réécriture.
Le répertoire modèle utilisé lors de la création d’un profil utilisateur se trouve dans : /var/www/nextcloud:core/skeleton/Documents/
rm -r “/var/www/nextcloud:core/skeleton/Documents/” rm -r “/var/www/nextcloud:core/skeleton/Photos/” rm “/var/www/nextcloud:core/skeleton/Nextcloud intro.mp4” 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.
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…).
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).
sudo -u www-data php /var/www/nextcloud:occ app:update –all
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
.
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.
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.
sudo -u www-data php /var/www/nextcloud:occ trashbin:expire
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 aller plus loin : Nextcloud – Deleted Items (trash bin) et Nextcloud – Occ Trashbin
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.
crontab -u www-data -e
Ajouter la ligne suivante à la fin du fichier :
*/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.
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.
Pour aller plus loin, vous pouvez consulter la page Background jobs de la documentation officielle.
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…)
Se rendre dans le menu Utilisateurs.
Cliquer sur « Ajouter un groupe » pour créer un groupe.
Cliquer sur « Nouvel utilisateur » pour créer un utilisateur.
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).
Stockage externe : Type de stockage
Authentification : A choisir en fonction du contexte mais « Identifiants de connexion, sauvegardés dans la base de données » permet une meilleure compatibilité avec les services tels que l’application pour Smartphone et le client Windows.
Pour plus d’information sur les méthodes d’authentification, consulter la page officielle External Storage authentication mechanisms
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 ».
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.
Sources : Documentation Nextcloud – MariaDB/MySQL
nano /etc/mysql/conf.d/mysql.cnf
Contenu :
[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
nano /etc/mysql/my.cnf
Contenu :
[mysqld]\\ transaction_isolation = READ-COMMITTED\\ binlog_format = ROW
Exemple :
systemctl restart mariadb.service
cat /etc/php/8.2/apache2/php.ini | egrep “memory_limit|^output_buffering”
sed -i -e "s/^memory_limit \+= \+.*$/memory_limit = 512M/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^output_buffering \+= \+.*$/output_buffering = 0/g" /etc/php/8.2/apache2/php.ini 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.
cat /etc/php/8.2/apache2/php.ini | egrep “memory_limit|^output_buffering”
Source : Documentation Nextcloud – Redis
usermod -a -G redis www-data
sed -i -e "s/^#* *port +*6379$/port 0/g" /etc/redis/redis.conf sed -i -e "s/^#* *unixsocket +*.*$/unixsocket \/var\/run\/redis\/redis-server.sock/g" /etc/redis/redis.conf sed -i -e "s/^#* *unixsocketperm+*.*$/unixsocketperm 770/g" /etc/redis/redis.conf
systemctl restart redis-server.service
Source : File Locking et Memory Caching
Shell
# Activation de filelocking
sudo -u www-data php /var/www/nextcloud:occ config:system:set filelocking.enabled –value=“true”
# Configuration du Redis
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)
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
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”
cat /var/www/nextcloud:config/config.php | \ egrep “’filelocking\.enabled|’memcache\.local\ ’memcache\.locking|’host|’port|’timeout|’memcache\.distributed”
systemctl restart apache2.service
Shell
sed -i -e "s/^;* *opcache\.enable *= *.*$/opcache.enable=1/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.memory_consumption *= *.*$/opcache.memory_consumption=128/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.interned_strings_buffer *= *.*$/opcache.interned_strings_buffer=8/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.max_accelerated_files *= *.*$/opcache.max_accelerated_files=10000/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.revalidate_freq *= *.*$/opcache.revalidate_freq=60/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.save_comments *= *.*$/opcache.save_comments=1/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *opcache\.interned_strings_buffer *= *.*$/opcache.interned_strings_buffer=16/g" /etc/php/8.2/apache2/php.ini
cat /etc/php/8.2/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*=”
systemctl restart apache2.service
1 | systemctl restart apache2.service |
sed -i -e "s/^;* *upload_max_filesize *= *.*$/upload_max_filesize=16G/g" /etc/php/8.2/apache2/php.ini sed -i -e "s/^;* *post_max_size *= *.*$/post_max_size=16G/g" /etc/php/8.2/apache2/php.ini
systemctl restart apache2.service
SourceNextcloud Backup
# Fichiers
mkdir -p /backups/nextcloud:files
# Base de données
mkdir -p /backups/nextcloud:database
# Permissions
chmod -R o-rwx /backups/
# 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
# Sauf répertoire data et corbeille
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
.
mysqldump –single-transaction -h localhost -u nextcloud -pVotreMotDePasse nextcloud > \
/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
<html><br/></html>Attention :
– Pas d’espace entre -p et le mot de passe
– Remplacer VotreMotDePasse par le mot de passe de l’utilisateur.
# Désactivation
sudo -u www-data php /var/www/nextcloud:occ maintenance:mode –off
#!/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
Source : Nextcloud Upgrade
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
Faire le choix y
Appuyer sur la touche Entrée
La ligne Update of code successful
confirme que la mise à jour des fichiers est terminée.
Appuyer sur Entrée pour désactiver le mode maintenance.
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 à http://www.freenas.org/Nextcloud.
Il ne reste plus qu’à :