Null Konten. Das ist die Zahl, an der sich Syncthing von Dropbox, Google Drive und OneDrive unterscheidet. Bei denen legst du ein Konto an, lädst deine Dateien auf einen Server des Anbieters, und der verteilt sie an deine Geräte. Bei Syncthing gibt es diesen Server in der Mitte nicht. Dein PC redet direkt mit deinem Homelab-Server, der mit deinem Handy, und was dabei über die Leitung geht, ist verschlüsselt und bleibt im Normalfall in deinem Netz. Niemand zählt Gigabyte, niemand kann das Konto sperren, weil es keins gibt.

Der Preis dafür: Die Kopplung machst du selbst. Jedes Gerät hat eine Kennung, und zwei Geräte reden erst miteinander, wenn beide die Kennung des anderen kennen. Genau an dieser Stelle bleiben Einsteiger hängen, weil die offizielle Doku sie auf drei Seiten verteilt. Hier steht sie am Stück: Syncthing als Container auf dem Server, ein PC als zweites Gerät, ein Ordner, der auf beiden Seiten gleich bleibt.

Kurz gesagt: Am Ende läuft Syncthing als Docker-Container auf deinem Server, dein PC ist als Gerät gekoppelt, ein Ordner gleicht sich in beide Richtungen ab, die Weboberfläche hat ein Passwort und der Ordner eine Versionierung, weil Sync kein Backup ist. Dauer: rund 30 Minuten. Stufe: Standard, Docker und Kommandozeile im Groben bekannt, alles Weitere wird erklärt. Stand: Syncthing 2.1.5, geprüft am 27-09-2026.
Schaubild: Syncthing in drei Schritten: Container mit compose.yaml im Host-Netz starten, Geräte über die Kennung koppeln und auf dem Server bestätigen, Ordner am PC freigeben und am Server annehmen, dazu Dateiversionierung
Der ganze Weg auf einen Blick: Container starten, Geräte koppeln, Ordner teilen.

Was Syncthing ist, und was es nicht ist

Syncthing ist ein Programm, das auf jedem deiner Geräte läuft und dafür sorgt, dass ein Ordner überall denselben Inhalt hat. Änderst du eine Datei am PC, landet die Änderung auf dem Server und von dort auf dem Handy. Löschst du sie, ist sie überall weg. Es gibt keine zentrale Kopie, jedes Gerät hält seine eigene, und die Geräte gleichen sich untereinander ab. Ein Server im Homelab ist dabei nur das Gerät, das immer an ist: Wenn PC und Handy nie gleichzeitig laufen, trägt er die Änderungen dazwischen.

Gerätekennung? Jedes Syncthing-Gerät erzeugt beim ersten Start ein eigenes Zertifikat, den Ausweis, mit dem es sich gegenüber anderen Geräten ausweist. Die Gerätekennung (Device ID) ist der Fingerabdruck dieses Ausweises, 56 Zeichen in acht Blöcken wie MFZWI3D-BONSGYC-…. Sie ist kein Geheimnis, du darfst sie herumzeigen; ohne den privaten Schlüssel dahinter kann niemand etwas damit anfangen. Geheim ist die Datei key.pem im Konfigurationsordner.
PC→ Port 22000, verschlüsselt →Syncthing im Homelab→ Port 22000, verschlüsselt →Handy

Was Syncthing nicht ist, sagt die FAQ des Projekts selbst, und ich zitiere das, weil es die Frage ist, die im Forum am häufigsten falsch beantwortet wird: „No. Syncthing is not a great backup application because all changes to your files (modifications, deletions, etc.) will be propagated to all your devices." Ein versehentliches Löschen am Handy kommt zuverlässig auf dem Server an. Was dagegen hilft, ist die Dateiversionierung, und die stellen wir am Ende ein.

Zwei Dinge zur Lage der Apps, damit du sie nicht erst im Store suchst. Die offizielle Android-App gibt es nicht mehr: Simon Frei aus dem Kernteam hat sie im Oktober 2024 im Forum abgekündigt, mit der Begründung, Google mache das Veröffentlichen im Play Store „something between hard and impossible", die letzte Version kam im Dezember 2024. Übernommen hat ein einzelner Entwickler mit Syncthing-Fork, das es auf F-Droid und im Play Store gibt; die Fork-Version 2.1.5.0 vom 11-09-2026 hält mit dem Kern Schritt. Dass ein Projekt dieser Größe auf Android an einer Person hängt, sagt mehr über die Stores als über Syncthing, und ich gönne ihm jeden Stern. Für iOS gibt es nichts Offizielles und laut FAQ auch keine Pläne; sie nennt die quelloffene App Sushitrain und die kostenpflichtige Möbius Sync.

Und wer eine Cloud mit Weboberfläche, Kalender und Freigabe-Links will, ist bei Nextcloud richtig. Syncthing macht eine Sache: Ordner gleich halten. Dafür macht es sie ohne Datenbank, ohne PHP und ohne vier Container.

Was du brauchst

  • Einen Linux-Rechner mit Docker und Compose, der durchläuft. Prüfen: docker compose version muss eine Versionsnummer ausgeben. Fehlt Docker, steht die Installation in der Compose-Anleitung für Einsteiger, Schritt 1.
  • Seine IP-Adresse im Heimnetz, und die sollte sich nicht ändern. hostname -I zeigt sie; fest machst du sie im Router, bei der FritzBox über „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen".
  • Deine Benutzer-ID auf diesem Rechner. id -u gibt beim ersten angelegten Benutzer 1000 aus; steht da etwas anderes, trägst du das gleich in die Compose-Datei ein.
  • Port 8384 und 22000 frei: sudo ss -tulpn | grep -E ':(8384|22000) ' darf nichts ausgeben.
  • Ein zweites Gerät. In dieser Anleitung ist es ein Windows-PC; ein Linux-Desktop oder ein Android-Handy geht genauso, dazu in Schritt 4 ein Absatz.
So liest du diese Anleitung: Alles, was du selbst tun sollst, steht in einem farbigen Kasten. [ per klick ] heißt: Das erledigst du mit der Maus in einer Web-Oberfläche, hier der Weboberfläche von Syncthing im Browser, einmal die des Servers, einmal die des PCs. [ über die shell ] heißt: Den Befehl kopieren, ins Terminal einfügen, Enter. Stehen beide Kästen direkt untereinander, führen sie zum selben Ergebnis. Du gehst EINEN davon, nicht beide.

Alle Befehle und Klicks rechnen mit denselben Beispielwerten. Wo sie unten auftauchen, setzt du deine ein:

  • IP-Adresse des Servers: 192.168.178.20
  • Ordner für die Compose-Datei: ~/syncthing (das ~ steht für dein Home-Verzeichnis)
  • Datenordner auf dem Server: ~/syncthing/data, im Container /var/syncthing
  • Benutzer-ID und Gruppen-ID auf dem Server: 1000 und 1000
  • Gerätename des Servers in Syncthing: homelab-sync; Gerätename des PCs: buero-pc
  • Weboberfläche des Servers: http://192.168.178.20:8384; die des PCs: http://127.0.0.1:8384
  • Benutzer für die Weboberfläche: sakis, Passwort Ordnerkette-2026 als Platzhalter; du nimmst ein eigenes, langes
  • Erster gemeinsamer Ordner: Bezeichnung Dokumente, am PC C:\Users\sakis\Syncthing\Dokumente, am Server /var/syncthing/Dokumente

Schritt 1: Ordner und compose.yaml anlegen

Syncthing bekommt einen eigenen Ordner, darin die Compose-Datei und ein Unterordner data, in dem später Konfiguration und die synchronisierten Dateien liegen. Den Unterordner legst du selbst an, damit er dir gehört und nicht Root; warum das zählt, steht unter „Wo es klemmt".

Ordner anlegen und hineinwechseln:

mkdir -p ~/syncthing/data
cd ~/syncthing

Datei anlegen; nano ist ein Texteditor fürs Terminal:

nano compose.yaml

Inhalt einfügen, mit Strg+O und Enter speichern, mit Strg+X schließen. Die Einrückung mit zwei Leerzeichen gehört zur Datei:

services:
  syncthing:
    image: syncthing/syncthing:2
    container_name: syncthing
    hostname: homelab-sync
    environment:
      - PUID=1000
      - PGID=1000
      - STGUIADDRESS=0.0.0.0:8384
    volumes:
      - ./data:/var/syncthing
    network_mode: host
    restart: unless-stopped
    healthcheck:
      test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
      interval: 1m
      timeout: 10s
      retries: 3

Prüfen, ob Compose die Datei versteht:

docker compose config --quiet && echo "Datei in Ordnung"
Datei in Ordnung

Die Datei ist das Compose-Beispiel aus der Docker-Doku von Syncthing, an drei Stellen verändert, und die drei erkläre ich, weil sie die Entscheidungen dieser Anleitung sind. Sie ist im Sandkasten dieser Seite gelaufen, bevor sie hier steht.

  • image: syncthing/syncthing:2 statt latest. Das Projekt bietet den Tag 2 ausdrücklich an, um der Hauptversion zu folgen; damit bekommst du bei jedem pull die aktuelle 2.x, aber keine 3.0, die eines Tages wieder eine Datenbank-Migration mitbringt wie der Sprung von 1 auf 2.
  • STGUIADDRESS=0.0.0.0:8384 statt der leeren Variable aus dem Beispiel. Das offizielle Beispiel lässt die Variable leer, und dann lauscht die Weboberfläche laut README nur auf 127.0.0.1, also nur auf dem Server selbst. Auf einem Rechner mit Bildschirm ist das die sichere Wahl. Auf einem Server im Keller heißt es, dass du die Oberfläche von deinem PC aus nie zu sehen bekommst. Ich öffne sie deshalb fürs Heimnetz, und das Erste, was in Schritt 3 passiert, ist ein Passwort.
  • hostname: homelab-sync: Den Hostnamen des Containers zeigt Syncthing den anderen Geräten als Gerätename. Ohne die Zeile hieße dein Server nach einer zufälligen Container-Kennung.

Die Zeile, die auffällt, ist network_mode: host. Sie ist keine Änderung, sie steht so im Beispiel, und die Doku nennt sie „strongly recommended".

network_mode: host? Normalerweise bekommt ein Container ein eigenes kleines Netz hinter Docker, mit einer Adresse wie 172.17.0.2, und du bohrst mit ports: einzelne Löcher hinein. Im Host-Modus fällt diese Trennung weg: Der Container benutzt die Netzwerkkarte des Servers direkt, sieht dessen Adresse 192.168.178.20 und lauscht auf dessen Ports. Syncthing braucht das, weil es andere Geräte im Heimnetz per Rundruf findet, und diese Rundrufe kommen aus Dockers Privatnetz nicht heraus. Der Preis: Es gibt keine ports:-Zeilen mehr, Syncthing entscheidet allein, worauf es lauscht, und eine Firewall auf dem Server gilt für den Container wirklich, anders als sonst bei Docker.

PUID und PGID sagen dem Container, unter welcher Benutzer- und Gruppen-ID Syncthing laufen soll; mit 1000 gehören alle Dateien, die es in data schreibt, dir und nicht Root. Hat id -u oben etwas anderes gezeigt, trägst du das hier ein. Der healthcheck fragt einmal pro Minute die Gesundheitsseite ab, die Syncthing ohne Anmeldung ausliefert, damit docker compose ps gleich „healthy" sagen kann.

Schritt 2: Starten und prüfen

Der eine Befehl lädt das Image, ein kleines auf Alpine-Basis, und startet den Container im Hintergrund.

docker compose up -d
 Image syncthing/syncthing:2 Pulling
 Image syncthing/syncthing:2 Pulled
 Container syncthing Creating
 Container syncthing Created
 Container syncthing Starting
 Container syncthing Started

Zwischen Pulling und Pulled läuft der Download-Fortschritt durch, ein paar Dutzend Zeilen. Kein Netz und kein Volume in der Ausgabe, weil beides in dieser Datei nicht vorkommt: Das Netz ist das des Servers, der Speicher ist dein Ordner. Dann die Frage, ob der Container auch gesund ist und nicht nur gestartet:

docker compose ps
NAME        IMAGE                   COMMAND                  SERVICE     CREATED              STATUS                        PORTS
syncthing   syncthing/syncthing:2   "/bin/entrypoint.sh …"   syncthing   About a minute ago   Up About a minute (healthy)

Die Spalte STATUS zählt. Direkt nach dem Start steht dort (health: starting), nach der ersten Minute (healthy). Die Spalte PORTS bleibt leer, das ist im Host-Modus richtig so. Was Syncthing beim Start getan hat, zeigen die Logs:

docker compose logs --tail 20

Darin stehen unter anderem die Zeile Calculated our device ID mit der Kennung deines Servers und eine Zeile GUI and API listening, die den Port 8384 nennt. Dann der direkte Klopftest an die Gesundheitsseite:

curl -s http://127.0.0.1:8384/rest/noauth/health
{
  "status": "OK"
}

Das war es schon mit der Installation, und ich gebe zu, dass mich ein Dienst, der nach einem Befehl gesund meldet, kurz misstrauisch macht. Hier ist es in Ordnung: Syncthing hat noch nichts zu tun, weil es noch kein anderes Gerät kennt. Die eigentliche Arbeit kommt jetzt, und sie passiert im Browser.

Schritt 3: Weboberfläche öffnen und absichern

Die Oberfläche folgt der Sprache deines Browsers; ich nenne die deutschen Bezeichnungen und in Klammern die englischen, falls dein Browser Englisch meldet. Bis zum Ende dieses Schritts kann jeder im Heimnetz die Seite öffnen. Das dauert eine Minute, und so lange ist es mir egal; danach nicht mehr.

Im Browser http://192.168.178.20:8384 öffnen (Stand Syncthing 2.1). Beim ersten Aufruf fragt ein Fenster Übertragung von anonymen Nutzungsberichten erlauben? (Allow Anonymous Usage Reporting?); mit Ja oder Nein antworten, das lässt sich später ändern. Danach warnt die Startseite in einem roten Kasten, dass die Oberfläche noch ohne Passwort erreichbar ist; der Knopf Einstellungen darin führt zum selben Reiter wie der Weg über Aktionen. Dann oben rechts Aktionen (Actions), dort Einstellungen (Settings), im Fenster den Reiter GUI. Bei Benutzername für Zugang zur Benutzeroberfläche (GUI Authentication User) sakis eintragen, bei Passwort für Zugang zur Benutzeroberfläche (GUI Authentication Password) dein Passwort. Unten Speichern (Save). Syncthing lädt die Oberfläche neu und zeigt die Anmeldeseite; dort mit sakis und dem Passwort anmelden.

Die Startseite von Syncthing fragt beim ersten Aufruf, ob anonyme Nutzungsberichte erlaubt sind, mit den Knöpfen Yes und No.
(1) Frage beim ersten Aufruf; (2) Mit Ja oder Nein antworten
Der Reiter GUI in den Syncthing-Einstellungen mit dem Benutzernamen sakis und dem ausgefüllten Passwortfeld, unten der Knopf Save.
(1) Reiter GUI; (2) Benutzername: sakis; (3) Speichern
Die Anmeldeseite von Syncthing mit dem Benutzer sakis, dem ausgefüllten Passwortfeld und dem Knopf Log In.
(1) Benutzer: sakis; (2) Anmelden

Erscheint die Anmeldeseite, ist die Tür zu. Im selben Reiter siehst du das Feld Adresse der Benutzeroberfläche (GUI Listen Address) mit dem Hinweis, dass es durch Startoptionen überschrieben wird; das ist unsere Variable STGUIADDRESS, und wer die Adresse ändern will, ändert sie in der Compose-Datei, nicht hier. Den Haken HTTPS für Benutzeroberfläche verwenden (Use HTTPS for GUI) lasse ich im Heimnetz aus, weil er nur ein selbst ausgestelltes Zertifikat bringt und der Browser dann bei jedem Aufruf warnt. Anders wäre das, sobald die Oberfläche von außen erreichbar ist, und das ist sie hier nicht.

Die Frage nach dem Nutzungsbericht ist echtes Opt-in: Ohne Ja wird nichts gesendet. Ich würde Ja sagen, weil das Projekt quelloffen ist und aus den Zahlen sieht, welche Versionen und Systeme noch im Einsatz sind, aber es ist deine Entscheidung, und Nein kostet dich nichts.

Schritt 4: Syncthing auf dem PC installieren

Syncthing selbst ist auf jeder Plattform dasselbe Programm mit derselben Weboberfläche. Was sich unterscheidet, ist die Hülle, die es im Hintergrund startet. Für Windows empfiehlt die Download-Seite des Projekts zwei davon; ich nehme den Installer, weil er Autostart und Update in einem erledigt.

Auf syncthing.net/downloads im Abschnitt Windows den Link Syncthing Windows Setup öffnen, dort die aktuelle Datei nach dem Muster syncthing-windows-amd64-v2.1.5.zip laden, entpacken und den Installer starten. Die Vorgabe „nur für diesen Benutzer" lassen: Syncthing landet dann in deinem Benutzerprofil und startet bei jeder Anmeldung von selbst. Danach im Browser http://127.0.0.1:8384 öffnen. Fragt Windows beim ersten Start, ob syncthing.exe im Netzwerk kommunizieren darf, für private Netzwerke zulassen. Die Frage nach dem Nutzungsbericht beantworten wie am Server.

Auf dem PC braucht die Oberfläche kein Passwort, weil sie nur unter 127.0.0.1 lauscht, also nur für den, der vor dem Rechner sitzt. Wer stattdessen einen Linux-Desktop koppelt, nimmt das Paket aus dem offiziellen apt-Repository; die vier Zeilen dafür stehen auf apt.syncthing.net, und danach startet systemctl --user enable --now syncthing.service den Dienst bei jeder Anmeldung. Auf Android installierst du Syncthing-Fork aus F-Droid oder dem Play Store; die App bringt eine eigene Oberfläche mit, die Kopplung läuft aber genauso wie unten, und den Dialog mit der Kennung kann sie als QR-Code einlesen.

Schritt 5: Die Geräte koppeln

Jetzt der Teil, der in der Doku über drei Seiten geht. Das Prinzip: Der PC bekommt die Kennung des Servers, meldet sich damit, und der Server bestätigt. Erst dann reden beide. Zuerst die Kennung des Servers holen:

In der Oberfläche des Servers (http://192.168.178.20:8384) oben rechts Aktionen, dann Eigene Kennung (Show ID). Das Fenster zeigt die Kennung als Text und als QR-Code. Den Text markieren und kopieren, oder den Knopf Kopieren neben der Kennung drücken, der dasselbe mit einem Klick erledigt.

Das Fenster Device Identification von homelab-sync zeigt die Gerätekennung als Text und QR-Code, daneben der Knopf Copy.
(1) Kennung des Servers; (2) Kopieren

Dann am PC das Gerät eintragen. Weil beide im selben Netz sind und der Server im Host-Modus läuft, hat der PC ihn per Rundruf meist schon gesehen und bietet ihn an; die Kennung einzufügen ist der Weg, der immer geht:

In der Oberfläche des PCs (http://127.0.0.1:8384) unten rechts Gerät hinzufügen (Add Remote Device). Steht unter Sie können auch eines dieser in der Nähe befindlichen Geräte auswählen die Kennung des Servers, darauf klicken; sonst die kopierte Kennung ins Feld Gerätekennung (Device ID) einfügen. Bei Gerätename (Device Name) homelab-sync eintragen. Unten Speichern.

Der PC versucht ab jetzt, den Server zu erreichen, und der Server kennt den PC noch nicht. Deshalb bekommt der Server eine Anfrage, und die musst du annehmen:

Zurück in der Oberfläche des Servers. Oben erscheint nach wenigen Sekunden ein Hinweis Gerät „buero-pc" (…) möchte sich verbinden. Gerät hinzufügen? Dort auf Gerät hinzufügen (Add Device) klicken. Das Fenster ist schon ausgefüllt; bei Gerätename steht der Name des PCs, den du ändern kannst. Speichern.

Kommt der Hinweis nicht, lade die Seite einmal neu. Die Erfolgskontrolle steht auf beiden Seiten rechts unter Externe Geräte (Remote Devices): Der Eintrag des jeweils anderen Geräts wechselt von Getrennt auf Verbunden (Connected), und wenn du ihn aufklappst, steht bei Adresse eine 192.168.178.-Adresse mit Port 22000 und bei der Verbindung tcp-client oder tcp-server. Das ist der Moment, den ich bei Syncthing am liebsten mag: zwei Geräte, die sich ohne Konto, ohne Server und ohne Anmeldung gefunden haben, allein über einen Fingerabdruck. Kurz freuen, dann weiter, denn noch teilen sie nichts.

Schritt 6: Den ersten Ordner teilen

Ein Ordner wird in Syncthing zweimal angelegt: einmal auf dem Gerät, das ihn anbietet, einmal auf dem, das ihn annimmt. Beide dürfen einen anderen Pfad haben, sie teilen nur die Ordnerkennung. Für den ersten Versuch nimm einen neuen, leeren Ordner und nicht deine echten Dokumente; die kommen dran, wenn du gesehen hast, wie es sich verhält.

Am PC im Explorer den Ordner C:\Users\sakis\Syncthing\Dokumente anlegen. Dann in der Oberfläche des PCs links oben Ordner hinzufügen (Add Folder). Bei Ordnerbezeichnung (Folder Label) Dokumente eintragen; die Ordnerkennung (Folder ID) darunter füllt Syncthing mit einer Zufallskennung, die bleibt so. Bei Ordnerpfad (Folder Path) C:\Users\sakis\Syncthing\Dokumente. Oben im Fenster auf den Reiter Teilen (Sharing) wechseln und den Haken bei homelab-sync setzen. Unten Speichern.

Der Server bekommt wieder eine Anfrage, diesmal für den Ordner, und beim Annehmen legst du fest, wo er auf dem Server liegen soll:

In der Oberfläche des Servers erscheint oben buero-pc möchte den Ordner „Dokumente" (…) teilen. Dort auf Hinzufügen (Add) klicken. Im Fenster ist die Ordnerkennung schon eingetragen; bei Ordnerpfad /var/syncthing/Dokumente eintragen. Steht dort ein Vorschlag mit ~, ist das derselbe Ort, denn ~ ist im Container /var/syncthing. Speichern.

Der Ordner existiert auf dem Server noch nicht; Syncthing legt ihn an. Auf dem Server liegt er dann unter ~/syncthing/data/Dokumente, weil /var/syncthing im Container dein data-Ordner ist. Der Beweis ist eine Datei: Lege am PC in den Ordner eine Textdatei hallo.txt, warte ein paar Sekunden, dann auf dem Server:

ls -la ~/syncthing/data/Dokumente
drwxr-xr-x 3 sakis sakis 4096 27. Sep 10:12 .
drwxr-xr-x 4 sakis sakis 4096 27. Sep 10:12 ..
drwxr-xr-x 2 sakis sakis 4096 27. Sep 10:12 .stfolder
-rw-r--r-- 1 sakis sakis   14 27. Sep 10:12 hallo.txt

Zwei Dinge in dieser Ausgabe: Die Datei gehört sakis, nicht Root, das ist PUID bei der Arbeit. Und der leere Ordner .stfolder ist die Markierung, an der Syncthing erkennt, dass dieser Ordner ihm gehört; wird sie gelöscht, hört Syncthing hier auf zu synchronisieren, statt versehentlich alles zu löschen. In den Oberflächen steht der Ordner jetzt auf beiden Seiten mit Aktuell (Up to Date). Ab hier ist jede Änderung auf einer Seite nach Sekunden auf der anderen.

Was am Ende eingestellt ist

  1. Die Oberfläche des Servers hat ein Passwort, aber kein HTTPS. Sie ist im ganzen Heimnetz erreichbar und aus dem Internet nicht, solange im Router keine Freigabe für 8384 steht, und die würde ich nie anlegen. Wer von unterwegs an die Oberfläche will, geht durch ein VPN ins Heimnetz; für den Sync selbst braucht es das nicht, dazu Punkt 4.
  2. Der Ordner ist vom Typ „Senden & Empfangen". Im Reiter Erweitert (Advanced) des Ordners gibt es außerdem Nur senden und Nur empfangen. Sie steuern, wer Änderungen verteilen darf, aber sie verhindern kein Löschen, das vom sendenden Gerät kommt. Die Versionierung ist der Schutz, der Typ ist Ordnung.
  3. Globale Gerätesuche und Weiterleitung sind an. Der Server meldet alle 30 Sekunden per Rundruf ins Heimnetz, dass es ihn gibt, das ist die lokale Gerätesuche, die Schritt 5 so kurz gemacht hat. Zusätzlich meldet er Kennung und Port an die Discovery-Server des Projekts und darf über dessen Relais reden; so findet dich das Handy auch aus dem Mobilfunknetz, und die Daten bleiben laut Security-Seite auch über ein Relais Ende-zu-Ende verschlüsselt. Wer nur im Heimnetz synchronisiert, schaltet beides unter Aktionen, Einstellungen, Reiter Verbindungen (Connections) aus: Globale Gerätesuche (Global Discovery) und Weiterleitung aktivieren (Enable Relaying). Ich lasse beides an, weil das Handy von unterwegs der halbe Grund für Syncthing ist, und eine öffentliche Kennung verrät nichts, was ein Angreifer brauchen könnte.
  4. Updates kommen mit pull, nicht von selbst. Der Tag 2 folgt der Hauptversion, also im Ordner ~/syncthing einmal im Monat docker compose pull und docker compose up -d. Das Projekt liefert stabile Versionen laut apt-Seite meist am ersten Dienstag des Monats, und die Release Notes auf GitHub sind kurz genug, um sie vorher zu lesen.
  5. Das Backup ist ein Ordner, und die Identität liegt darin. ~/syncthing/data/config enthält cert.pem und key.pem, den Ausweis deines Servers; geht er verloren, hat der Server nach dem Neuaufbau eine neue Kennung, und du koppelst alle Geräte neu. Die synchronisierten Ordner daneben sind deine Dateien, und die Versionierung darin ist kein Ersatz für ein Backup an einem zweiten Ort. Ja, das ist derselbe Satz wie bei jeder Anleitung hier, und er gilt bei einem Programm, das Löschungen absichtlich verteilt, mehr als sonst.

Der Ordner hat noch keine Versionierung, und das ändern wir jetzt. Syncthing kann beim Überschreiben oder Löschen die alte Fassung in einen Unterordner .stversions legen. Das ist der Schutz vor dem versehentlichen Löschen am Handy, und ich stelle ihn auf dem Server ein, weil der immer läuft:

In der Oberfläche des Servers links den Ordner Dokumente aufklappen, unten rechts Bearbeiten (Edit), im Fenster den Reiter Dateiversionierung (File Versioning). Im Auswahlfeld Einfache Dateiversionierung (Simple File Versioning) wählen, bei Versionen erhalten (Keep Versions) 5 lassen, bei Löschen nach (Clean out after) 90 Tage eintragen. Speichern.

Fünf alte Fassungen je Datei, nach 90 Tagen räumt Syncthing sie weg. Die Vorgabe wäre 0 Tage, und 0 heißt hier „nie aufräumen"; für einen Ordner mit Fotos wächst .stversions dann so lange, bis die Platte voll ist. Die Versionen liegen unter ~/syncthing/data/Dokumente/.stversions, als normale Dateien mit Zeitstempel im Namen.

Wo es klemmt

Failed to create folder marker: mkdir /var/syncthing/Dokumente/.stfolder: permission denied. Der häufigste Treffer im Forum, und die Google-Vorschläge zu „syncthing docker" führen ihn direkt an. In einem Thread von November 2022 gehörte der Ordner data dem Benutzer mit ID 1000, ein darin liegender Unterordner aber Root, weil Docker ihn angelegt hatte, und Syncthing lief als 1000. Genau deshalb legst du data in Schritt 1 selbst an. Ist es trotzdem passiert, nimmst du dir den ganzen Ordner zurück:

sudo chown -R 1000:1000 ~/syncthing/data

Die Geräte sehen sich nicht. Wenn du die Compose-Datei aus einer anderen Anleitung genommen hast, in der ports: statt network_mode: host steht, funktioniert die Oberfläche, aber die lokale Gerätesuche schweigt, weil die Rundrufe Dockers Privatnetz nicht verlassen. Ein Forumsmitglied hat das im August 2025 als eigene Warnung gepostet: „discovery won't work if you use Docker's standard NAT/port mapping; you'll need to use host networking". Die Datei oben hat das schon richtig; wer beim Bridge-Modus bleiben muss, trägt laut Firewall-Doku die Adresse des Servers am PC von Hand ein, als tcp://192.168.178.20:22000 im Feld Adressen des Geräts.

Die Geräte sehen sich nicht, und die Datei ist richtig. Dann ist es meist die Firewall auf dem Server. Im Host-Modus gilt sie für den Container, und das ist der eine Fall, in dem Docker deine ufw-Regeln nicht umgeht. Syncthing braucht laut Doku 22000 TCP und UDP für den Abgleich und 21027 UDP für die Gerätesuche, dazu 8384 für die Oberfläche aus dem Heimnetz:

Erst nachsehen, ob ufw überhaupt aktiv ist; steht da Status: inactive, ist sie es nicht:

sudo ufw status

Ist sie aktiv, die Ports freigeben:

sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw allow 21027/udp
sudo ufw allow from 192.168.178.0/24 to any port 8384 proto tcp

Der Hinweis „möchte sich verbinden" kommt nie. Die Oberfläche des Servers zeigt ihn nur, wenn der PC den Server erreicht hat. Am PC unter Externe Geräte nachsehen, welche Adresse er probiert; steht dort nur dynamic und keine 192.168er-Adresse, sind es wieder Rundruf oder Firewall. Zur Not geht es auch andersherum: die Kennung des PCs am Server per Gerät hinzufügen eintragen, dann bestätigt der PC.

Die Oberfläche ist plötzlich Englisch, obwohl gestern Deutsch. Syncthing nimmt die Sprache aus dem Browser, nicht aus einer Einstellung. Ein anderer Browser oder ein Profil mit englischer Voreinstellung ändert sie. Die Bezeichnungen in dieser Anleitung stehen deshalb beide Male da.

Was du jetzt hast, ist der Teil von Dropbox, den man wirklich braucht, auf Hardware, die dir gehört, ohne dass jemand zwischen deinem PC und deinem Server sitzt. Welcher Ordner ist bei dir der erste, der aus der Cloud in Syncthing zieht, und an welchem Schritt hat die Kopplung gehakt? Schreib's in die Kommentare.

Wenn du jetzt weißt, wie zwei Geräte sich ohne Konto finden, ist die Frage, wie du den Server von unterwegs erreichst, ohne einen Port aufzumachen, die nächste; die beantwortet der Beitrag zu wg-easy und WireGuard.

Quellen