À la recherche d'une alternative à dropbox pour partager mes dossiers entre mes divers appareils, je teste Syncthing.
Notes prises au fur et à mesure, pour repartager si c'est utile.
Syncthing existe sur tous les OS, un bon point. Il est dans les dépôts d'Archlinux et Debian. Installer le paquet syncthing
suffit pour tester, il y a un “gui” via une adresse web. Il y a aussi des versions graphiques, pas testé encore.
À noter qu'il existe en français, entre autre, pour l'interface.
L'installer sur un serveur permet de synchroniser entre les appareils sans avoir besoin de les allumer en même temps.
pour Archlinux :
yaourt -S syncthing
Pour Debian, ajouter le dépôt comme indiqué ici (faut ptet installer curl, aussi).
Une fois le paquet installé, il faut lancer syncthing pour qu'il créé le dossier.
syncthing
Une page web s'ouvre à l'adresse http://localhost:8384/ ou 8384 : c'est l'interface pour gérer le truc. On peut aussi modifier la configuration en modifiant le fichier /home/user/.config/syncthing/config.xml
Il faut sans doute lancer syncthing automatiquement au démarrage ?
En ajoutant un répertoire (où qu'il soit sur l'ordi), on va indiquer à Syncthing qu'on pourra potentiellement le partager.
Il faut aussi sélectionner les machines amies (Ajouter un périphérique
). Il faut pour ça l'ID des machines qui vont se connecter ensemble. En haut, dans la configuration “montrer l'ID”. C'est pas court à partager… Lorsque l'ID de la machine A est ajouté sur la machine B, la machine A reçoit en retour automatiquement une demande pour synchroniser aussi, puis l'accord pour partager certains dossiers.
Avec l'option de base, pour synchroniser ses dossiers il faut avoir tous ses appareils allumés.
On peut aussi se simplifier tout ça en installant Syncthing sur un serveur (toujours allumé), nos divers appareils se synchronisant dessus.
Installer Syncthing sur le serveur (installer en root, mais lancer la première session en user !).
Modifier le fichier /home/user/.config/syncthing/config.xml
: à la place
<gui enabled="true" tls="false"> <address>127.0.0.1:8384</address>
Mettre :
<gui enabled="true" tls="false"> <address>0.0.0.0:8080</address>
0.0.0.0
indique d'utiliser l'adresse ip. Pourquoi changer le port, je ne sais pas trop… On peut sans doute mettre ce qu'on veut ?
Taper l'adresse du serveur suivi de 8080 (http://153.81.158.610:8080/ par exemple). Aller dans la configuration, mettre un nom pour Utilisateur autorisé GUI
et un mot de passe à Mot de passe d'authentification GUI
. En cas d'oubli, il suffira de rééditer /home/user/.config/syncthing/config.xml
et d'enlever les deux lignes sous <address>0.0.0.0:8080</address>
, puis de remettre un mot de passe.
Ajouter les ID des divers appareils. Sur chaque appareil, ajouter uniquement l'ID du serveur. Synchroniser les dossiers nécessaire.
Danx le cas de Xen avec une VM qui fait parefeu/proxy et une autre où est installé Syncthing, il faut mettre sur la VM proxy (avec l'ip 192.168.20.12
adaptée pour correspondre à la VM de syncthing):
ProxyRequests off ProxyPreserveHost on ProxyPass /syncthing/ http://192.168.20.12:8384/ <Location /syncthing/> ProxyPassReverse http://192.168.20.12:8384/ Require all granted </Location>
Et sur la VM de syncthing :
ProxyRequests off ProxyPreserveHost on ProxyPass /syncthing/ http://192.168.20.12:8384/ <Location /syncthing/> ProxyPassReverse http://192.168.20.12:8384/ Require all granted </Location>
Avec SystemD, taper les commandes suivantes devrait suffire ?
systemctl enable syncthing@user.service systemctl start syncthing@user.service
Remplacer “user” par le nom de l'utilisateur qui lance le service !
Sur les anciens systèmes où le démarrage se fait toujours via init.d, copier ce fichier (en adaptant au début les variables) dans /etc/init.d/syncthing
(source : https://forum.syncthing.net/t/keeping-syncthing-running-systemd-regular-etc-init-d/402
#!/bin/sh ### BEGIN INIT INFO # Provides: syncthing # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Multi-user daemonized version of syncthing. # Description: Starts the syncthing daemon for all registered users. ### END INIT INFO # Replace with users you want to run syncthing clients for syncthing_USERS="nom_de_l'utilisateur" DAEMON=/usr/bin/syncthing startd() { for stuser in $syncthing_USERS; do HOMEDIR=$(getent passwd $stuser | awk -F: '{print $6}') if [ -f $config ]; then echo "Starting syncthiing for $stuser" start-stop-daemon -b -o -c $stuser -S -u $stuser -x $DAEMON else echo "Couldn't start syncthing for $stuser (no $config found)" fi done } stopd() { for stuser in $syncthing_USERS; do dbpid=$(pgrep -fu $stuser $DAEMON) if [ ! -z "$dbpid" ]; then echo "Stopping syncthing for $stuser" start-stop-daemon -o -c $stuser -K -u $stuser -x $DAEMON fi done } status() { for stuser in $syncthing_USERS; do dbpid=$(pgrep -fu $stuser $DAEMON) if [ -z "$dbpid" ]; then echo "syncthing for USER $stuser: not running." else echo "syncthing for USER $stuser: running (pid $dbpid)" fi done } case "$1" in start) startd ;; stop) stopd ;; restart|reload|force-reload) stopd && startd ;; status) status ;; *) echo "Usage: /etc/init.d/syncthing {start|stop|reload|force-reload|restart|status}" exit 1 ;; esac exit 0
Rendre le script executable :
chmod a+x /etc/init.d/syncthing
Pour lancer le service :
/etc/init.d/syncthing start
Source ici : https://github.com/syncthing/syncthing-android
En fait, y'a de quoi gérer, mais c'est pas évident.
Dans les paramètres, conditions d'exécution : tout décocher, sauf Exécuter en wifi
(paramétrer aussi les réseaux où la synchro est acceptable) et Sauvegarde batterie selon les réglages
.
Puis retourner dans le menu et faire Quitter
. Tuer l'appli ou l'enlever de la liste des appli ne suffit pas, elle tournera en arrière plan et se relancera après un kill. Il faut bien cliquer sur Quitter
pour qu'elle cesse de tourner.
Et voilà. Plus qu'à l'activer quand c'est le bon moment !