Installation de Syncthing sur un Raspberry Pi 2, modèle B
Avertissement: Cet article date de 2015. J'ai utilisé Syncthing quelques temps avant de passer exclusivement à Nextcloud.
Depuis un moment, je réfléchis à un système de sauvegarde pour mes fichiers. Je n'ai pas envie d'utiliser un service de "cloud" en ligne sur lequel je n'ai pas de prise et j'ai bien deux VPS chez OVH mais avec seulement 10 Gb d'espace de stockage, je ne vais pas aller bien loin... Une autre solution consiste à placer des disques chez différentes personnes et les synchroniser. À partir de trois disques, ça devient solide.
J'ai plusieurs Raspberry Pi chez moi, j'ai donc décidé de tester en local avant d'imaginer en placer ailleurs. Il faudra aussi trouver le bon moyen pour chiffrer les documents envoyés pour plus de sécurité mais sans que ça soit trop compliqué à utiliser. (Si ça prend 1h à chaque fois pour rajouter un fichier dans le système, je ne vais pas l'utiliser...)
Après plusieurs recherches, mon choix s'est tourné vers Syncthing. Ce programme est libre, il fonctionne sur les systèmes GNU/Linux, Android, Mac et même Windows. Je décrit ici les différentes étapes pour l'installer sur un Raspberry Pi mais l'installation sera similaire sur un autre Linux. Pour Android, on l'installera à partir de F-Droid.
Syncthing étant un programme libre, on peut le télécharger en toute légalité. Il est hébergé sur Github. Toutes les versions sont accessibles sur la page github.com/syncthing.
On télécharge la dernière release pour ARM de Syncthing, la v0.10.30 :
pi@raspberrypi ~ $ wget https://github.com/syncthing/syncthing/releases/download/v0.10.30/syncthing-linux-arm-v0.10.30.tar.gz
Note:
Sur une Debian 8 en 64 bits, par exemple, on changera de version et on prendra celle pour l'amd64 :
user@debian:~$ wget https://github.com/syncthing/syncthing/releases/download/v0.10.30/syncthing-linux-amd64-v0.10.30.tar.gz
Ensuite, on décompresse l'archive fraichement téléchargée dans le dossier syncthing et on supprime l'archive :
pi@raspberrypi ~ $ tar xvzf syncthing-linux-arm-v0.10.30.tar.gz
syncthing-linux-arm-v0.10.30/README.txt
syncthing-linux-arm-v0.10.30/LICENSE.txt
syncthing-linux-arm-v0.10.30/AUTHORS.txt
syncthing-linux-arm-v0.10.30/syncthing
syncthing-linux-arm-v0.10.30/syncthing.md5
syncthing-linux-arm-v0.10.30/etc/README.md
syncthing-linux-arm-v0.10.30/etc/linux-runit/README.md
syncthing-linux-arm-v0.10.30/etc/linux-runit/log/run
syncthing-linux-arm-v0.10.30/etc/linux-runit/run
syncthing-linux-arm-v0.10.30/etc/linux-systemd/README.md
syncthing-linux-arm-v0.10.30/etc/linux-systemd/system/syncthing@.service
syncthing-linux-arm-v0.10.30/etc/linux-systemd/user/syncthing.service
syncthing-linux-arm-v0.10.30/etc/macosx-launchd/README.md
syncthing-linux-arm-v0.10.30/etc/macosx-launchd/syncthing.plist
syncthing-linux-arm-v0.10.30/etc/solaris-smf/README.md
syncthing-linux-arm-v0.10.30/etc/solaris-smf/syncthing.xml
syncthing-linux-arm-v0.10.30/etc/windows/ReadMe.txt
syncthing-linux-arm-v0.10.30/etc/windows/SyncThingSetup.nsi
syncthing-linux-arm-v0.10.30/etc/windows/syncthingservice.xml
syncthing-linux-arm-v0.10.30/FAQ.pdf
syncthing-linux-arm-v0.10.30/Getting-Started.pdf
pi@raspberrypi ~ $ mv syncthing-linux-arm-v0.10.30/ syncthing/
pi@raspberrypi ~ $ rm syncthing-linux-arm-v0.10.30.tar.gz
On va dans le dossier et on démarre syncthing :
pi@raspberrypi ~ $ cd syncthing/
pi@raspberrypi ~ $ ./syncthing
[monitor] 16:04:53 INFO: Starting syncthing
16:04:53 INFO: Generating RSA key and certificate for syncthing...
[H2P4J] 16:06:39 INFO: syncthing v0.10.30 (go1.4.2 linux-arm default) unknown-user@syncthing-builder 2015-03-29 07:46:44 UTC
[H2P4J] 16:06:39 INFO: My ID: H2P4J43-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx
[H2P4J] 16:06:39 INFO: No config file; starting with empty defaults
[H2P4J] 16:06:39 INFO: Edit /home/pi/.config/syncthing/config.xml to taste or use the GUI
[H2P4J] 16:06:39 INFO: Starting web GUI on http://127.0.0.1:8080/
[H2P4J] 16:06:39 INFO: Loading HTTPS certificate: open /home/pi/.config/syncthing/https-cert.pem: no such file or directory
[H2P4J] 16:06:39 INFO: Creating new HTTPS certificate
[H2P4J] 16:06:39 INFO: Generating RSA key and certificate for raspberrypi...
[H2P4J] 16:07:43 INFO: Starting UPnP discovery...
[H2P4J] 16:07:49 INFO: UPnP discovery complete (found 0 devices).
[H2P4J] 16:07:49 INFO: Starting local discovery announcements
[H2P4J] 16:07:49 INFO: Local discovery over IPv6 unavailable
[H2P4J] 16:07:49 INFO: Starting global discovery announcements
[H2P4J] 16:07:49 OK: Ready to synchronize default (read-write)
[H2P4J] 16:07:49 INFO: Device H2P4J43-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx is "raspberrypi" at [dynamic]
[H2P4J] 16:07:49 INFO: Completed initial scan (rw) of folder default
Note:
Ça prend un peu de temps parce que les clés sont générées.
L'interface web est accesible depuis le Raspberry Pi. ( localhost:8080 ) mais il est évidemment intéressant de pouvoir y accéder depuis un autre ordinateur afin de laisser le Raspberry Pi dans un coin.
pi@raspberrypi ~ $ nano /home/pi/.config/syncthing/config.xml
Il faut changer la ligne "address" et mettre "0.0.0.0:8080" :
<gui enabled="true" tls="false">
<!-- config par défaut -->
<!-- <address>127.0.0.1:8080</address> -->
<!-- nouvelle configuration -->
<address>0.0.0.0:8080</address>
<apikey>A5RG4UMX-xx-xxxxxxxxxxxxxxxxxxxx</apikey>
</gui>
On va ensuite configurer Syncthing pour qu'il se lance automatiquement au démarrage. La première étape est de faire créer un fichier d'initialisation :
pi@raspberrypi ~ $ sudo vim /etc/init.d/syncthing
#!/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
#Sur Debian, j'ai eu une erreur "start-stop-daemon not found", j'ai rajouté la ligne suivante :
# PATH=/sbin:/bin:/usr/sbin:/usr/bin #A decommenter si vous avez l'erreur
# Replace with users you want to run syncthing clients for
syncthing_USERS="pi" #Remplacer par l'utilisateur qui lance syncthing
DAEMON=/home/pi/syncthing/syncthing #Remplacer cette ligne par le bon chemin vers syncthing
startd() {
for stuser in $syncthing_USERS; do
HOMEDIR=$(getent passwd $stuser | awk -F: '{print $6}')
if [ -f $config ]; then
echo "Starting syncthing 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
Ensuite, on rend le script exécutable et on met à jour la séquence de démarrage.
pi@raspberrypi ~ $ sudo chmod +x /etc/init.d/syncthing
pi@raspberrypi ~ $ sudo update-rc.d syncthing defaults
update-rc.d: using dependency based boot sequencing
Pour voir le status du daemon et/ou le démarrer, nous pouvons utiliser les commandes suivantes :
pi@raspberrypi ~ $ /etc/init.d/syncthing status
syncthing for USER pi: not running.
pi@raspberrypi ~ $ /etc/init.d/syncthing start
Starting syncthing for pi
pi@raspberrypi ~ $ /etc/init.d/syncthing status
syncthing for USER pi: running (pid 15060
15068)
Sur Debian, j'ai eu cette erreur:
simon@debian8:~$ /etc/init.d/syncthing stop
Stopping syncthing for simon
/etc/init.d/syncthing: 35: /etc/init.d/syncthing: start-stop-daemon: not found
Pour résoudre ce problème, vous pouvez décommenter la ligne 15 du script ci-dessus.
Une fois l'installation terminée, on peut accéder à l'interface web depuis le Raspberry Pi ( avec localhost:8080 ) ou bien depuis une autre machine du réseau ( http://ip-du-raspberry-pi:8080/ ). Plus qu'à suivre la même méthode pour l'installer sur votre·vos autre·s machine·s et configurer quels dossiers synchroniser.
Nous aborderons la configuration dans un prochain article.
Sources :
http://techdelirium.blogspot.be/2015/02/how-to-install-syncthing-on-your.html
~~~