Als je op je laptop, desktop, smartphone en tablet bij dezelfde bestanden wilt kunnen, zou je die bestanden op een cloudopslagdienst of een NAS kunnen plaatsen. Maar bij een cloudopslagdienst kun je niet meer bij je bestanden wanneer je internetverbinding wegvalt. En om van buiten je thuisnetwerk bij je NAS te kunnen, dien je een VPN of andere netwerktoegang in te stellen.

Een andere aanpak is om de bestanden die je wilt delen continu te synchroniseren tussen je verschillende apparaten. Als je dan op je laptop een bestand downloadt, is dat onmiddellijk ook beschikbaar op je smartphone. En als je op je smartphone een foto neemt, kun je die direct op je desktop bekijken. Wanneer je internetverbinding uitvalt, stopt de synchronisatie uiteraard (tijdelijk). Maar je hebt dan nog altijd op al je apparaten toegang tot je bestanden, zij het op sommige apparaten in een oudere versie.

Syncthing

Syncthing (https://syncthing.net) is een manier om continu bestanden te synchroniseren tussen meerdere apparaten. Daarvoor is geen centrale server nodig; je data worden alleen op je eigen apparaten opgeslagen. Alle communicatie tussen je apparaten is bovendien versleuteld met TLS, zodat je ook op een niet-vertrouwd netwerk zonder zorgen je bestanden kunt synchroniseren. Bovendien identificeert elk apparaat zich met een cryptografisch certificaat. Alleen apparaten die je expliciet toestaat, mogen verbinding maken om bestanden uit te wisselen.

Voor iedere map die je instelt, kun je kiezen met welke apparaten je deze synchroniseert en in welke richting. Daardoor kun je ook perfect specifieke mappen met andere personen synchroniseren. Syncthing werkt op je thuisnetwerk of over internet. Voor dat laatste hoef je zelfs geen portforwarding of dynamic DNS in te stellen: Syncthing werkt via UPnP en gebruikt een ID voor ieder apparaat, dat je eenvoudigweg op andere apparaten invoert om hiermee te synchroniseren. Syncthing is overigens een opensource-project en heeft de specificatie van zijn Block Exchange Protocol (www.kwikr.nl/bep) gedocumenteerd.

1 Syncthing is een opensource-project voor bestandssynchronisatie.

Installeren

De downloadpagina biedt installatieprogramma’s voor Windows, macOS, Linux, FreeBSD en OpenBSD aan. Hiermee draait Syncthing als een service op de achtergrond, te configureren via een webgebaseerde interface. Download het installatieprogramma voor je besturingssysteem en voer het uit. Voor de meeste Linux-distributies zit Syncthing ook in de officiële repository’s, maar voor Ubuntu en Debian gebruik je bij voorkeur de repository (www.kwikr.nl/2w) van Syncthing voor de recentste versie. Het project verwijst ook naar Community Contributions (www.kwikr.nl/2x), waar je grafische applicaties voor allerlei besturingssystemen vindt, evenals add-ons voor een NAS van Synology of QNAP en voor Home Assistant, en apps van derden voor Android en iOS. Op de mobiele apps gaan we aan het einde van dit artikel even in om te beschrijven hoe je bestanden op je telefoon synchroniseert.

Je kunt Syncthing op allerlei apparaten installeren, bijvoorbeeld ook op je NAS.

Syncthing Tray

Voor de standaardversie van Syncthing is het in Windows wat lastig om te configureren dat die automatisch als service opstart. De pagina Starting Syncthing Automatically (www.kwikr.nl/2y) legt enkele manieren uit om dit voor elkaar te krijgen, maar je kunt ook in plaats daarvan het programma Syncthing Tray (www.kwikr.nl/2z) installeren. Syncthing Tray ondersteunt ook Linux en Android en voegt een pictogram in de statusbalk toe van waaruit je met een menu allerlei acties kunt uitvoeren.

In deze masterclass leggen we de installatie met Syncthing Tray uit. Dat programma is overigens geen volwaardige vervanging voor de webinterface van Syncthing zelf: voor veel taken heb je die laatste nog altijd nodig. Download de Tray application op de downloadpagina van het project en installeer deze. De eerste keer dat je Syncthing Tray uitvoert, krijg je de vraag hoe je het programma wilt configureren. Kies voor Start guided setup en daarna Yes, continue configuration. Selecteer in de volgende stap Start Syncthing application that is built into Syncthing Tray en klik op Next. Vink vervolgens Start Syncthing Tray on login aan en klik op Next en tot slot op Apply.

3 Kies voor de ‘guided setup’ om Syncthing Tray te installeren.

Unieke code

Wanneer de installatie is voltooid, krijg je een lange reeks letters en cijfers te zien, aangevuld met een QR-code die dezelfde reeks voorstelt. Dit is de ID van je apparaat, en hiermee kun je vanaf een ander apparaat waarop je Syncthing hebt geïnstalleerd de koppeling tussen beide apparaten initiëren. Je kunt het hier getoonde ID kopiëren, maar het is later ook nog eenvoudig op te vragen. Klik dus gewoon op Finish om het installatieprogramma te verlaten.

Installeer nu op dezelfde manier Syncthing, Syncthing Tray of een van de andere clients op je andere apparaten. Klik op het pictogram van Syncthing Tray in de statusbalk en kies Open Syncthing om de webinterface van Syncthing te openen. Dat kan ook door in je webbrowser http://localhost:8384 te bezoeken.

De eerste keer krijg je de vraag of je anonieme statistieken wilt doorsturen. Er staat ook een waarschuwing bovenaan dat je geen wachtwoord hebt ingesteld. De webinterface is alleen vanaf je eigen computer bereikbaar, maar je kunt voor extra veiligheid een wachtwoord instellen. Het belangrijkste nu is om onder This Device te kijken, waar je naast Identification een lange code van letters en cijfers ziet staan. Klik hierop om het volledige ID en de bijbehorende QR-code van je Syncthing-apparaat weer te zien.

4 Ieder Syncthing-apparaat identificeer je aan de hand van een ID.

Apparaten koppelen

Om nu andere apparaten te koppelen om je bestanden mee te synchroniseren, klik je onderaan rechts op Add Remote Device. Vul dan de ID van het andere apparaat in of klik op een van de ID’s van de automatisch ontdekte apparaten. Syncthing-apparaten die zich op hetzelfde lokale netwerk bevinden, ontdekken elkaar immers via multicast-pakketten. Geef het apparaat dan een naam onder Device Name en ken het optioneel toe aan een groep. Klik vervolgens op Save.

Kijk hierna in de webinterface van het andere apparaat. Daar geeft Syncthing een melding dat het ene apparaat wil verbinden. Kijk na of de ID overeenkomt. Indien ja, klik dan op Add Device. Eventueel kun je hier de naam nog veranderen waaronder het apparaat voor deze Syncthing-installatie zichtbaar is. Nadat je op Save hebt geklikt, zien beide apparaten elkaar onder Remote Devices met de status Connected (Unused). Het pictogram van Syncthing Tray in de statusbalk is nu ook groen geworden.

5 Voeg je andere apparaten aan je Syncthing-apparaat toe.

Mappen toevoegen

Dan kun je nu op elk apparaat kiezen welke mappen je wilt synchroniseren. Voeg een nieuwe map toe met een klik op Add Folder onder Folders. Op het tabblad General zijn alleen Folder ID en Folder Path verplicht. Folder ID identificeert de te synchroniseren map onder al je apparaten. Syncthing vult hier zelf al een ID in. Bij Folder Path vul je het pad in van de map op je computer die je wilt synchroniseren. Optioneel voeg je ook een label (beschrijving) en groep toe, maar die hebben geen invloed op de synchronisatie zelf en kunnen op elk apparaat verschillen.

Op het tabblad Sharing kies je dan met welke apparaten je de map wilt delen. Laat de andere tabbladen voorlopig links liggen en klik op Share om de map te delen. Op het andere apparaat toont de webinterface van Syncthing nu de boodschap dat het eerste apparaat de map wil delen. Kijk na of de ID klopt en klik op Add om het delen te bevestigen. Het label en de ID van de map zijn nu al ingevuld, je moet alleen nog invullen met welke lokale map op dit apparaat je de map van het andere apparaat wilt synchroniseren. Als de map nog niet bestaat, maakt Syncthing die aan. Klik op Save om te bevestigen.

6 Syncthing vraagt om deze map van een ander apparaat te synchroniseren.

Synchronisatie

Syncthing scant nu eerst alle bestanden in de te synchroniseren map, wat voor grote mappen even kan duren. Nadat dit is gebeurd, worden alle bestanden een voor een doorgestuurd naar het andere apparaat. Op elk moment krijg je bij de map onder Folders de status te zien. Klik je op de map, dan ontvouwt zich een tabel met meer informatie, zoals het aantal nog te synchroniseren items, de laatste verandering en met welke apparaten de map is gedeeld.

Je kunt nu perfect extra apparaten en extra mappen toevoegen en synchronisaties in gang zetten. Syncthing laat alles op de achtergrond draaien en toont je in de webinterface continu de status. Onder Remote Devices zie je welke apparaten zijn verbonden, of ze up-to-date zijn of aan het synchroniseren. En onder This Device zie je hoeveel bestanden, mappen en opslagruimte je lokale Syncthing-installatie beheert.

7 Syncthing is deze map aan het synchroniseren.
Synchroniseren is geen back-up

Het is verleidelijk om te denken dat je geen back-ups meer nodig hebt als je mappen synchroniseert tussen verschillende apparaten. Je hebt dan immers kopieën van je bestanden op meerdere plaatsen. Maar Syncthing is geen back-upprogramma. Als je bijvoorbeeld per ongeluk een hoop foto’s verwijdert op je telefoon, worden die foto’s onmiddellijk ook verwijderd in de gesynchroniseerde fotomap op je andere apparaten. Je kunt in het tabblad File Versioning van een map wel instellen dat Syncthing vorige versies bijhoudt, maar het is beter om een afzonderlijke back-uptoepassing te gebruiken.

Eenrichtingsverkeer

Standaard staat Folder Type in het tabblad Advanced op Send & Receive. Dit betekent dat beide apparaten de inhoud van de map in beide richtingen synchroniseren. Als je op apparaat A iets verandert in de map, stuurt Syncthing de verandering onmiddellijk naar apparaat B. En als je op apparaat B iets verandert in de map, stuurt Syncthing de verandering onmiddellijk naar apparaat A. Dat werkt meestal goed. Als een bestand op beide apparaten tegelijk (of vaker: tijdens een periode dat ze niet zijn verbonden) wordt aangepast, kopieert Syncthing op elk apparaat de conflicterende versie naar een bestand <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. Je moet dan zelf nakijken welke versie je wilt behouden.

Als je het type map op Send Only zet, worden de wijzigingen van de map op dit apparaat verzonden naar andere apparaten. Maar als de andere apparaten iets in die map veranderen, worden die veranderingen niet doorgevoerd op dit apparaat. Dit kun je bijvoorbeeld gebruiken voor een apparaat met weinig opslagruimte, zoals een smartphone of tablet. Van een map met foto’s die je op je telefoon als Send Only definieert, worden dan kopieën naar andere apparaten gestuurd, maar foto’s van alle andere apparaten komen niet op je smartphone terecht. Receive Only kun je gebruiken als doel van zo’n Send Only-map op een ander apparaat.

Kies in welke richting Syncthing je map synchroniseert.

9 Centrale server

Er is één situatie die wat extra aandacht vereist. Als apparaten waartussen je mappen wilt synchroniseren zelden tegelijk online zijn, is het risico groot dat ze ‘out of sync’ raken. Dat kan bijvoorbeeld het geval zijn als je een map wilt synchroniseren tussen je werklaptop en je privélaptop. Je werklaptop heb je overdag aan en klap je na de werkuren dicht, waarna je je privélaptop opent, die je voor het slapengaan weer afsluit. Zo hebben beide laptops zelden de kans om bestanden te synchroniseren. En dat vergroot de kans op conflicten.

In zo’n situatie is het nuttig om Syncthing te draaien op een server die altijd online is, zoals een Raspberry Pi, Linux-server of een NAS. Je laat beide apparaten dan met deze Syncthing-server synchroniseren (Send & Receive). De werklaptop synchroniseert zijn veranderingen aan de map dan realtime met de server. Wanneer de privélaptop online komt, haalt die alle veranderingen aan de map van de Syncthing-server. Die server neemt ook veranderingen van de privélaptop aan, om de volgende dag onmiddellijk met de werklaptop te synchroniseren.

Een centrale Syncthing-server vereenvoudigt de synchronisatie tussen meerdere apparaten.

Bestanden negeren

Als je een map hebt ingesteld in Syncthing, kun je de instellingen altijd aanpassen. Klik daarvoor op Edit wanneer je de map hebt uitgeklapt in de webinterface. Een van de interessante instellingen is Ignore Patterns in het gelijknamige tabblad. In het tekstveld dat daar verschijnt, voeg je voor elk patroon van bestandsnamen dat je wilt negeren een nieuwe regel toe.

De eenvoudigste vorm van een patroon is een letterlijke bestandsnaam. Wil je bijvoorbeeld vermijden dat de .DS_Store-bestanden die macOS aanmaakt op andere apparaten terechtkomen, voeg dan eenvoudigweg .DS_Store aan de Ignore Patterns toe. Maar als het andere apparaat dan de gesynchroniseerde map volledig verwijdert, wordt die op je Mac niet verwijderd. Dit komt doordat de map het niet-gesynchroniseerde bestand .DS_Store bevat dat niet verwijderd mag worden. Om dat wel toe te staan, gebruik je als patroon (?d).DS_Store.

Stel in welke bestanden Syncthing voor deze map negeert.

11 Complexe patronen

We willen je nog iets meer uitleg geven over de patronen. Een patroon als foo is van toepassing op het bestand foo, het bestand foo in iedere subdirectory, en de directory foo. Een sterretje (*) staat voor nul of meer willekeurige tekens in een bestandsnaam en een vraagteken (?) voor precies één willekeurig teken. Tussen rechte haken kun je een heel bereik van tekens opgeven. Zo staat het patroon [A-Z] voor een willekeurige hoofdletter.

Syncthing slaat deze patronen die je definieert op in een bestand met de naam .stignore in de map, dat overigens niet wordt gesynchroniseerd. Je kunt in het menu Actions / Advanced / Defaults / Default Ignore Patterns standaardpatronen instellen die Syncthing automatisch gebruikt bij het toevoegen van een map. Die zijn daarna uiteraard nog map per map aan te passen.

Stel in welke bestanden Syncthing standaard negeert.

Syncthing op Android

Syncthing biedt geen officiële app voor mobiele platformen aan, maar voor Android bestaat er Syncthing-Fork (www.kwikr.nl/30) en voor iOS Sushitrain (www.kwikr.nl/31). De Android-app dien je machtigingen te geven voor toegang tot je bestanden, meldingen en je locatie (om bijvoorbeeld alleen te synchroniseren op je wifi-netwerk).

De app heeft drie tabbladen: Mappen, Apparaten en Status. Voeg hier net als op je andere apparaten eerst apparaten toe op basis van hun ID, daarna de mappen die je wilt synchroniseren, en kies met welke apparaten je dat wilt doen. Je kunt op ieder moment de status volgen in een van de tabbladen. Met een klik op het menu en dan Instellingen en Syncvoorwaarden kies je op welke netwerken Syncthing synchroniseert. En indien je geavanceerdere mogelijkheden nodig hebt, klik dan links op het menu en vervolgens op Web-interface om de interface van Syncthing zelf te openen.

12 Syncthing kan ook je Android-telefoon synchroniseren.
In het kort

Syncthing synchroniseert bestanden realtime tussen meerdere apparaten zonder centrale server. Je koppelt apparaten met een unieke apparaat-ID en kiest per map met welke apparaten en in welke richting de synchronisatie loopt. De tool werkt op Windows, macOS en Linux en kan via apps van derden ook op Android en iOS worden gebruikt. Synchronisatie is geen back-up: verwijderde of gewijzigde bestanden kunnen ook op andere apparaten worden aangepast.

Veelgestelde vragen

Wat kost Syncthing voor thuisgebruik?

Syncthing is gratis te gebruiken en opensource. Je betaalt dus niet voor een account, abonnement of opslagbundel zoals bij veel clouddiensten. Eventuele kosten zitten in je eigen apparatuur, bijvoorbeeld een NAS, Raspberry Pi of thuisserver die je altijd online laat staan. Ook stroomverbruik en opslagruimte zijn voor eigen rekening. Syncthing levert geen cloudruimte, maar synchroniseert de opslag die al op je apparaten aanwezig is.

Hoe veilig is Syncthing op een openbaar wifi-netwerk?

Syncthing versleutelt het verkeer tussen apparaten met TLS en laat alleen apparaten toe die je zelf hebt goedgekeurd. Dat maakt de inhoud van je bestanden goed beschermd op openbare wifi. Wel kan zichtbaar zijn dat je Syncthing gebruikt, en metadata zoals apparaat-ID’s kunnen onder bepaalde omstandigheden uitlekken. Stel daarom een wachtwoord in voor de webinterface en verwijder verloren apparaten direct uit je configuratie.

Welke apparaten kun je met Syncthing gebruiken?

Syncthing is beschikbaar voor desktops en servers met Windows, macOS, Linux, FreeBSD en OpenBSD. Voor Android en iOS bestaan vooral community-apps en wrappers, zoals Syncthing-Fork voor Android en Synctrain of Sushitrain voor iOS. Die mobiele apps kunnen door platformbeperkingen anders werken dan de desktopversie. Controleer daarom per apparaat of achtergrondtaken, batterijbesparing en bestandstoegang goed zijn ingesteld.

Wat is beter, Syncthing of een cloudopslagdienst?

Syncthing is beter als je bestanden direct tussen eigen apparaten wilt synchroniseren zonder centrale cloudopslag. Een cloudopslagdienst is handiger wanneer je bestanden ook via een webinterface wilt openen, eenvoudig wilt delen met anderen of wilt blijven synchroniseren terwijl je eigen apparaten uitstaan. De beste keuze hangt af van je behoefte aan gemak, controle, opslagruimte en beschikbaarheid buiten je eigen netwerk.

Waarom vervangt synchronisatie geen back-up?

Synchronisatie is geen back-up, omdat 1 fout zich direct naar andere apparaten kan verspreiden. Verwijder je per ongeluk een map of raakt een bestand beschadigd, dan kan die wijziging overal worden doorgevoerd. Gebruik daarom naast Syncthing een echte back-upstrategie, bijvoorbeeld met meerdere kopieën op verschillende media en 1 kopie buiten huis. Versiebeheer helpt, maar is geen volwaardige vervanging voor back-ups.

Hoe voorkom je conflicten bij synchroniseren tussen meerdere apparaten?

Conflicten ontstaan vooral wanneer hetzelfde bestand op 2 apparaten wordt aangepast terwijl die apparaten elkaar niet kunnen bereiken. Laat apparaten daarom regelmatig tegelijk online zijn of gebruik een altijd actieve tussenstop, zoals een NAS, Raspberry Pi of thuisserver. Werk liever niet gelijktijdig offline aan hetzelfde document. Voor belangrijke mappen is versiebeheer verstandig, zodat je bij een conflict een oudere versie kunt terughalen.