Avertissement: Cet article date de 2015. Je n'utilise plus que Nextcloud à présent.

Maintenant qu'on a installé Syncthing, au moins sur deux machines, on peut passer à la configuration. Celle-ci peut se faire de manière graphique, via la page web ( localhost:8080 ou IP:8080 ) ou bien directement dans le fichier de configuration.

Si vous l'avez installé comme moi, votre configuration sur trouve dans /home/pi/.config/syncthing/config.xml.

Allons jeter un œil à cette configuration vierge !

pi@raspberrypi ~ $ cat .config/syncthing/config.xml
<configuration version="10">
    <folder id="default" path="/home/pi/Sync" ro="false" rescanIntervalS="60" ignorePerms="false" autoNormalize="false">
        <device id="H2P4J43-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-ABW74QX"></device>
        <versioning></versioning>
        <lenientMtimes>false</lenientMtimes>
        <copiers>0</copiers>
        <pullers>0</pullers>
        <hashers>0</hashers>
    </folder>
    <device id="H2P4J43-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-ABW74QX" name="raspberrypi" compression="metadata" introducer="false">
        <address>dynamic</address>
    </device>
    <gui enabled="true" tls="false">
        <address>127.0.0.1:8080</address>
        <apikey>XGQSXXXXXXXXXXXXXXXXXXXXXXXXXXSi</apikey>
    </gui>
    <options>
        <listenAddress>0.0.0.0:22000</listenAddress>
        <globalAnnounceServer>udp4://announce.syncthing.net:22026</globalAnnounceServer>
        <globalAnnounceServer>udp6://announce-v6.syncthing.net:22026</globalAnnounceServer>
        <globalAnnounceEnabled>true</globalAnnounceEnabled>
        <localAnnounceEnabled>true</localAnnounceEnabled>
        <localAnnouncePort>21025</localAnnouncePort>
        <localAnnounceMCAddr>[ff32::5222]:21026</localAnnounceMCAddr>
        <maxSendKbps>0</maxSendKbps>
        <maxRecvKbps>0</maxRecvKbps>
        <reconnectionIntervalS>60</reconnectionIntervalS>
        <startBrowser>true</startBrowser>
        <upnpEnabled>true</upnpEnabled>
        <upnpLeaseMinutes>0</upnpLeaseMinutes>
        <upnpRenewalMinutes>30</upnpRenewalMinutes>
        <urAccepted>0</urAccepted>
        <urUniqueID></urUniqueID>
        <restartOnWakeup>true</restartOnWakeup>
        <autoUpgradeIntervalH>12</autoUpgradeIntervalH>
        <keepTemporariesH>24</keepTemporariesH>
        <cacheIgnoredFiles>true</cacheIgnoredFiles>
        <progressUpdateIntervalS>5</progressUpdateIntervalS>
        <symlinksEnabled>true</symlinksEnabled>
        <limitBandwidthInLan>false</limitBandwidthInLan>
    </options>
</configuration>

Concrètement, la configuration de tout syncthing se retrouve dans ces quelques lignes. Qu'on fasse un changement via l'interface web ou directement via la configuration ne change rien. Il faudra juste penser à relancer syncthing après chaque modification.

La première chose que j'ai changée après l'installation, c'est la possibilité d'accéder à l'interface web depuis un autre ordinateur. Soit on va sur l'interface web et on change Adresse du GUI dans la configuration, soit on change directement la ligne concernée dans le fichier config.xml. Au passage, j'ai aussi changé le nom du device.

<configuration version="10">
    (...)
    <device id="H2P4J43-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-ABW74QX" name="RaspberryPi" compression="metadata" introducer="false">
        <address>dynamic</address>
    </device>
    <gui enabled="true" tls="false">
        <address>0.0.0.0:8080</address>
        <apikey>XGQSXXXXXXXXXXXXXXXXXXXXXXXXXXSi</apikey>
    </gui>
    (...)
    </options>
</configuration>

Pour ajouter un device, on ajoute ceci dans la configuration, sous les équipements existants :

    <device id="ZKOZAPE-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-SWOAVAW" name="Debian" compression="metadata" introducer="false">
        <address>dynamic</address>
    </device>

Pour ajouter un dossier partagé avec ce device :

    <folder id="files" path="/media/usb-pi/Sync/files/" ro="false" rescanIntervalS="60" ignorePerms="false" autoNormalize="true">
        <device id="ZKOZAPE-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-SWOAVAW"></device>
        <device id="H2P4J43-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-ABW74QX"></device>
        <versioning></versioning>
        <lenientMtimes>false</lenientMtimes>
        <copiers>0</copiers>
        <pullers>0</pullers>
        <hashers>0</hashers>
    </folder>

Un autre exemple : Un dossier partagé entre quatre machines. Chaque machine peut écrire dans le dossier.

    <folder id="All-files" path="/home/user/Sync/All-files" ro="false" rescanIntervalS="60" ignorePerms="true" autoNormalize="true">
        <device id="ZKOZAPE-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX"></device>
        <device id="Z4AMOJH-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX"></device>
        <device id="2LVP7TC-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX"></device>
        <device id="H2P4J43-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX"></device>
        <versioning></versioning>
        <lenientMtimes>false</lenientMtimes>
        <copiers>1</copiers>
        <pullers>16</pullers>
        <hashers>0</hashers>
    </folder>

Il faut évidemment ajouter cette configuration sur les deux -ou plus- instances Syncthing que vous utilisez. Avec ça, on a la base. Plus qu'à jouer et expérimenter les différentes options.

Erreurs rencontrées :

    13:34:10: Folder "All-files" isn't making progress - check logs for possible root cause. Pausing puller for 1m0s.

L'erreur est due à des noms de fichiers qui ne sont pas compatibles avec FAT16. En effet, ce système de fichier ne supporte pas certains caractères ( / \ : * ? " < > | ). J'ai quelques musiques avec des ? à la place des caractères accentués...

J'ai aussi eu droit à un dossier avec un espace à la fin du nom. Belle galère à trouver. Il faudrait que je fasse un petit script pour repérer les noms de fichiers ou dossiers non compatibles.

    11:52:57: Stopping folder "All-files" - path exists, but folder marker missing, check for mount issues

Le dossier est vide, j'ai coupé le partage en attendant de corriger les mauvais noms de fichiers et j'ai cette erreur. Il n'y a pas de fichier .stfolder dans le dossier All-files. Parce-que le dossier n'est pas partagé ? J'ai copié .stfolder depuis un autre dossier et ça n'a rien changé.

L'erreur a disparue quand j'ai relancé le partage. ~~~