Skip to main content

Montages Rclone Sasnexte et Kdrive

Montages Rclone Sasnexte et Kdrive

Architecture

NAS Sasnexte (Synology)
    └── rclone sync (WebDAV) ──► kDrive Infomaniak
                                      └── rclone mount (FUSE) ──► VPS Jux
                                                                     └── containers Docker

Le NAS pousse les médias vers kDrive une fois par jour via le planificateur DSM. Le VPS monte kDrive en FUSE en permanence — les containers accèdent aux fichiers en lecture.


Remote rclone (NAS sasnexte)

Fichier : /volume1/homes/SAS_NEXTE/.config/rclone/rclone.conf

[kdrive_music]
type = webdav
url = https://591617.connect.kdrive.infomaniak.com
vendor = other
user = julien.bertrand@nexte.fr
pass = [obfusqué rclone]

Note : le remote s'appelle kdrive_music mais sert à synchroniser tous les contenus (musique, photos, audiobooks, Komga). Nom historique à ne pas confondre avec un remote dédié musique.

Mot de passe WebDAV : régénéré le 2026-06-23 (compte julien.bertrand@nexte.fr, espace kDrive 591617). Mise à jour via rclone config update kdrive_music pass $(rclone obscure NOUVEAU_MDP).


Script unifié (NAS sasnexte)

Emplacement : /volume1/homes/SAS_NEXTE/scripts/sync_kdrive_complete.sh
Planificateur DSM : tâche déclenchée quotidiennement — commande : /volume1/homes/SAS_NEXTE/scripts/sync_kdrive_complete.sh

Note sudo : le script contient sudo -u SAS_NEXTE rclone .... Si la tâche DSM est configurée pour tourner en tant que SAS_NEXTE, retirer le sudo -u SAS_NEXTE (inutile et peut bloquer). Si elle tourne en root, le garder.

Le script n'est plus recopie ici : il est versionne dans l'arbre Syncthing, seule source de verite — #!/bin/bashJux-scripts/NAS-Sync/sync_kdrive_complete.sh, RCLONE="/usr/local/bin/rclone"deploye REMOTE="kdrive_music"sur LOG_DIR="le NAS dans /volume1/homes/SAS_NEXTE/logs"scripts/. DATE=$(dateLa +%Y%m%d_%H%M%S)version SUMMARY_LOG="$LOG_DIR/sync_${DATE}en ligne ci-dessous datait du 2026-06-23 et n'avait aucune protection ; elle a ete remplacee le 2026-08-28 par la version durcie decrite plus bas. Sauvegarde de l'ancienne sur le NAS : sync_kdrive_complete.sh.bak-260828.log" mkdir -p "$LOG_DIR" run_sync() { local name="$1" local source="$2" local dest="${REMOTE}:${3}" local log="$LOG_DIR/sync_${name}_${DATE}.log" echo "[$(date '+%Y-%m-%d %H:%M:%S')] === Debut $name ===" >> "$SUMMARY_LOG" sudo -u SAS_NEXTE "$RCLONE" sync "$source" "$dest" --delete-excluded --ignore-errors --delete-during --fast-list --exclude "@eaDir/**" --exclude "#recycle/**" --exclude "@__thumb/**" --exclude "*.@SynoResource" --exclude "*.@SynoEAStream" --transfers=4 --checkers=8 --timeout=5m --contimeout=2m --log-file="$log" -v local rc=$? echo "[$(date '+%Y-%m-%d %H:%M:%S')] === Fin $name (code=$rc) ===" >> "$SUMMARY_LOG" } run_sync "audiobooks" "/volume1/audiobooks" "SYNC-pour_VPS/Sync-SASNEXTE/audiobooks" run_sync "music" "/volume1/music" "SYNC-pour_VPS/Sync-SASNEXTE/music" run_sync "photo" "/volume1/photo/2026" "SYNC-pour_VPS/Sync-SASNEXTE/photo/2026" run_sync "komga" "/volume1/Komga" "SYNC-pour_VPS/Sync-SASNEXTE/Komga"

Déploiement : écrire via vi depuis SSH — le heredoc et les éditeurs Windows introduisent des CRLF qui cassent bash. Après édition : sed -i 's/\r//' script.sh pour vérifier.


Syncs actifs

Nom Source NAS Destination kDrive Notes
audiobooks /volume1/audiobooks SYNC-pour_VPS/Sync-SASNEXTE/audiobooks  
music /volume1/music SYNC-pour_VPS/Sync-SASNEXTE/music  
photo /volume1/photo/2026 SYNC-pour_VPS/Sync-SASNEXTE/photo/2026 Année courante seulement
komga /volume1/Komga SYNC-pour_VPS/Sync-SASNEXTE/Komga  

Non géré ici :

  • Romans : abandonné
  • Foxy : sur NAS Maison (pas sasnexte)

Options rclone — justifications

Option Rôle
--delete-excluded Supprime sur kDrive les fichiers exclus qui auraient pu y être uploadés
--ignore-errors Poursuit la sync si un fichier est inaccessible (NAS Synology parfois occupé)
--delete-during Supprime les fichiers obsolètes au fil du scan, pas en fin de run
--fast-list Réduit les appels API WebDAV (un seul listing récursif)
@eaDir/** Dossiers de métadonnées Synology (miniatures)
#recycle/** Corbeille Synology
@__thumb/** Miniatures Synology
*.@SynoResource / *.@SynoEAStream Flux de ressources étendues Synology
--transfers=4 4 fichiers en parallèle — équilibre entre perf et charge WebDAV
--checkers=8 8 vérifications de hash en parallèle
--timeout=5m Timeout par opération I/O
--contimeout=2m Timeout de connexion initiale

Côté VPS — montages FUSE correspondants

Les services systemd sur le VPS montent les dossiers kDrive en FUSE :

Service systemd Point de montage Source kDrive
rclone-audiobookshelf.service /home/debian/audiobookshelf/audiobooks SYNC-pour_VPS/Sync-SASNEXTE/audiobooks
kdrive-music.service /home/debian/music SYNC-pour_VPS/Sync-SASNEXTE/music
rclone-photo.service /home/debian/photo SYNC-pour_VPS/Sync-SASNEXTE/photo
kdrive-komga.service /home/debian/komga SYNC-pour_VPS/Sync-SASNEXTE/Komga

Remote VPS : kdrive: — remote natif Infomaniak (@infomaniak/mcp-server-kdrive), compte julien.bertrand@live.fr, kDrive ID 591617.


Logs

  • Un fichier de log par sync par run : /volume1/homes/SAS_NEXTE/logs/sync_{nom}_{date}.log
  • Bilan global : /volume1/homes/SAS_NEXTE/logs/sync_{date}.log
  • Commande de suivi : tail -f /volume1/homes/SAS_NEXTE/logs/sync_music_*.log

Panne du 2026-08-28 — les 4 syncs a l'arret, cause : rclone.conf deplace

Symptome : les photos de l'ete 2026 deposees la veille sur le NAS ne remontaient pas sur kDrive. Ni par la tache planifiee, ni par un lancement manuel du script — ce qui excluait d'emblee un probleme de reseau ou de quota.

Message dans le journal du jour (/volume1/homes/SAS_NEXTE/logs/sync_photo_AAAAMMJJ_*.log) :

NOTICE: Config file "/var/services/homes/SAS_NEXTE/.config/rclone/rclone.conf" not found - using defaults
CRITICAL: Failed to create file system for "kdrive_music:...": didn't find section in config file ("kdrive_music")

Cause : le 2026-08-27 a 10:16, le dossier .config du home a ete range dans /volume1/homes/SAS_NEXTE/Fichiers techniques/. Le script ne passait pas --config : rclone cherchait donc $HOME/.config/rclone/rclone.conf et ne trouvait plus le remote. Les quatre syncs sont mortes d'un coup (photo, music, komga, audiobooks), des le run suivant.

Correction : fichier recopie a sa place (chmod 600) ; une copie subsiste dans Fichiers techniques et sert desormais de secours automatique (voir plus bas).

Ce que cet incident apprend

    Devant un didn't find section in config file, verifier l'emplacement du rclone.conf avant tout le reste. Un simple rangement par SMB ou File Station suffit a tout casser, sans que rien ne soit "casse" au sens habituel. L'echec etait totalement silencieux : aucune alerte, aucun mail, l'ancien script retournait toujours 0. Seul le journal du jour le disait. C'est le vrai defaut, plus encore que le fichier deplace. Piege d'analyse au moment de reparer : le dossier avait ete renomme cote NAS (2026_Eté UK → 2026_Eté UK et Italia), ce qui faisait voir a rclone 308 suppressions et 351 copies. En miroir --delete-during c'est correct, mais toujours faire un --dry-run puis comparer les listes avant de relancer une sync apres un incident :
    rclone lsf -R --files-only kdrive_music:.../photo/2026/ANCIEN_NOM | sort > /tmp/k.txt
    (cd /volume1/photo/2026/NOUVEAU_NOM && ls -p | grep -v /) | sort > /tmp/n.txt
    comm -23 /tmp/k.txt /tmp/n.txt   # doit etre vide : rien sur kDrive qui manque au NAS
    Trou du 20 au 24/08 dans tous les journaux : NAS eteint (coupures secteur / orages), sans rapport avec cette panne.

    Durcissement du script (2026-08-28)

    Source de verite : Jux-scripts/NAS-Sync/sync_kdrive_complete.sh (arbre Syncthing, disponible sur toutes les machines). Le comportement nominal est inchange — memes 4 syncs, memes options rclone, meme emplacement, la tache DSM n'a pas besoin d'etre modifiee.

    ProtectionCe qu'elle evite --config en chemin absoluLa panne ci-dessus : le script ne depend plus de $HOME ni de l'utilisateur qui le lance Restauration automatique de la config depuis Fichiers techniques/.config/rclone/rclone.confUn nouveau deplacement du fichier ne coupe plus la synchro ; l'evenement est journalise Controles prealables : rclone present, section [kdrive_music] presente, remote reellement joignablePartir en synchro avec un mot de passe WebDAV revoque ou kDrive injoignable Refus de synchroniser une source absente ou videLe scenario catastrophe : un volume non monte ou un dossier vide, qui en mode miroir viderait la destination kDrive --max-delete par service (photo 500, les autres 1000)Une suppression de masse imprevue : la sync s'interrompt et attend un oeil humain Ligne === BILAN: X/4 OK === et fichier d'etat logs/etat_sync.txtAvoir a lire quatre journaux pour savoir si la nuit s'est bien passee Code de sortie non nul en cas d'echec + entree dans le journal systeme DSML'echec silencieux Purge des journaux de plus de 90 joursL'accumulation dans logs/

    Mode d'emploi

    S=/volume1/homes/SAS_NEXTE/scripts/sync_kdrive_complete.sh
    $S                                  # les 4 syncs (ce que lance la tache DSM)
    DRY_RUN=1 $S                        # essai a blanc, rien n'est ecrit sur kDrive
    SERVICES="photo music" $S           # un sous-ensemble seulement
    SERVICES="photo" FORCE_MAX_DELETE=1 $S   # apres verification, lever le garde-fou
    
    cat /volume1/homes/SAS_NEXTE/logs/etat_sync.txt   # resultat du dernier run

    Canari — savoir en une commande si la nuit s'est bien passee

    cat /volume1/homes/SAS_NEXTE/logs/etat_sync.txt
    grep -l CRITICAL /volume1/homes/SAS_NEXTE/logs/sync_*_$(date +%Y%m%d)*.log

    Notifications — pourquoi pas synodsmnotify

    Sur DSM 7.4, synodsmnotify n'accepte pas de titre libre : tout libelle est rejete par title: '...' is neither mail string key nor i18n format, y compris les formes i18n:... essayees. Le script utilise donc synologset1 sys err 0x11100000, qui ecrit dans le journal systeme DSM (Centre de journalisation).

    Action restante cote DSM (a faire par Julien, compte admin) : dans Planificateur de taches → tache de synchronisation → Parametres, cocher « Envoyer les details d'execution par e-mail » et « uniquement lorsque le script se termine anormalement ». C'est maintenant efficace : l'ancien script retournait toujours 0, la version durcie retourne 1 des qu'un service echoue.

    Tests de validation passes le 2026-08-28

      Marche nominale en essai a blanc : BILAN: 1/1 OK, code retour 0 Panne rejouee (config deplacee) : restauration automatique, puis sync normale — code retour 0 Source vide : sync non lancee, ECHEC photo (source-vide), code retour 1 Seuil de suppressions depasse : sync interrompue, ECHEC photo (seuil-suppressions), code retour 1, avec la commande de reprise affichee

      REX déploiement 2026-06-23

      • Problème 1 : CRLF dans le script (édition Windows) → bash -x montrait \r comme commande inconnue. Fix : réécrire via vi sur le NAS.
      • Problème 2 : mot de passe WebDAV périmé (401 Unauthorized) → régénéré le 2026-06-09 côté VPS mais pas mis à jour sur le NAS. Fix : rclone config update kdrive_music pass $(rclone obscure MDP).
      • SSH bloqué : pare-feu NAS + 2FA rendent le SSH depuis l'extérieur inaccessible. Passer par une session SSH locale ou DSM.
      • Résultat : 4 syncs validés — audiobooks 48.9 GiB / 23 min, music 1 GiB / 45s, photo et komga déjà à jour.