Zum Inhalt springen
Serverküche
Suche

Die Suche wird geladen … (nur in der veröffentlichten Seite verfügbar).

Anwendungen Schwierigkeit: Fortgeschritten

Syncthing: Dateien zwischen Geräten synchronisieren – ohne Cloud

Dateien direkt zwischen deinen Geräten abgleichen, verschlüsselt und ohne fremde Cloud: Syncthing als Peer-to-Peer-Sync hinter Traefik, mit Backup-Tipps.

· 6 Min. Lesezeit ·Dauer: ca. 45 Minuten
Inhaltsverzeichnis

Dropbox ohne Dropbox: Syncthing gleicht Ordner direkt zwischen deinen Geräten ab – verschlüsselt, ohne dass die Dateien je auf einem fremden Server liegen. Auf einem immer erreichbaren VPS wird dein Server zum zuverlässigen Sync-Knoten, der auch dann vermittelt, wenn Laptop und Handy nie gleichzeitig online sind.

Was bauen wir?

Einen dauerhaft laufenden Syncthing-Knoten mit Syncthing v2.1.2 hinter Traefik. Am Ende erreichst du die Weboberfläche verschlüsselt unter deiner Domain, hast sie mit einem Passwort abgesichert und kannst deine Geräte über ihre Geräte-IDs koppeln, sodass ausgewählte Ordner automatisch abgeglichen werden. Anders als Nextcloud ist Syncthing kein zentraler Speicher, sondern ein Peer-to-Peer-Abgleich: Jedes Gerät hält eine vollständige Kopie, der Server ist nur ein besonders zuverlässiger Teilnehmer.

Voraussetzungen

🍳 Empfehlung Anzeige

VPS 1000 G12

4 vCore · 8 GB RAM · 256 GB NVMe

ab 10,36 €/Monat

Ein kleiner VPS als Dauer-Sync-Knoten reicht völlig – Syncthing ist genügsam.

Zu netcup →

💶 5 € Gutschein für netcup-Neukunden:36nc17844976032 (nur Neukunden, keine Domains)

Schritt für Schritt

Schritt 1: Verzeichnisse anlegen – und die Rechte gleich richtig setzen

Syncthing speichert seine Konfiguration und die synchronisierten Daten in zwei Ordnern. Der Container läuft als normaler Benutzer (UID 1000), deshalb müssen die Ordner diesem gehören – das ist die häufigste Startfalle:

Terminal
mkdir -p /opt/syncthing/config /opt/syncthing/data
chown -R 1000:1000 /opt/syncthing/config /opt/syncthing/data
cd /opt/syncthing

Ohne chown startet Syncthing nicht

Gehören die Ordner root (der Standard bei frisch angelegten Verzeichnissen), kann Syncthing sein Zertifikat und die Konfiguration nicht schreiben und läuft in eine Neustart-Schleife („permission denied“ im Log). Das chown auf UID/GID 1000 vor dem ersten Start verhindert das – mehr zu Rechten in Benutzer & Rechte.

Schritt 2: Compose-Datei

Ersetze DEINE_DOMAIN. Wichtig ist der Unterschied zwischen Weboberfläche und Sync-Verkehr:

YAML
services:
  syncthing:
    image: syncthing/syncthing:2.1.5
    restart: unless-stopped
    hostname: koch-server
    environment:
      PUID: '1000'
      PGID: '1000'
    volumes:
      - ./config:/var/syncthing/config
      - ./data:/var/syncthing/Sync
    ports:
      - "22000:22000/tcp"   # Sync-Protokoll (direkt, nicht über Traefik)
      - "22000:22000/udp"   # Sync über QUIC
      - "21027:21027/udp"   # lokale Geräte-Erkennung
    networks: [proxy]
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.syncthing.rule=Host(`DEINE_DOMAIN`)"
      - "traefik.http.routers.syncthing.entrypoints=websecure"
      - "traefik.http.routers.syncthing.tls.certresolver=le"
      - "traefik.http.services.syncthing.loadbalancer.server.port=8384"

networks:
  proxy:
    external: true

Nur die Weboberfläche (Port 8384) läuft über Traefik – dafür sorgen die Labels. Der eigentliche Sync-Verkehr (Port 22000) ist ein eigenes Protokoll, kein HTTP, und wird deshalb direkt über ports: veröffentlicht, nicht über Traefik geleitet. Genau diese Trennung erklärt Docker-Netzwerke verstehen.

Schritt 3: Firewall öffnen und starten

Öffne den Sync-Port in der Firewall (sonst finden sich die Geräte nicht):

Terminal
ufw allow 22000/tcp
ufw allow 22000/udp

Dann starten:

Terminal
docker compose up -d

Geduld: Traefik wartet auf den Healthcheck

Das Syncthing-Image bringt einen eigenen Healthcheck mit, und Traefik leitet erst auf einen Container, wenn dieser healthy ist. Der erste Check läuft aber erst nach dem Standard-Intervall von 60 Sekunden – bis dahin bekommst du über die Domain eine Traefik-404. Das ist normal; kurz warten. Prüfen: docker inspect -f '{{.State.Health.Status}}' syncthing-syncthing-1.

Sobald der Status healthy ist, antwortet die Oberfläche mit gültigem HTTPS:

Terminal
curl -sI https://DEINE_DOMAIN/ | head -1
Ausgabe
HTTP/2 200

Schritt 4: Die Weboberfläche und der wichtige Sicherheitsschritt

Öffne https://DEINE_DOMAIN/. Die Oberfläche ist standardmäßig auf Englisch; du siehst dein Gerät („This Device“) mit seiner Geräte-ID, Version und Status:

Die Syncthing-Weboberfläche mit dem eigenen Gerät koch-server, Version v2.1.5 und der Geräte-ID
Die Weboberfläche: dieses Gerät mit Geräte-ID, darunter Bereiche für Ordner und entfernte Geräte

Auf einer frischen Installation warnt Syncthing oben mit rotem Banner, dass noch kein GUI-Passwort gesetzt ist – das ist ernst zu nehmen: Ohne Passwort kann jeder, der die Oberfläche erreicht, auf deine Dateien zugreifen. Setze daher sofort unter Actions → Settings → GUI („Aktionen → Einstellungen") einen Benutzernamen und ein starkes Passwort. Danach fordert Syncthing bei jedem Zugriff eine Anmeldung – zusätzlich zum HTTPS von Traefik.

GUI-Passwort in der Oberfläche setzen, nicht per generate als root

Setze das Passwort über die Weboberfläche. Wer stattdessen syncthing generate als root im Container ausführt, schreibt die config.xml mit falschem Besitzer – danach startet Syncthing nicht mehr (permission denied). Falls das passiert: chown -R 1000:1000 /opt/syncthing/config und neu starten.

Schritt 5: Ein zweites Gerät koppeln

Syncthing verbindet Geräte über ihre Geräte-ID – einen langen, eindeutigen Schlüssel. Die Kopplung ist beidseitig: Jedes Gerät muss das andere kennen. Klicke auf Add Remote Device („Entferntes Gerät hinzufügen“):

Der „Add Device“-Dialog mit Feldern für Geräte-ID, Name und Gruppe
Ein Gerät wird über seine Geräte-ID hinzugefügt – die ID findest du auf dem anderen Gerät unter „Actions → Show ID“

Die ID des anderen Geräts findest du dort unter Actions → Show ID („Aktionen → Meine ID“) als Text und QR-Code. Trage sie hier ein, vergib einen Namen und speichere. Auf dem anderen Gerät wiederholst du das mit der ID deines Servers. Sobald beide Seiten sich kennen, erscheint das Gerät als „verbunden“.

Schritt 6: Einen Ordner teilen

Jetzt legst du fest, was abgeglichen wird. Über Add Folder („Ordner hinzufügen“) wählst du einen Pfad (auf dem Server z. B. /var/syncthing/Sync/dokumente, was dem gemounteten ./data-Ordner entspricht) und gibst ihm eine Ordner-ID. Unter dem Reiter Sharing („Teilen“) hakst du die Geräte an, mit denen der Ordner synchronisiert werden soll. Auf dem anderen Gerät bestätigst du die eingehende Freigabe – ab dann hält Syncthing beide Seiten automatisch identisch.

Dateiversionierung als Schutz vor Versehen

Aktiviere pro Ordner unter dessen Einstellungen die Dateiversionierung (z. B. „Einfache Versionierung“, 5 Versionen). Löscht oder überschreibt ein Gerät eine Datei, wird die alte Version auf den anderen Geräten in einem .stversions-Ordner aufbewahrt. Wichtig: Das ist ein Schutz vor Versehen, kein Backup (siehe unten).

Wenn es nicht funktioniert

Der Container startet nicht / Neustart-Schleife mit permission denied. Die Rechte am config- oder data-Ordner stimmen nicht. chown -R 1000:1000 /opt/syncthing/config /opt/syncthing/data und neu starten (siehe Warnung in Schritt 1).

Die Oberfläche gibt eine Traefik-404, obwohl der Container läuft. Der Healthcheck ist noch nicht healthy – Traefik leitet dann bewusst nicht. Bis zu 60 Sekunden nach dem Start abwarten und den Status prüfen (siehe Warnung in Schritt 3).

Zwei Geräte verbinden sich nicht. Prüfe drei Dinge: Ist Port 22000 (TCP+UDP) in der Firewall offen? Hast du die ID auf beiden Geräten eingetragen (die Kopplung ist beidseitig)? Und stimmt die ID exakt (Buchstabendreher fallen leicht auf, weil eine Prüfsumme eingebaut ist)? Der Status „Getrennt“ mit korrekt eingetragenen IDs deutet fast immer auf den Firewall-Port.

Ein Ordner bleibt bei „Synchronisiere 0 %" hängen. Meist fehlt auf der Gegenseite die Bestätigung der Freigabe, oder die Ordner-ID stimmt nicht überein – sie muss auf beiden Geräten identisch sein. Prüfe außerdem die Schreibrechte im Zielordner.

Nach dem Setzen des GUI-Passworts kein Zugriff mehr. Passwort vergessen? Du kannst es in der config.xml (<gui>-Block) zurücksetzen, indem du die <user>- und <password>-Zeilen entfernst und Syncthing neu startest – danach ist die Oberfläche wieder ohne Login erreichbar (und du setzt es sofort neu).

Wartung & Backups

  • Updates. Setze den Image-Tag (syncthing/syncthing:2.1.5) gelegentlich auf die aktuelle Version und docker compose up -d. Syncthing hält sich innerhalb einer Hauptversion kompatibel; beim Sprung auf eine neue Hauptversion (wie hier v2) vorher die Release-Notes lesen. Den Rest erledigt dein normaler Update-Prozess.
  • Backup ist Pflicht – Sync ist kein Backup. Das ist der wichtigste Punkt: Syncthing spiegelt Änderungen, also auch versehentliches Löschen und Verschlüsselung durch Ransomware. Sichere den Sync-Ordner deshalb zusätzlich mit einem echten, versionierten Backup, das der Sync nicht erreichen kann – etwa Restic auf dem Server. Auch der config-Ordner (Geräte-IDs, Ordnerfreigaben) gehört ins Backup.
  • Ehrlicher Aufwand. Einmal eingerichtet läuft Syncthing sehr wartungsarm. Behalte den Speicherplatz im Blick (df -h), wenn du große Ordner mit Versionierung abgleichst, und miste alte .stversions-Ordner gelegentlich aus.

Zuletzt aktualisiert: 09.09.2026

Feedback per E-Mail: feedback@serverkueche.de

Das könnte dir auch schmecken

FreshRSS: der eigene RSS-Reader
Anwendungen Fortgeschritten

FreshRSS: der eigene RSS-Reader

Alle Nachrichtenquellen an einem Ort, ohne Algorithmus und Tracking: FreshRSS als selbstgehosteter RSS-Reader hinter …

· 5 Min. Lesezeit