Nextcloud est une suite de logiciels client-serveur permettant de créer et d’utiliser des services d’hébergement de fichiers.
- Nginx Php MariaDb et Domaine
- Nginx
- PHP
- MariaDB
- Sous-Domaine et certificats
- Nextcloud Hub
- Dernière version Nextcloud
- Pool PHP-FPM Nextcloud
- Nextcloud Nginx headers,SSL,HSTS,OCSP
- Nextcloud Vhost nginx
- Nextcloud Nginx mimes
- Paramétrage Nextcloud
- Nextcloud Authentification
- Applications Nextcloud
- Mise à jour Nextcloud
- Nextcloud Sauvegarde Restauration
- Accès boîte de stockage
- Sauvegarde nextcloud
- Restauration nextcloud
- Synchronisation avec les clients
- Erreurs et corrections
Le nouveau design introduit avec les versions Nextcloud Hub repose sur 4 principes :
- l’accent sur le contenu
- la facilité d’utilisation
- une plus grande accessibilité
- possibilité de s’approprier le design.
Nginx Php MariaDb et Domaine
Nginx
https://techexpert.tips/fr/nginx-fr/
Nginx compilé
Nginx compilé obligatoire
# compilée
wget https://static.xoyize.xyz/files/compilation-nginx-tls1.3.sh
chmod +x compilation-nginx-tls1.3.sh # rendre le bash exécutable
./compilation-nginx-tls1.3.sh # exécution
nginx traitement demande
Serveurs virtuels basés sur le nom
nginx décide d’abord quel serveur doit traiter la requête. Commençons par une configuration simple où les trois serveurs virtuels écoutent sur le port *:80 :
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
...
}
Dans cette configuration, nginx teste uniquement le champ d’en-tête « Host » de la requête pour déterminer vers quel serveur la requête doit être acheminée.
Si sa valeur ne correspond à aucun nom de serveur ou si la requête ne contient pas du tout ce champ d’en-tête, alors nginx acheminera la requête vers le serveur par défaut pour ce port.
Dans la configuration ci-dessus, le serveur par défaut est le premier, ce qui correspond au comportement par défaut standard de nginx. Il peut également être défini explicitement quel serveur doit être par défaut, avec le paramètre default_server
dans la directive d’écoute :
server {
listen 80 default_server;
server_name example.net www.example.net;
...
}
Notez que le serveur par défaut est une propriété du port d’écoute et non du nom du serveur.
Comment empêcher le traitement des demandes avec des noms de serveur non définis
Si les requêtes sans le champ d’en-tête «Hosts» ne doivent pas être autorisées, un serveur qui supprime simplement les requêtes peut être défini :
server {
listen 80;
server_name "";
return 444;
}
Ici, le nom du serveur est défini sur une chaîne vide qui correspondra aux requêtes sans le champ d’en-tête « Host », et un code non standard spécial nginx 444 est renvoyé pour fermer la connexion.
Depuis la version 0.8.48, il s’agit du paramètre par défaut pour le nom du serveur, donc le server_name “” peut être omis. Dans les versions antérieures, le nom d’hôte de la machine était utilisé comme nom de serveur par défaut.
Un code d’état 444 indique généralement que le serveur n’a pas renvoyé de réponse au client et a fermé la connexion. Cela peut se produire pour plusieurs raisons, notamment
- Le serveur ou le réseau peut rencontrer un problème temporaire ou permanent qui l’empêche de répondre à la demande du client.
- Le client peut avoir fait une demande que le serveur n’est pas en mesure de traiter ou qui enfreint les règles du serveur, ce qui amène ce dernier à mettre fin à la connexion.
- Un pare-feu ou un logiciel de sécurité peut bloquer la demande ou la réponse, ce qui entraîne la fermeture de la connexion sans réponse.
Serveurs virtuels mixtes basés sur le nom et basés sur IP
Regardons une configuration plus complexe où certains serveurs virtuels écoutent sur différentes adresses :
server {
listen 192.168.1.1:80;
server_name example.org www.example.org;
...
}
server {
listen 192.168.1.1:80;
server_name example.net www.example.net;
...
}
server {
listen 192.168.1.2:80;
server_name example.com www.example.com;
...
}
Dans cette configuration, nginx teste d’abord l’adresse IP et le port de la requête par rapport aux directives d’écoute des blocs serveur . Il teste ensuite le champ d’en-tête « Host » de la requête par rapport aux entrées server_name des blocs de serveur qui correspondent à l’adresse IP et au port. Si le nom du serveur n’est pas trouvé, la requête sera traitée par le serveur par défaut. Par exemple, une requête www.example.com reçue sur le port 192.168.1.1:80 sera traitée par le serveur par défaut du port 192.168.1.1:80, c’est à dire par le premier serveur, puisqu’il n’y a pas de définition www.example.com pour ce port.
Comme déjà indiqué, un serveur par défaut est une propriété du port d’écoute, et différents serveurs par défaut peuvent être définis pour différents ports :
server {
listen 192.168.1.1:80;
server_name example.org www.example.org;
...
}
server {
listen 192.168.1.1:80 default_server;
server_name example.net www.example.net;
...
}
server {
listen 192.168.1.2:80 default_server;
server_name example.com www.example.com;
...
}
Une configuration simple de site PHP
Voyons maintenant comment nginx choisit un emplacement pour traiter une demande pour un site PHP simple et typique :
server {
listen 80;
server_name example.org www.example.org;
root /data/www;
location / {
index index.html index.php;
}
location ~* \.(gif|jpg|png)$ {
expires 30d;
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
nginx recherche d’abord l’emplacement de préfixe le plus spécifique donné par les chaînes littérales, quel que soit l’ordre indiqué. Dans la configuration ci-dessus, le seul emplacement du préfixe est «/ » et comme il correspond à toute demande, il sera utilisé en dernier recours. Ensuite, nginx vérifie les emplacements donnés par l’expression régulière dans l’ordre indiqué dans le fichier de configuration. La première expression correspondante arrête la recherche et nginx utilisera cet emplacement. Si aucune expression régulière ne correspond à une requête, nginx utilise l’emplacement de préfixe le plus spécifique trouvé précédemment.
Notez que les emplacements de tous types testent uniquement une partie URI de la ligne de requête sans arguments. Cela est dû au fait que les arguments dans la chaîne de requête peuvent être donnés de plusieurs manières, par exemple :
/index.php?user=john&page=1
/index.php?page=1&user=john
De plus, n’importe qui peut demander n’importe quoi dans la chaîne de requête :
/index.php?page=1&something+else&user=john
Voyons maintenant comment les requêtes seraient traitées dans la configuration ci-dessus :
-
Une requête «/logo.gif » correspond /d’abord à l’emplacement du préfixe « », puis à l’expression régulière «.(gif jpg png)$ », elle est donc traitée par ce dernier emplacement. À l’aide de la directive «root /data/www », la demande est mappée au fichier /data/www/logo.gifet le fichier est envoyé au client. - Une requête «/index.php » correspond également /d’abord à l’emplacement du préfixe « », puis à l’expression régulière «.(php)$ ». Par conséquent, elle est gérée par ce dernier emplacement et la requête est transmise à un serveur FastCGI écoutant sur localhost:9000. La directive fastcgi_param définit le paramètre FastCGI SCRIPT_FILENAMEsur «/data/www/index.php » et le serveur FastCGI exécute le fichier. La variable $document_rootest égale à la valeur de la directive racine et la variable $fastcgi_script_nameest égale à l’URI de la requête, c’est à dire «/index.php ».
- Une requête «/about.html » correspond /uniquement à l’emplacement du préfixe « » ; elle est donc traitée à cet emplacement. À l’aide de la directive «root /data/www », la demande est mappée au fichier /data/www/about.htmlet le fichier est envoyé au client.
- Le traitement d’une requête «/ » est plus complexe. Il correspond uniquement au préfixe d’emplacement «/ » et est donc géré par cet emplacement. Ensuite, la directive index teste l’existence de fichiers d’index en fonction de ses paramètres et de la root /data/wwwdirective « ». Si le fichier /data/www/index.htmln’existe pas et que le fichier /data/www/index.phpexiste, alors la directive effectue une redirection interne vers «/index.php » et nginx recherche à nouveau les emplacements comme si la demande avait été envoyée par un client. Comme nous l’avons vu précédemment, la requête redirigée sera finalement traitée par le serveur FastCGI.
PHP
Pour installer la version de 8 de php, ajouter le dépôt sury.
sudo apt install -y lsb-release apt-transport-https ca-certificates wget
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
Mise à jour des dépôts :
sudo apt update && sudo apt upgrade -y
PHP8.2 requis pour nextcloud hub:
sudo apt -y install php8.2 php8.2-fpm php8.2-sqlite3 php8.2-cli php8.2-gd php8.2-imap php8.2-mysql php8.2-soap php8.2-apcu php8.2-common php8.2-gmp php8.2-intl php8.2-opcache php8.2-xml php8.2-curl php8.2-igbinary php8.2-readline php8.2-zip php8.2-bcmath php8.2-imagick php8.2-mbstring php8.2-redis imagemagick libmagickcore-6.q16-6-extra php8.2-bz2 php8.2-smbclient
PHP Paramétrage pour une utilisation de nextcloud
PHP Paramétrage
mémoire pour PHP : ajouter memory_limit = 512M
dans le fichier /etc/php/8.2/fpm/php.ini
sudo sed -i -e "s/memory_limit = 128M/memory_limit = 512M/g" "/etc/php/8.2/fpm/php.ini"
Cache PHP (OPcache) :/etc/php/8.2/fpm/php.ini
, paramétrage sera réalisé par le pool nextcloud
PHP Cache de données (APCu & Redis)
sudo apt install php8.2-apcu redis-server php8.2-redis
Il faut ajouter apc.enable_cli=1
au fichier /etc/php/8.2/mods-available/apcu.ini
extension=apcu.so
apc.enable_cli=1
La nouvelle configuration sera prise en compte après redémarrage du service PHP-FPM :
sudo systemctl restart php8.2-fpm.service
MariaDB
Installer MariaDB :
sudo apt install mariadb-server
sudo mysql_secure_installation # Y à tout et nouveau mot de passe n
Base ‘nextcloud’ , en mode su
MOTPASSEDB="uXbPk3b2wG8llQl"
mysql -uroot -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '$MOTPASSEDB'; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY '$MOTPASSEDB'; FLUSH PRIVILEGES;"
Pour info
Effacer une base : mysql -uroot -e 'DROP DATABASE nextcloud'
Effacer un utilisateur : mysql -uroot -e 'DROP USER "nextcloud"@"localhost";'
Sous-Domaine et certificats
Serveur , installer et renouveler les certificats SSL Let’s encrypt via Acme
Disposer d’un sous-domaine (ici cloud.ouestyan.fr) avec des certficats SSL valides (Let’s Encrypt)
Nextcloud Hub
Référence: Nextcloud Install
Dernière version Nextcloud
en mode super utilisateur
Lien des versions Nextcloud server https://download.nextcloud.com/server/releases/
On choisit “latest” dans la version
Installer
# mode su
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
# checksum et vérification
#wget https://download.nextcloud.com/server/releases/latest.tar.bz2.sha256
#sha256sum -c latest.tar.bz2.sha256 < latest.tar.bz2
# Décompression, déplacement et effacement
tar -xvf latest.tar.bz2
mv nextcloud /var/www/
rm latest.tar.bz2
# Utilisateur nextcloud et droits
useradd -r nextcloud
chown -R nextcloud:www-data /var/www/nextcloud
chmod -R o-rwx /var/www/nextcloud
# Nextcloud data
mkdir -p /usr/local/include/nextcloud/data
chown -R nextcloud:nextcloud /usr/local/include/nextcloud/data
chmod -R o-rwx /usr/local/include/nextcloud/data
Pool PHP-FPM Nextcloud
Pool PHP-FPM Nextcloud : /etc/php/8.2/fpm/pool.d/nextcloud.conf
en mode su
cat > /etc/php/8.2/fpm/pool.d/nextcloud.conf << EOF
[nextcloud]
user = nextcloud
group = nextcloud
chdir = /var/www/nextcloud
listen = /var/run/php/php8.2-fpm-nextcloud.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 16
pm.max_requests = 500
request_terminate_timeout = 1d
pm.start_servers = 6
pm.min_spare_servers = 5
pm.max_spare_servers = 8
; Additional php.ini defines, specific to this pool of workers.
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
php_admin_value[memory_limit] = 512M
php_value[upload_max_filesize] = 10G
php_value[post_max_size] = 10G
php_value[default_charset] = UTF-8
; OPcache is already activated by default
; php_value[opcache.enable]=1
; The following parameters are nevertheless recommended for Nextcloud
; see here: https://docs.nextcloud.com/server/15/admin_manual/installation/server_tuning.html#enable-php-opcache
php_value[opcache.enable_cli]=1
php_value[opcache.interned_strings_buffer]=32
php_value[opcache.max_accelerated_files]=10000
php_value[opcache.memory_consumption]=128
php_value[opcache.save_comments]=1
php_value[opcache.revalidate_freq]=1
; https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html#id1
php_value[apc.enabled]=1
php_value[apc.enable_cli]=1
EOF
Relancer le service
systemctl restart php8.2-fpm
Nextcloud Nginx headers,SSL,HSTS,OCSP
Versions
nginx -v
: nginx version: nginx/1.24.0
openssl version
: OpenSSL 1.1.1n 15 Mar 2022
SSL Configuration Generator
Créer en conséquence le fichier le fichier /etc/nginx/conf.d/security.conf.inc
ci-dessous suivant le résultat de la requête précédente
ssl_certificate /etc/ssl/private/rnmkcy.eu-fullchain.pem;
ssl_certificate_key /etc/ssl/private/rnmkcy.eu-key.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# modern configuration
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
#add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/ssl/private/rnmkcy.eu-fullchain.pem;
# replace with the IP address of your resolver
resolver 1.1.1.1 9.9.9.9 valid=300s;
resolver_timeout 5s;
Si vous avez installé un résolveur en local , remplacer 1.1.1.1 9.9.9.9
par 127.0.0.1
Remplacer rnmkcy.eu par le nom du domaine souhaité
Nextcloud Vhost nginx
Nexcloud sur le domaine cloud.domain.tld avec certificats Let’s Encrypt
ATTENTION !!! Remplacer domain.tld par le nom de votre domaine
Le fichier de configuration web cloud.domain.tld.conf /etc/nginx/conf.d/cloud.domain.tld.conf
Etendre Réduire cloud.domain.tld.conf
Vérifier et recharger nginx : nginx -t && systemctl reload nginx
Nextcloud Nginx mimes
Les sections Activité et Logging dans le cadre de l’administration affiche des pages vierges
C’est une indication que votre serveur web n’est pas configuré pour gérer correctement les fichiers mjs.
Il faut modifier le fichier “mime.types” situé dans /etc/nginx/
, remplaçer la ligne suivante:
application/javascript js;
par
application/javascript js mjs;
Puis redémarrer Nginx et php-fpm.
Paramétrage Nextcloud
Finaliser installation Nextcloud
Tout est paramétré avec le domaine ouestyan.fr qu'il faut remplacer par votre domaine
Ouvrir le lien https://cloud.ouestyan.fr
Créer un compte administrateur et son mot de passe
Renseigner les éléments de la base mysql
Modifier le fichier /var/www/nextcloud/config/config.php
Ajouter 'default_phone_region' => 'FR',
et les lignes suivantes dans le fichier /var/www/nextcloud/config/config.php
avant le tag de fin de fichier );
'default_locale' => 'fr_FR',
'default_phone_region' => 'FR',
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\\OC\\Memcache\\APCu',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '',
),
Messagerie pour notifications
Serveur de messagerie, ajouter les lignes dans le fichier /var/www/nextcloud/config/config.php
avant le tag de fin de fichier );
'mail_from_address' => 'usersmtp',
'mail_smtpmode' => 'smtp',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'exemple.fr',
'mail_smtphost' => 'smtp.exemple.fr',
'mail_smtpport' => '587',
'mail_smtpauth' => 1,
'mail_smtpname' => 'usersmtp@exemple.fr',
'mail_smtppassword' => 'mp_smtp',
maintenance_window_start
Ce paramètre n’est pris en compte qu’en mode cron.
Dans le fichier config/config.php, vous pouvez spécifier cette configuration. Certaines tâches de fond ne s’exécutent qu’une fois par jour. Lorsqu’une heure est définie (le fuseau horaire est UTC) pour cette configuration, les tâches d’arrière-plan qui s’annoncent comme non sensibles au temps seront retardées pendant les heures “ouvrables” et ne s’exécuteront que dans les 4 heures suivant l’heure donnée. Ceci est par exemple utilisé pour l’expiration des activités, la formation aux connexions suspectes et les vérifications de mise à jour.
Une valeur de 1, par exemple, n’exécutera ces tâches d’arrière-plan qu’entre 01h00 UTC et 05h00 UTC.
Ajouter le paramètre au fichier /var/www/nextcloud/config/config.php
'maintenance_window_start' => 1,
Renseigner adresse de messagerie de destination pour l’utilisateur dans “Personnel” -> “Informations personnelles”
Voir paragraphe “Travaux cron”
Dans “Administration” → “Paramètres de base”
cron
Ouvrir de nouveau “Paramètres d’administration” pour vérification
nextcloudcmd : Synchronisation ponctuelle en ligne de commande
La syntaxe
nextcloudcmd --user "Utilisateur" --password "Mot de passe" \
--path /DossierDistant \ # DossierDistant existant sur le serveur nextcloud
/DossierLocal \ # DossierLocal
https://cloud.bullsvm.loc # URL serveur nextcloud
Avec cette syntaxe, le contenu du dossier local sera synchronisé avec le contenu du dossier distant
Nextcloud Travaux cron
Vous pouvez programmer des tâches cron de trois façons : en utilisant AJAX, Webcron ou cron. La méthode par défaut consiste à utiliser AJAX. Cependant, la méthode recommandée est d'utiliser **cron**.
Si systemd est installé sur le système, un timer systemd peut être une alternative à un cronjob.
Cette approche nécessite deux fichiers : nextcloudcron.service
et nextcloudcron.timer
Créez ces deux fichiers dans /etc/systemd/system/
/etc/systemd/system/nextcloudcron.service
doit ressembler à ceci :
[Unit]
Description=Nextcloud cron.php job
[Service]
User=nextcloud
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process
Remplacez l’utilisateur User
par l’utilisateur de votre serveur http (www-data si ce n’est pas nextcloud) et /var/www/nextcloud/cron.php
par l’emplacement de cron.php dans votre répertoire nextcloud.
Le paramètre KillMode=process
est nécessaire pour que les programmes externes qui sont lancés par la tâche cron continuent à fonctionner après la fin de la tâche cron.
Notez que le fichier .service unit n’a pas besoin d’une section [Install]
. Veuillez vérifier votre installation car nous l’avons recommandé dans les versions précédentes de ce manuel d’administration.
Le fichier /etc/systemd/system/nextcloudcron.timer
devrait ressembler à ceci :
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
Les parties importantes de l’unité de minuterie sont OnBootSec et OnUnitActiveSec. OnBootSec démarre la minuterie 5 minutes après le démarrage, sinon vous devriez la démarrer manuellement après chaque démarrage. OnUnitActiveSec déclenchera une minuterie de 5 minutes après la dernière activation de l’unité de service.
Maintenant, tout ce qui reste à faire est de démarrer et d’activer le minuteur en exécutant cette commande :
systemctl enable --now nextcloudcron.timer
Lorsque l’option --now
est utilisée avec enable, l’unité respective sera également démarrée.
Note : Il n’est pas obligatoire de sélectionner l’option Cron dans le menu d’administration pour les travaux en arrière-plan, car une fois que cron.php est exécuté à partir de la ligne de commande ou du service cron, il sera automatiquement réglé sur Cron.
Vérifier
systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Fri 2021-12-24 15:53:31 UTC 4min 5s left Fri 2021-12-24 15:48:31 UTC 54s ago nextcloudcron.timer nextcloudcron.service
Nextcloud Authentification
2FA (double facteur)
Paramètres → Applications → Applications mises en avant
Activer “Two-Factor TOTP Provider”
Paramètres → Administration settings → Sécurité dans la rubrique Administration
Puis cliquer sur Enregistrer les modifications
Aller ensuite sur Paramètres personnels → Sécurité dans la rubrique Personnel
Après avoir activé authentification TOTP (saisie du mot de passe)
Enter le secret TOTP dans le ou les applications TOPT
Saisir le code de vérification générer par votre application et cliquer sur “Vérifier”
Ensuite cliquer sur “Générer des codes de récupération”
Sans mot de passe (FIDO2)
YubiKey 5 Series Une gamme multiprotocole (FIDO2/WebAuthn, U2F, Smart Card, OpenPGP, OTP) qui est le premier choix des entreprises et qui prend en charge la fonction sans mot de passe
ATTENTION: Fonctionne uniquement sur les anviagateurs Crome, Firefox et Edge (au 19/0/2024)
Paramètres → Applications → Applications mises en avant
Télécharger et activer l’application Two-Factor WebAuthnn
- La clé “Yubikey 5 NFC” est connectée sur un port USB de l’ordinateur
- Nextcloud, Paramétrage “Personnel” -> “Sécurité” -> “Authentification sans mot de passe” cliquer sur “Ajouter un périphérique WeabAuthnn”
- Valider la prise en charge
- Donner un nom :
Faire la même opération avec les autres clés
Se déconnecter de nextcloud
Firefox linux desktop
ouvrir le lien https du cloud
->
Firefox android mobile
Le fonctionnement de la clé NFC est utilisé
Applications Nextcloud
OnlyOffice
OnlyOffice YunoHost, Nextcloud et Archlinux
SnappyMail
Mise à jour Nextcloud
Interface
Cliquer sur Ouvrir l’interface de mise à jour
Retour sur la page d’accueil à la fin de la mise à jour
Manuellement
Si vous effectuez une mise à niveau à partir d’une version majeure précédente, veuillez d’abord consulter les modifications critiques (en)
Commencez toujours par effectuer une nouvelle sauvegarde et en désactivant toutes les applications tierces.
1 - Sauvegardez vos fichiers Nextcloud Server existants ,votre base de données, votre répertoire de données et config.php
. (Voir Backup , pour les informations de restauration, voir Restoring backup )
2 - Téléchargez et décompressez la dernière version de Nextcloud Server (fichier d’archive) depuis https://download.nextcloud.com/server/releases/ dans un répertoire vide en dehors de votre installation actuelle.
Pour décompresser votre nouvelle archive tar, exécutez : unzip nextcloud-[version].zip
ou tar -xjf nextcloud-[version].tar.bz2
mkdir -p ~/temp
cd ~/temp
wget https://download.nextcloud.com/server/releases/latest-28.tar.bz2
tar -xjf latest-28.tar.bz2
3 - Arrêtez votre serveur Web.
sudo systemctl stop nginx
4 - Si vous exécutez une tâche cron pour la gestion interne de nextcloud, désactivez-la en commentant l’entrée dans le fichier crontab.(Le proriétaire du dossier est www-data ou nextcloud (ls -la /var/www
)
#sudo crontab -u www-data -e
sudo crontab -u nextcloud -e
# commenter
#*/5 * * * * php -f /var/www/nextcloud/cron.php
(Mettez un # au début de la ligne correspondante.)
5 - Renommez votre répertoire Nextcloud actuel, par exemple nextcloud-old.
sudo mv /var/www/nextcloud /var/www/nextcloud-old
6 - La décompression de la nouvelle archive crée un nouveau répertoire nextcloud rempli avec vos nouveaux fichiers serveur. Déplacez ce répertoire et son contenu vers l’emplacement d’origine de votre ancien serveur. Par exemple /var/www/
, pour qu’une fois de plus vous ayez /var/www/nextcloud
sudo mv ~/temp/nextcloud /var/www/
7 - Copiez le config/config.phpfichier de votre ancien répertoire Nextcloud vers votre nouveau répertoire Nextcloud.
sudo cp /var/www/nextcloud-old/config/config.php /var/www/nextcloud/config/
8 - Si vous conservez votre data/répertoire dans votre nextcloud/répertoire, copiez-le de votre ancienne version de Nextcloud vers votre nouveau nextcloud/. Si vous le conservez à l’extérieur nextcloud/, vous n’avez rien à faire avec, car son emplacement est configuré dans votre fichier d’origine config.phpet aucune des étapes de mise à niveau ne le touche.
9 - Si vous utilisez une application tierce, il se peut qu’elle ne soit pas toujours disponible dans votre instance Nextcloud mise à niveau/nouvelle. Pour vérifier cela, comparez une liste des applications du nouveau nextcloud/apps/dossier à une liste des applications de votre dossier sauvegardé/ancien nextcloud/apps/. Si vous trouvez des applications tierces dans l’ancien dossier qui doivent se trouver dans l’instance nouvelle/mise à niveau, copiez-les simplement et assurez-vous que les autorisations sont configurées comme indiqué ci-dessous.
10 - Si vous avez des dossiers d’applications supplémentaires comme par exemple nextcloud/apps-extras ou nextcloud/apps-external, assurez-vous de les transférer/conserver également dans le dossier mis à niveau.
11 - Si vous utilisez un thème tiers, assurez-vous de le copier de votre themes/répertoire vers votre nouveau. Il est possible que vous deviez y apporter quelques modifications après la mise à niveau.
12 - Ajustez la propriété et les autorisations des fichiers :
# en mode su
sudo -s
# si propriétaire www-data
chown www-data:www-data -R /var/www/nextcloud
# si propriétaire nextcloud
chown nextcloud:www-data -R /var/www/nextcloud
find /var/www/nextcloud/ -type d -exec chmod 750 {} \;
find /var/www/nextcloud/ -type f -exec chmod 640 {} \;
13 - Redémarrez votre serveur Web.
sudo systemctl start nginx
14 - Lancez maintenant la mise à niveau depuis la ligne de commande en utilisant occ
sudo -s
cd /var/www/nextcloud
# si propriétaire www-data
sudo -u www-data php occ upgrade
# si propriétaire nextcloud
sudo -u nextcloud php occ upgrade
(!) cela DOIT être exécuté à partir de votre répertoire d’installation nextcloud
15 - L’opération de mise à niveau prend de quelques minutes à quelques heures, selon la taille de votre installation. Une fois l’opération terminée, vous verrez un message de réussite ou un message d’erreur qui vous indiquera où l’erreur s’est produite.
16 - Réactivez la tâche cron nextcloud. (Voir l’étape 4 ci-dessus.)
# si propriétaire www-data
sudo crontab -u www-data -e
# si propriétaire nextcloud
sudo crontab -u nextcloud -e
(Supprimez le # au début de la ligne correspondante dans le fichier crontab.)
Connectez-vous
- jetez un œil au bas de votre page d’administration pour vérifier le numéro de version.
- Vérifiez vos autres paramètres pour vous assurer qu’ils sont corrects.
- Accédez à la page Applications et examinez les applications principales pour vous assurer que les bonnes sont activées.
- Réactivez vos applications tierces.
Nextcloud Sauvegarde Restauration
Accès boîte de stockage
Créer un accès à la boîte de stockage u326239@u326239.your-storagebox.de
via sftp et un jeu de clé ed25519
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2)
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/bx11-xoyize.net
Ajouter la clé publique bx11-xoyize.net.pub
au fichier .ssh/authorized_keys
de la boîte de stockage
Tester la connexion, créer dossier xoyize.net et sortir
sftp -P 23 -i ~/.ssh/bx11-xoyize.net u326239@u326239.your-storagebox.de
Première connexion
The authenticity of host '[u326239.your-storagebox.de]:23 ([2a01:4f8:261:59d3::2]:23)' can't be established.
ED25519 key fingerprint is SHA256:XqONwb1S0zuj5A1CDxpOSuD2hnAArV1A3wKY7Z3sdgM.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[u326239.your-storagebox.de]:23' (ED25519) to the list of known hosts.
Connected to u326239.your-storagebox.de.
sftp> mkdir backup/xoyize.net
sftp> exit
Sauvegarde nextcloud
En mode su dans le dossier /var/www/nextcloud
sudo -s
cd /var/www/nextcloud
Pour sauvegarder une installation Nextcloud, quatre choses principales
- Le dossier de configuration
- Le dossier de données /usr/local/include/nextcloud/data
- Le dossier thématique
- La base de données
ATTENTION : Utilisateur nextcloud au lieu de www-data pour les dossiers
Créer un dossier pour stocker le mot de passe de la base de données
mkdir -p /home/yani/.local/share/nextcloud
echo "mot_passe_mysql_nextcloud" > /home/yani/.local/share/nextcloud/dbpassword
Mode maintenance
Le mode maintenance verrouille les sessions des utilisateurs connectés et empêche les nouvelles connexions afin d’éviter les incohérences de vos données. Vous devez exécuter occ comme utilisateur HTTP ou nextcloud
sudo -u nextcloud php occ maintenance:mode --on
Renvoie Maintenance mode enabled
Sauvegarde dossiers
Il suffit de copier vos dossiers de configuration, de données et de thème (ou même votre dossier d’installation et de données de Nextcloud) vers un endroit à l’extérieur de votre environnement Nextcloud
# dossier /var/www/nextcloud
rsync -Aavx --delete --rsync-path='rsync' -e 'ssh -p 23 -i /home/yani/.ssh/bx11-xoyize.net -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' /var/www/nextcloud u326239@u326239.your-storagebox.de:backup/xoyize.net/nextcloud-dirbkp_`date +"%Y%m%d"`/
# nextcloud data
rsync -Aavx --delete --rsync-path='rsync' -e 'ssh -p 23 -i /home/yani/.ssh/bx11-xoyize.net -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' /usr/local/include/nextcloud/data u326239@u326239.your-storagebox.de:backup/xoyize.net/nextcloud-databkp_`date +"%Y%m%d"`/
Sauvegarde base de données MySql
Pour un support 4 octets MySQL/MariaDB (Enabling MySQL Support 4 octets, nécessaire pour emoji), vous devrez ajouter --default-character-set=utf8mb4
Syntaxe
mysqldump --single-transaction --default-character-set=utf8mb4 -h [serveur] -u [nom d'utilisateur] -p[mot de passe] [db_name] > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
Commande
# base mysql
mysqldump --single-transaction --default-character-set=utf8mb4 -h localhost -unextcloud -p`cat /home/yani/.local/share/nextcloud/dbpassword` nextcloud > /home/yani/.local/share/nextcloud/nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
# nextcloud database mariadb
rsync -Aavx --delete --rsync-path='rsync' -e 'ssh -p 23 -i /home/yani/.ssh/bx11-xoyize.net -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' /home/yani/.local/share/nextcloud/nextcloud-sqlbkp_`date +"%Y%m%d"`.bak u326239@u326239.your-storagebox.de:backup/xoyize.net/nextcloud-databkp_`date +"%Y%m%d"`/
Restauration nextcloud
Restaurer les dossiers
Note : Ce guide suppose que votre sauvegarde précédente est appelée “nextcloud-dirbkp”
Il suffit de copier votre dossier de configuration et de données (ou même votre dossier d’installation et de données Nextcloud) dans votre environnement Nextcloud. Vous pouvez utiliser cette commande:
rsync -Aax nextcloud-dirbkp/ nextcloud/
Restaurer la base de données
Attention
Avant de restaurer une sauvegarde, vous devez vous assurer de supprimer toutes les tables de base de données existantes.
La manière la plus facile de le faire est de déposer et de recréer la base de données. SQLite le fait automatiquement.
MySQL est le moteur de base de données recommandé. Pour restaurer MySQL:
mysql -e "DROP DATABASE nextcloud"
mysql -e "DROP USER 'nextcloud'@'localhost';"
mysql -e "CREATE DATABASE nextcloud"
Si vous utilisez UTF8 avec support multioctet (par exemple pour les emojis dans les noms de fichiers), utilisez:
mysql -e "DROP DATABASE nextcloud"
mysql -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
Note Ce guide suppose que votre sauvegarde précédente est appelée «nextcloud-sqlbkp.bak»
MySQL est le moteur de base de données recommandé. Pour restaurer MySQL:
mysql -h [serveur] -u [nom d'utilisateur] -p[mot de passe] [db_name]
Synchronisation avec les clients
après la récupération de données
Par défaut, le serveur Nextcloud est considéré comme la source pour les données. Si les données sur le serveur et le client diffèrent, les clients récupèrent par défaut les données sur le serveur.
Si la sauvegarde récupérée est dépassée, l’état des clients peut être plus à jour que l’état du serveur. Dans ce cas également assurez-vous de lancer la commande maintenance:data-fingerprint
par la suite. Il modifie la logique de l’algorithme de synchronisation pour essayer de récupérer autant de données que possible. Les fichiers manquants sur le serveur sont donc récupérés auprès des clients et en cas de contenu différent les utilisateurs seront demandés.
Note:
L’utilisation de la maintenance : l’empreinte de données peut provoquer des dialogues de conflit et des difficultés à supprimer des fichiers sur le client. Par conséquent, il est seulement recommandé d’empêcher la perte de données si la sauvegarde a été dépassée.
Si vous exécutez plusieurs serveurs d’applications, vous devrez vous assurer que les fichiers de configuration sont synchronisés entre eux de sorte que l’empreinte de données actualisée est appliquée sur tous les cas.
Erreurs et corrections
Base de données
La base de données a quelques index manquants. L’ajout d’index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant “occ db:add-missing-indices”, ces index manquants pourront être ajoutés manuellement pendant que l’instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides. Index optionnels manquants « mail_messages_strucanalyz_idx » dans la table « mail_messages ». Index optionnels manquants « mail_class_creat_idx » dans la table « mail_classifiers ». Index optionnels manquants « mail_acc_prov_idx » dans la table « mail_accounts ». Index optionnels manquants « mail_alias_accid_idx » dans la table « mail_aliases ».
Procédure pour la correction
sudo -s
cd /var/www/nextcloud
sudo -u nextcloud /usr/bin/php8.2 occ db:add-missing-indices
Résultat
Adding additional mail_messages_strucanalyz_idx index to the oc_mail_messages table, this can take some time...
oc_mail_messages table updated successfully.
Adding additional mail_class_creat_idx index to the oc_mail_classifiers table, this can take some time...
oc_mail_classifiers table updated successfully.
Adding additional mail_acc_prov_idx index to the oc_mail_accounts table, this can take some time...
oc_mail_accounts table updated successfully.
Adding additional mail_alias_accid_idx index to the oc_mail_aliases table, this can take some time...
oc_mail_aliases table updated successfully.
Ouvrir Nextcloud, Administration → Vue d’ensemble
Intégrité des fichiers
Liste des fichiers invalides
Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.
Results
=======
- core
- EXTRA_FILE
- nextcloud.log
[...]
Supprimer les fichiers nextcloud.log et rescanner
Fichiers absents après mise à jour
Il arrive parfois que les fichiers n’apparaissent pas après une mise à niveau . Une nouvelle analyse des fichiers peut aider
sudo -u www-data php console.php files:scan --all
# si nextcloud propriétaire
sudo -u nextcloud php console.php files:scan --all
Parfois, Nextcloud peut rester bloqué lors d’une mise à niveau si le processus de mise à niveau basé sur le Web est utilisé. Cela est généralement dû au fait que le processus prend trop de temps et rencontre un délai d’attente PHP.
Arrêtez le processus de mise à niveau de cette façon :
sudo -u www-data php occ maintenance:mode --off
Démarrez ensuite le processus manuel :
sudo -u www-data php occ upgrade
Si cela ne fonctionne pas correctement, essayez la fonction de réparation :
sudo -u www-data php occ maintenance:repair