Nextcloud-Stockage-Externe
Dossier local situé hors du dossier Nextcloud
Le client de bureau Nextcloud permet de créer une synchronisation supplémentaire :
- Ouvrez le client Nextcloud.
- Allez dans Paramètres → Compte.
- Cliquez sur Ajouter une synchronisation de dossier.
- Sélectionnez :
- le dossier local à synchroniser, même sur un autre disque ou une autre partition ;
- le dossier distant correspondant sur Nextcloud.
- Validez la synchronisation bidirectionnelle.
Le dossier doit être accessible en lecture et en écriture par votre utilisateur. Évitez de synchroniser simultanément ce même dossier avec Dropbox, OneDrive, Syncthing ou un autre outil, car cela peut provoquer des conflits.
Dossier externe au serveur
Si le dossier se trouve sur un autre disque, un partage SMB/CIFS, SFTP, FTP ou un autre service cloud, il faut plutôt utiliser l’application Stockage externe de Nextcloud. Un administrateur l’active dans les applications, puis le configure dans Paramètres → Administration → Stockages externes.
À noter : une synchronisation n’est pas une véritable sauvegarde. Une suppression ou une modification accidentelle peut aussi être répliquée sur l’autre côté.
Ce qui veut dire que le dossier externe doit être accessible en lecture écriture par l'utilisateur nextcloud ou autre ? Oui, mais cela dépend de l’emplacement du dossier.- Dossier local synchronisé par le client Nextcloud : il doit être accessible en lecture/écriture par l’utilisateur qui exécute le client Nextcloud — généralement votre compte utilisateur, pas forcément l’utilisateur système
www-dataounextcloud. - Dossier monté comme stockage externe sur le serveur Nextcloud : il doit être accessible en lecture/écriture par l’utilisateur du serveur web qui exécute Nextcloud, souvent
www-data,apacheouhttp, selon la distribution. - Partage SMB, SFTP ou FTP : ce sont les identifiants configurés dans Nextcloud pour ce stockage qui doivent disposer des droits nécessaires sur le partage.
Par exemple, pour un dossier local synchronisé avec le client de bureau, vérifiez les droits avec :
1
ls -ld /chemin/du/dossier
Si le client est lancé par votre utilisateur jean, le dossier doit lui appartenir ou lui accorder les droits adaptés :
1
2
sudo chown -R jean:jean /chemin/du/dossier
chmod -R u+rwX /chemin/du/dossier
Pour un stockage externe configuré côté serveur, ce serait plutôt :
1
sudo chown -R www-data:www-data /chemin/du/dossier
Ne changez toutefois pas le propriétaire de tout le dossier à l’aveugle : si le dossier est partagé avec d’autres services ou utilisateurs, utilisez plutôt les groupes ou des ACL. En pratique, le compte concerné doit avoir lecture, écriture et traversée (x) sur tous les dossiers parents.
Supposons que le dossier soit :
1
/data/extone
Commencez par vérifier les droits sur tout le chemin :
1
namei -l /data/extone
www-data doit avoir le droit de traversée (x) sur /data et sur tous les répertoires parents.
Accordez ensuite à www-data les droits nécessaires sur le dossier :
1
sudo setfacl -m u:www-data:rwx /data/extone
Pour donner également l’accès aux fichiers et sous-dossiers déjà présents :
1
sudo setfacl -R -m u:www-data:rwX /data/extone
Le X ajoute le droit d’exécution uniquement aux répertoires — et aux fichiers qui sont déjà exécutables.
Pour que les nouveaux fichiers et dossiers héritent automatiquement des droits pour www-data :
1
sudo setfacl -m d:u:www-data:rwX /data/extone
Selon la configuration, il peut être utile de définir aussi l’ACL par défaut pour le groupe propriétaire :
1
sudo setfacl -m d:g::rwX /data/extone
Vérifiez le résultat avec :
1
getfacl /data/extone
Vous devriez voir notamment :
1
2
3
user::rwx
user:www-data:rwx
default:user:www-data:rwx
Si /data n’est pas traversable par www-data, ajoutez uniquement le droit de traversée :
1
sudo setfacl -m u:www-data:x /data
Évitez de donner rwx sur les répertoires parents : x suffit pour permettre l’accès au chemin.
Dans Nextcloud, ajoutez ensuite /data/extone comme Stockage externe → Stockage local. Le chemin doit être accessible depuis le système où tourne Nextcloud, et l’application de stockage externe doit être activée. Ne placez pas ce dossier à l’intérieur du répertoire de données (datadirectory) de Nextcloud et ne le configurez pas en même temps comme dossier synchronisé par le client de bureau.
Vous pouvez tester directement l’accès avec :
1
2
3
sudo -u www-data ls -la /data/extone
sudo -u www-data touch /data/extone/test-nextcloud
sudo -u www-data rm /data/extone/test-nextcloud
Si ces trois commandes fonctionnent, www-data dispose normalement des permissions suffisantes.
Le droit de traversée (x) sur un dossier permet d’entrer dans ce dossier ou d’accéder à un chemin connu, sans permettre d’en lister le contenu.
Par exemple, pour vérifier :
1
sudo -u www-data ls /data/extone
Si vous obtenez Permission denied, vérifiez le chemin complet :
1
namei -l /data/extone
Pour permettre à www-data de traverser /data sans lui donner le droit de lire son contenu :
1
sudo setfacl -m u:www-data:--x /data
Puis donnez les droits sur le dossier cible :
1
2
3
sudo setfacl -m u:www-data:rwx /data/extone
sudo setfacl -R -m u:www-data:rwX /data/extone
sudo setfacl -m d:u:www-data:rwX /data/extone
Testez ensuite :
1
2
3
sudo -u www-data ls -la /data/extone
sudo -u www-data touch /data/extone/test-nextcloud
sudo -u www-data rm /data/extone/test-nextcloud
pour accéder à /data/extone, www-data doit avoir x sur tous les répertoires parents. Si le chemin est par exemple :
1
/mnt stockage/data/extone
il faudra également donner le droit x sur /mnt stockage et /mnt stockage/data.
Pour retirer l’ACL plus tard :
1
2
3
sudo setfacl -x u:www-data /data
sudo setfacl -x u:www-data /data/extone
sudo setfacl -x d:u:www-data /data/extone
L’ACL --x sur /data autorise uniquement la traversée ; www-data ne pourra pas faire ls /data, mais pourra accéder directement à /data/extone s’il connaît le chemin.