Vous allez découvrir dans ce tutoriel comment synchroniser automatiquement les fichiers Torrent téléchargés par votre Seedbox vers votre NAS Synology. Ainsi plus besoin de Filezilla ou WinSCP pour récupérer vos fichiers ils sont directement accessibles avec vos applications Synology habituelles, les bien nommées DS File, DS Audio, DS Photo, ou DS Vidéo. Ainsi même loin de chez vous, depuis votre smartphone vous pouvez lancer un téléchargement de Torrent depuis l’interface Web du client Torrent de votre Seedbox, et quelques minutes après lancer l’application DS File pour accéder au fichier fraîchement téléchargé. Cool non ?
Ce tutoriel aurait aussi pu s’appeler d’une manière plus générale “Comment synchroniser automatiquement un répertoire entre deux serveurs Linux” ou encore d’une manière plus explicite “Comment copier automatiquement les fichiers Torrents téléchargés avec une Seedbox avec un NAS Synology”, tant les principes peuvent s’appliquer à d’autres usages.
Sommaire
Ce tutoriel nécessite d’être un minimum structuré, car bien que cela ne soit pas (si) compliqué, dès que l’on touche à Linux le temps passe vite …
Dans ce tutoriel nous allons réaliser les actions suivantes:
- Autoriser votre NAS Synology à accepter les connexions SSH par clé publique / privé. En effet le but est de synchroniser automatiquement le répertoire de votre Seedbox vers votre NAS, il faudra donc le faire sans taper de mot de passe et sans sacrifier la sécurité de votre NAS en laissant le mot de passe en clair dans un script par exemple. Donc rien ne vaut une bonne paire de clé Publique / Privé pour sécuriser la connexion et l’authentification.
- Activer Rsync sur votre NAS Synology. Rsync c’est l’outil de transfert de fichiers par excellence sous Linux. Un peu l’équivalent de Robocopy sous Windows. Bonne nouvelle, Rsync est déjà implémenté sur Synology, et oui Synology est un système Linux à part entière. Il suffit juste de l’activer dans l’interface d’administration.
- Activer Rsync sur votre Seedbox. De la même manière Rsync doit déjà être déployé sur votre Seedbox mais au cas où, selon votre distribution, je vous montre comment l’installer et l’activer.
- Lancer un script de synchronisation automatique.
Environnement utilisé pour le tutoriel
Oui il est important de vous décrire l’environnement qui a permis de monter ce tutoriel afin que vous puissiez l’adapter au cas où le votre diffère. Je tiens à préciser que cet article, comme la plupart de mes articles, sera actualisé le plus régulièrement possible.
- Un NAS Synology
- Une Seedbox installée sur un VPS. Il s’agit d’un VPS 1&1 installé sous Debian sur lequel j’ai installé un client Torrent simple et efficace, à savoir Deluge.
- Tout a été réalisé depuis ma station de travail DELL sous Windows 11 confortablement installé dans mon canapé.
- PuTTY pour faire de la ligne de commande sur ma Seedbox ET mon Synology
- WinSCP pour avoir une vue graphique des systèmes de fichiers sous Linux car je ne suis pas un pro de Linux et du coup je me permet d’éditer mes fichiers de conf Linux depuis mon Windows via WinSCP plutôt qu’avec VI en ligne de commande depuis PuTTY. Les puristes vont hurler mais je privilégie le gain de temps
- Le navigateur Chrome pour accéder à l’interface admin de mon NAS Synology.
Préparatifs
- Ouvrez une console PuTTY sur votre Seedbox et enregistrez les paramètres pour gagner du temps ensuite.
- Ouvrez une session WinSCP sur votre Seedbox et enregistrez ….. bla bla bla
- Lancez l’interface admin de votre NAS Synology dans votre navigateur … aux côtés de mon tutoriel.
Mettre en place l’authentification SSH par clé publique/privée sur le Synology
1- Activer la console SSH sur le NAS Synology
Activez le SSH depuis l’interface administration du Synology en vous rendant dans le Panneau de configuration > Terminal & SNMP
Activez le service Accueil utilisateur via le Panneau de configuration > Utilisateur > Avancé.Il est normalement déjà activé et c’est ce qui permet d’avoir un répertoire Home sur votre NAS. Le répertoire Home sera utilisé pour stocker la clé SSL qui autorisera votre Seedbox à se connecter à votre Synology.
2- Permettre l’authentification par Clé SSL sur le NAS Synology
Maintenant que l’accès SSH est activé sur le NAS nous allons pouvoir y activer l’authentification par clé Publique / Privée.
Connectez vous à votre Synology en SSH depuis la console PuTTY de votre Seedbox, c’est l’occasion de vérifier que la connexion SSH vers NAS fonctionne depuis votre Seedbox.
Connectez vous avec le compte Admin obligatoirement, si vous aviez désactivé le compte Admin par défaut de votre Synology il faut donc temporairement le réactiver.
ssh admin@ip_synology
Remplacez ip_synology par l’adresse IP de votre NAS Synology
Octroyez vous les droits avancés du compte root via la commande suivante :
sudo -i
Editer le fichier /etc/ssh/sshd_config avec l’éditeur VI via la commande suivante :
vi /etc/ssh/sshd_config
Utiliser VI ne s’improvise pas, c’est un pur éditeur en mode console. Si vous n’êtes pas à l’aise je vous renvoie vers un tutoriel simple de VI.
Retirer le # sur les trois lignes suivantes afin qu’elles ne soient plus en commentaire et sortez de VI en tapant :wq (et oui ça ne s’invente pas …) :
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Pour vous rassurer, c’est la seule l’opération réellement “intrusive” que vous allez faire sur votre Synology, le reste sera plus basique. Nous venons simplement d’autoriser le Synology à accepter des connexions via des clés SSL. Enregistrez vos modifications et sortez de VI en pressant successivement les 3 touches :wq (: pour rentrer une commande, w comme Write, q comme Quit)
Sortez de la session root du Synology via la commande Exit.
root@NAS:~$ Exit
Vous obtenez le résultat suivant :
logout
admin@NAS:~$
Sortez maintenant de la session Admin du Synology, en tapant une nouvelle fois la commande Exit.
admin@NAS:~$ Exit
Ce qui vous ramènera à la session root de votre Seedbox.
logout
Connection to 82.xxx.xxx.xx closed.
root@vps35xxxx:~#
3- Générer les clés SSL sur la Seedbox et transférer la clé publique sur le NAS
Nous allons générer une paire de clé SSL sur la Seedbox et la transférer sur le NAS Synology. Une fois en possession de cette clé le NAS sera en mesure d’accepter les connexions en provenance de la Seedbox sans authentification. Nous établissons en quelque sorte une relation de confiance unidirectionnelle entre les 2 systèmes. Il faudrait faire l’opération dans l’autre sens pour que le Synology se connecter sans mot de passe à la Seedbox. Vous pigez le principe?
Depuis la session root de votre Seedbox générez les clés SSL de votre Seedbox grâce à la commande ssh-keygen suivante :
ssh-keygen -t rsa
Pressez 3 fois la touche Entrée pour générer la paire de clé. Si une paire de clé a déjà été créé sur votre serveur pour un autre usage le prompt vous propose de l’écraser. Bien sur si la paire de clé existante est déjà utilisée, annulez l’opération et passez à l’étape suivante pour utiliser la paire existante.
Copiez la clé SSL sur votre NAS Synology avec la commande suivante ou IP_Synology correspond à l’adresse de votre serveur Synology. C’est la dernière fois que vous aurez besoin de vous authentifier car après tout se fera via les clés 😉
ssh-copy-id admin@IP_Synology
Vous pouvez constater dans le partage /homes/admin/ contient un répertoire .ssh qui contient votre la clé SSL de votre Seedbox. Vous pouvez même éditer le fichier authorized_keys en question.
La clé SSL de votre Seedbox est bien copiée sur le NAS
4- Tester l’authentification le fonctionnement de l’authentification SSL
Depuis la console SSH de votre Seedbox connectez vous à votre NAS, comme au début du tutoriel.
ssh admin@ip_synology
Remplacez ip_synology par l’adresse IP de votre NAS Synology. Vous devez désormais être connecté sans avoir eu besoin de rentrer votre mot de passe.
Si jamais ça ne fonctionne pas et que votre mot de passe est demandé, connectez vous et passez les commandes suivantes afin de changer les droits sur le répertoire contenant les clés sur le NAS Synology.
chmod 755 /volume1/homes/admin
chmod 700 /volume1/homes/admin/.ssh
chmod 644 /volume1/homes/admin/.ssh/authorized_keys
Cette fois ça marche ? 😉 Nous pouvons passer à la suite, activer Rsync sur le Synology et sur la Seedbox pur enfin pouvoir planifier l’exécution d’un script de copie de fichiers Torrent entre votre Seedbox et votre NAS.
Vous pouvez désormais désactiver l’accès à la console SSH sur votre Synology dans Panneau de configuration > Terminal & SNMP. En effet désormais c’est Rsync qui va communiquer avec votre Synology via la clé SSL.
Activer le service Rsync son votre Synology
Rendez vous sur votre console d’administration du Synology, dans le Panneau de configuration > Services de fichiers > rsync. Cochez la case Activer le service rsync.
Activation du service Rsync sur le Synology
Un partage NetBackup doit apparaître dans les dossiers partagés, vous ne serez pas obligé d’utiliser ce répertoire pour copier les Torrents depuis votre Seedbox, mais puisque ce répertoire est créé et que l’on ne peut pas le supprimer sans désactiver le service Rsync (ne me demandez pas pourquoi …), j’ai personnellement pris le parti de l’utiliser pour mes transferts.
Activer Rsync sur le Synology créé un partage par défaut … pourquoi pas
Activer Rsync son votre Seedbox
Connectez à votre Seedbox en PuTTY et installez Rsync l’aide de la commande suivante.
sudo apt-install rsync
Il n’y a rien à faire de plus côté Seedbox. On passe à la dernière étape !
Mettre en place le script Rsync pour transférer vos fichiers
1- Création du script de copie et test de fonctionnement
Je vous propose de mettre en place une solution de transfert toute simple. Nous allons lancer un script qui va se contenter de copier le contenu de votre répertoire de téléchargement de Torrents sur votre Seedbox vers un répertoire de votre NAS Synology. La copie se fera de manière incrémentale bloc, cela signifie qu’un fichier déjà copié ne sera pas recopié à chaque fois et même mieux, si le fichier source est légèrement modifié, seule les différences seront transférées.
Voilà c’est simple mais efficace. Le but est de rapatrier les fichiers et ça marche très bien.
J’ai trouvé beaucoup d’autres scripts sur le net, certains gèrent la suppression du fichier source dès qu’il est copié, pourquoi pas, mais quand on télécharge des Torrents avec des trackers privés comme T411, Elite Trackers et compagnie, vous devez laisser le Torrent en partage pendant quelques jours pour que votre ratio de téléchargement reste correct. Donc je vous recommande plutôt de supprimer vous même vos Torrents de temps en temps.
Copiez / collez le script suivant dans un fichier rsync.sh placé par exemple dans le répertoire /root/scripts de votre Seedbox. Je vous recommande vivement de passer par WinSCP pour faire ça simplement en mode graphique. Sinon depuis PuTTY, faut passer par du VI et autre NANO et c’est vite très pénible. En tout cas je suis tout sauf un expert Linux, je cherche donc la simplicité.
#!/bin/bash
rsync -av --inplace --rsh='ssh -p22' /var/lib/deluge/Downloads/complete/ admin@ip_synology:/volume1/NetBackup
Remplacez ip_synology par l’adresse IP de votre NAS Synology.
WinSCP évite de faire de la ligne de commande pour des trucs simples.
Pensez bien à rendre votre script exécutable sinon ça ne fonctionnera pas :
chmod +x /root/scripts/rsync.sh
Pour tester que le script fonctionne correctement lancez le manuellement via la commande suivante :
bash /root/scripts/rsync.sh
Génial ça fonctionne, la copie des fichiers a démarrée et s’est terminée avec succès !
sending incremental file list
Parenthese.2016.FRENCH.HDRip.XviD-EXTREME.www.torrent9.biz.avi
717,019,454 100% 2.31MB/s 0:04:56 (xfr#1, to-chk=0/3)
sent 412,309,080 bytes received 187,667 bytes 1,324,227.12 bytes/sec
total size is 743,007,045 speedup is 1.80
2- Exécuter la tâche automatiquement
Votre script fonctionne, c’est une bonne chose, il ne reste plus qu’à l’exécuter automatiquement. Encore une fois plusieurs méthodes sont possibles :
Méthode 1: Soit vous planifiez l’exécution du script directement dans le client Torrent de votre Seedbox : Transmission, Deluge ou rTorrent, pour ne citer que les meilleurs. Avec cette solution il est possible de lancer la commande dès qu’un Torrent a terminé son téléchargement. Voici comment procéder sur Deluge par exemple.
Le module Execute de Deluge permet de lancer des scripts
Un moyen simple de lancer votre tâche de copie dès qu’un Torrent est téléchargé
Méthode 2: Soit vous planifiez une tâche planifiée CRON sur le Linux de votre Seedbox. Du coup vous n’avez pas de dépendances avec le client Torrent et le script s’exécute tous les X temps.
Lancez la planificateur CRON sur votre Seedbox :
crontab -e
Définissez votre tâche planifiée : minute heure jourdumois mois jourdelasemaine /chemin/du/script.
Dans cet exemple la tâche s’exécute tous les 5 minutes
*/5 * * * * cd /root/scripts && sh rsync.sh
Dans celui ci exemple la tâche s’exécute tous les 5 minutes entre 20 heures et 8 heures du matin
*/5 20-8 * * * cd /root/scripts && sh rsync.sh
Je vous laisse choisir la méthode qui vous convient le plus. Je préfère personnellement la méthode 2 qui d’une part est plus généraliste, et qui d’autre part sera plus efficace en cas de problème réseau ou système, puisque la copie sera relancée périodiquement.
Conclusion
J’ai passé quasiment une journée complète à faire fonctionner la partie SSL sur le Synology car aucun tuto trouvé sur Internet n’abordait le fait qu’il faille modifier un fichier système sur le Synology pour faire fonctionner l’authentification sans mot de passe. A se demander si les tutos sont vraiment testés … Bref je rend à César ce qui appartient à César car j’ai trouvé la solution pour le SSL sur le site Chainsaw on a Tire Swing dans l’article SSH into your Synology DiskStation with SSH Keys que j’ai du découvrir je ne sais pas comment au moment ou j’étais prêt à abandonner.
J’ai refais le tutoriel en repartant de zéro, avec un VPS réinitialisé et un client Deluge tout neuf afin d’être certain que ça fonctionne. Si vous suivez scrupuleusement le tuto ça devrait fonctionner du premier coup. Maintenant n’hésitez pas à me faire un retour si vous rencontrez des difficultés, j’essaierai de vous aider.
Merci beaucoup pour ton tutoriel.
Une remarque ou demande, je ne sais pas trop dans quel sens la formuler 🙂
Lorsque tu déplaces ton fichier descendu sur ton NAS dans un autre dossier, rsync relance la synchro. Y a-t-il un moyen d’éviter cela et d’historiser les téléchargements passés ?
Merci d’avance
Ca marche impeccable.
J’ai pu mettre en place la synchro de répertoires OSX avec le NAS avec un mécanisme dans lequel j’ai confiance.
Merci beaucoup !
Bonjour,
Très bon tuto, mais je bloque au niveau de crontab -e
J’ai lancé cette commande, il fallait faire un choix, au hasard, j’ai pris le choix 2 mais je ne sais pas comment insérer une ligne de commande dans l’éditeur de crontab.
Si quelqu’un peut m’aider 😉
top ton article merci!
merci beaucoup, c’est clair, et ça marche !
Merci Ziggy !
Bonjour et grand merci pour ce tuto,
Je cherchais comment faire la config du Synology.
Perso, je n’utilise jamais le compte “admin”. Je préfère utiliser un compte perso (c’est plus sécurisant).
Je suis un linuxien de longue date et je vais maintenant me servir de ce tuto pour sauvegarder automatiquement le contenu de mon téléphone et de ma tablette sous Android. Le script bash contenant l’appel à la commande “rsync” tourneront dans l’application “termux”.
Un régal !
Encore merci et bonne continuation
Bonjour et merci beaucoup pour ce tuto et celui de l’install d’une seedbox !
je rencontre toutefois un petit pb :
dans mon fichier sshd config, je n’ai pas trouvé la ligne RSAAuthentification. je pense que c’est ça qui fait que si mon accès ssh n’est pas activé dans DSM, rsync n’arrive pas à faire sa synchro alors que depuis la console ssh, je peux lancer ma commande cron ss pb.
si vous voyez ce que je peux faire je suis preneur car du coup je dois continuer à faire une collecte manuelle des downloads
Bonjour ! 🙂
De mon côté j’ai un soucis au niveau de la connexion à mon serveur Synology en SSH avec PuttY…
Impossible pour moi de m’y connecter depuis mon serveur Kimsufi… j’ai le message “Connection timed out” qui apparaît… Pourtant le SSH est bien activé sur le port 22, l’accès admin est bien activé… Je ne vois pas du coup d’ou peut venir le pb…
Je prend toute aide sur le sujet 🙂
Bonjour,
Je bloque des les préparatifs (shame on me 🙁 )
“Ouvrez une console PuTTY sur votre Seedbox et enregistrez les paramètres pour gagner du temps ensuite.
Ouvrez une session WinSCP sur votre Seedbox et enregistrez ….. bla bla bla”
Que doit on faire exactement concernant ces deux étapes svp? je ne comprends pas ce qu’il faut “enregistrer”
Merci par avance
Bonne journée.
tres bon tuto merci , es ce que il y a possibilité de telecharger que les *.mkv par exemple et exclure le reste?
j’ai debian 8.1 mais je ne peut pas utiliser sudo me réponds no found merci je pense qu’il faut installer sudo mais je ne sais pas comment merci
Effectivement sudo n’est pas toujours intégré dans le package, ça dépend des fournisseurs …
Pour installer et paramétrer sudo :
apt-get install sudo
usermod -a -G sudo root
Sinon tu peux aussi taper la commande “su root” puor t’éviter d’installer sudo
OC.
Bonjour,
Je bloque à l’étape où je dois transférer la clé publique sur le NAS :
ssh-copy-id admin@IP-de-mon-NAS
Voici le message d’erreur :
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
admin@XX.XXX.XXX.XXX‘s password:
Permission denied, please try again.
Je n’arrive pas à me connecter avec le compte admin de l’extérieur, pourtant j’ai bien activé le service rsync sur le Synology DS216+II.
Pouvez-vous m’aider ?
Merci d’avance,
Olivier
Bonjour je tourne en rond depuis une semaine pour essayer de paramétrer mon DS216+II en sftp pour que mon frère puisse y avoir accès à distance, j’ai suivi le début du tuto mais ca ne marche toujours pas, j’ai pourtant bien paramétré mes ports interne et externe en sftp. De plus je n’arrive pas à passer l’étape plus besoin de mot de passe, il me le demande toujours même une fois les clefs crées et les mdossiers modifiés.
Quelqu’un aurait-il une idée?
Bonjour Christophe,
Refais pas à pas chacune des étapes, sans en oublier une seule et indique moi ou ça bloque, avec message d’erreur éventuel.
Je fais régulièrement ces manips pour aider des amis et de nombreux retours sur ce tuto semblent attester qu’il n’y a pas de problèmes particuliers.
OC.
Un tres grand merci pour ce tuto tres clair. Je cherchais un moyen natif depuis un bon moment …
Merci beaucoup pour ce tuto j’ai réussi du 1er coup !
depuis le temps que je cherchait a récupérer sur mon syno depuis ma seedbox de manière automatique je suis ravi 🙂
Excellent tuto, merci, cela correspond tout à fait à ce que je voulais mettre en place du coup j’ai gagné pas mal de temps 😉
Bonjour,
Merci pour cet article !
J’ai un peu modifié le script pour éviter qu’il ne se lance en parallèle. En effet si la synchronisation met plus de 5 minutes, on voit plusieurs instructions rsync tourner ce qui peut faire perturber le processus.
Ma solution est de créer un fichier de “verrou” qu’on supprime à la fin du traitement ou si le processus est tué
#!/bin/bash
LOCKFILE=$HOME/lock.txt
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
echo “already running”
exit
fi
# make sure the lockfile is removed when we exit and then claim it
trap “rm -f ${LOCKFILE}; exit” INT TERM EXIT
echo $$ > ${LOCKFILE}
#make sure ssh is running
eval `ssh-agent -s`
#rsync
rsync -av –inplace –rsh=’ssh -p22′ /var/lib/deluge/Downloads/complete/ admin@ip_synology:/volume1/NetBackup
rm -f ${LOCKFILE}
Bonsoir et merci pour ta contribution Mathieu.
Effectivement l’accumulation de processus rsync n’est pas super clean et peut même finir par ralentir le NAS.
OC.
Salut !
Super article. Merci.
J’avais envisagé la même chose pour chez moi, mais ça fait une quantité énorme de fichier a DL ce qui risque vite de faire exploser le NAS 🙂
Du coup j’ai préféré la méthode manuelle pour les fichiers.
Après, kodi peut aussi se connecter en FTP sur la seedbox pour streamer les films/séries.
Ça marche aussi très bien et ça évite de surcharger le NAS.
L’idéal serait de pouvoir exclure certaines fichiers dans la commande rsync… Genre descendre que les musiques et laisser les films…
A creuser. Mais merci pour la partie échange de clef avec le syno, je ne m’étais jamais penché sur cette question.
Bonne continuation