3 Mein Ziel war schlicht: Das Home-Verzeichnis meines Linux-Desktops soll sich automatisch mit meinem Unraid-Homeserver abgleichen, in beide Richtungen, und später auch mit zwei Notebooks (macOS und Linux). Schnell soll es sein, im Dauerbetrieb kaum CPU kosten, mit kleinen und großen Dateien zurechtkommen – und ohne Cloud auskommen. KI-Modelle, VM-Images, Caches, node_modules und Python-Umgebungen sollen draußen bleiben, SSH- und GnuPG-Schlüssel dagegen mit. Geworden ist es Syncthing. In diesem Ratgeber zeige ich, wie ich Syncthing auf dem Desktop und als Docker-Container auf dem Homeserver eingerichtet habe: welche Ordner, welche Ignore-Liste, welche Ports, wie Tailscale und die lokale Gerätesuche zusammenspielen und warum der Homeserver als „Verteilergerät“ neue Rechner von selbst bekannt macht. Am Ende liefen neun Ordner mit rund 197 GB und 264.000 Dateien sauber im Abgleich. Mein Aufbau: Der Homeserver ist immer an, verteilt neue Geräte und hält 30 Tage Versionen vor. Syncthing im Homelab, die Serie:Syncthing einrichten (dieser Artikel)Syncthing auf Unraid beschleunigen (erscheint in Kürze)Syncthing vs. Resilio Sync (erscheint in Kürze) Das Wichtigste in Kürze Syncthing gleicht Ordner direkt zwischen deinen Geräten ab – ohne Server, ohne Cloud, Open Source, verschlüsselt per TLS. Nie das ganze Home synchronisieren: Gezielte Ordner wählen, der Rest bleibt lokal. Bei mir sind es neun Ordner mit rund 197 GB. Die .stignore muss vor dem ersten Scan liegen, sonst wird erst gehasht und übertragen und dann ignoriert – mit Leichen auf der Gegenseite. Ports: 8384/TCP für die Weboberfläche, 22000/TCP und UDP für den Abgleich, 21027/UDP für die lokale Gerätesuche. Relays und globale Gerätesuche aus, wenn alle Geräte im selben Tailnet sind – die lokale Suche sorgt zu Hause trotzdem für die direkte LAN-Verbindung. Homeserver als Verteilergerät (Introducer): Neue Rechner müssen nur dort angemeldet werden. Syncthing ist kein Backup: Löschen wird überall nachgezogen. Versionierung auf einem Knoten ist das Minimum. Was ist Syncthing? Syncthing ist ein Open-Source-Programm (Lizenz MPL 2.0), das Ordner zwischen Geräten synchron hält. Es gibt keinen zentralen Server: Jedes Gerät hat eine eigene Geräte-ID, die aus seinem Zertifikat abgeleitet ist, und spricht direkt mit den Geräten, mit denen du es verbunden hast. Die Verbindungen sind per TLS verschlüsselt, übertragen werden nur geänderte Blöcke einer Datei. Änderungen erkennt Syncthing über die Dateisystem-Benachrichtigungen des Betriebssystems sofort, ein vollständiger Scan läuft zusätzlich nur in größeren Abständen. Mit Version 2.0 (August 2025) hat Syncthing seine interne Datenbank von LevelDB auf SQLite umgestellt, aktuell ist Version 2.1.7 vom 21. Oktober 2026. Auf meinem Desktop läuft 2.1.3 aus den Manjaro-Paketquellen, auf dem Homeserver 2.1.6 im Container. Mein Aufbau Rolle System Syncthing Netz Desktop Manjaro (KDE), Ryzen 9 5950X, Home auf BTRFS-NVMe, Projekte auf eigener BTRFS-NVMe systemd-Benutzerdienst 2,5 GBit/s, LAN und Tailscale Homeserver Unraid 7.3.2, Core i7-9700T, Pool aus vier 10-TB-Festplatten (BTRFS-RAID), NVMe-Cache Docker-Container linuxserver/syncthing 10 GBit/s, LAN und Tailscale Notebooks macOS und Linux werden gerade angebunden zu Hause oder unterwegs per Tailscale Schritt 1: Syncthing auf dem Linux-Desktop Syncthing steckt in den Paketquellen praktisch aller Distributionen. Auf Arch und Manjaro installierst du es mit sudo pacman -S syncthing, auf Debian und Ubuntu mit sudo apt install syncthing – wer dort eine aktuellere Version will, bindet die offizielle Paketquelle von Syncthing ein. Gestartet wird es als Benutzerdienst, damit es mit deinem Benutzerkonto läuft und auf dein Home-Verzeichnis zugreifen darf: systemctl --user enable --now syncthing Die Weboberfläche erreichst du danach unter http://127.0.0.1:8384. Bei neueren Installationen liegt die Konfiguration unter ~/.local/state/syncthing, ältere nutzen noch ~/.config/syncthing. Lass die Oberfläche auf dem Desktop auf 127.0.0.1 gebunden, dann ist sie von außen gar nicht erreichbar. Der Desktop in der Syncthing-Oberfläche: 264.000 Dateien lokal, Version 2.1.3. Geräte-Kennung unkenntlich gemacht. Schritt 2: Syncthing als Docker-Container auf dem Homeserver Auf dem Homeserver läuft Syncthing im Container lscr.io/linuxserver/syncthing. Auf Unraid gibt es dafür eine fertige Vorlage in den Community Apps, auf jedem anderen Docker-Host reicht eine kleine Compose-Datei. PUID=99 und PGID=100 entsprechen auf Unraid dem Benutzer „nobody“ und der Gruppe „users“: services: syncthing: image: lscr.io/linuxserver/syncthing:latest container_name: syncthing environment: - PUID=99 - PGID=100 volumes: - /mnt/cache/appdata/syncthing:/config # Konfiguration und Index auf der NVMe - /mnt/btrfs_data/Sysbackup/syncthing/data1:/data1 # Daten direkt auf dem Pool ports: - 8384:8384 # Weboberfläche - 22000:22000/tcp # Abgleich (TCP) - 22000:22000/udp # Abgleich (QUIC) - 21027:21027/udp # lokale Gerätesuche restart: unless-stopped Wichtig für Unraid: Die Pfade zeigen direkt auf den Pool (/mnt/btrfs_data/…) und den Cache (/mnt/cache/…), nicht auf /mnt/user/…. Mit dem /mnt/user-Pfad lief der Erstabgleich bei mir mit 1,7 MB/s – warum, und wie es 110-mal schneller wurde, steht im zweiten Teil: Syncthing auf Unraid langsam?. Wie Unraid selbst eingerichtet wird, zeige ich in Unraid einrichten, Docker allgemein in Docker installieren. Diese Ports braucht Syncthing: Port Protokoll Wofür 8384 TCP Weboberfläche und REST-API 22000 TCP Datenabgleich zwischen den Geräten 22000 UDP Datenabgleich über QUIC 21027 UDP lokale Gerätesuche im LAN Schritt 3: Geräte verbinden und den Homeserver zum Verteilergerät machen Jedes Gerät zeigt unter Aktionen → Kennung anzeigen seine Geräte-ID, auch als QR-Code. Auf dem anderen Gerät trägst du sie unter Gerät hinzufügen ein, die Gegenseite fragt dann einmal nach, ob sie die Verbindung annehmen soll. Statt „dynamic“ habe ich als Adresse die feste Tailscale-Adresse des Homeservers eingetragen (tcp://100.x.y.z:22000). Wie Tailscale funktioniert, steht in Tailscale einrichten. Auf dem Desktop ist der Homeserver zusätzlich als Verteilergerät (englisch Introducer) markiert. Damit übernimmt der Desktop automatisch alle Geräte, die der Homeserver kennt, samt ihren Ordnerfreigaben. Ein neues Notebook muss ich also nur am Homeserver anmelden, nicht an jedem Rechner einzeln. Der Homeserver aus Sicht des Desktops: direkte Verbindung im LAN, Verteilergerät „Ja“, 160 GiB hochgeladen. Adresse und Kennung unkenntlich gemacht. Schritt 4: Ordner auswählen – nie das ganze Home Der wichtigste Grundsatz: Synchronisiere gezielte Ordner, nicht dein komplettes Home-Verzeichnis. Wie schnell das schiefgeht, zeigte ein früherer Versuch aus dem April: Er hatte das gesamte /home als einen Ordner eingetragen. Beim ersten Start begann Syncthing sofort, das ganze Home zu scannen, und belegte nach 17 Sekunden 1,2 GB Arbeitsspeicher. Auf dem Homeserver lag von damals noch eine unvollständige Kopie mit Browser-Profilen und Programmdaten. Allein das Löschen der vielen kleinen Dateien dauerte über 20 Minuten. Deshalb: alte Konfigurationen prüfen, bevor man den Dienst startet. Diese neun Ordner sind es geworden, alle im Modus „Senden & Empfangen“: Ordner Inhalt Größe nach Ausschlüssen Dateien Projekte Quellcode, Git-Repos, Werkzeuge 169 GB 250.000 Obsidian-Vault Notizen 16,5 GB 8.700 Schreibtisch Kurse, Videos, Ablage 7,5 GB 245 Dokumente Briefe, Scans, Projektdoku 3,2 GB 4.500 Bilder Screenshots 0,1 GB 236 Skripte kleine Skripte klein 9 .ssh, .gnupg, Schlüssel drei Schlüsselordner klein 58 Nicht dabei sind unter anderem Downloads (174 GB), Musik, temporäre Ordner und KI-Modelle. Kleiner Stolperstein bei der Bestandsaufnahme: du -sh ~ meldete 13 TB, weil BTRFS-Snapshots unter dem Projektordner mitgezählt wurden. Mit du -x oder einem Ausschluss für den Snapshot-Ordner stimmt die Zahl wieder. Neun Ordner, alle „Aktuell“. Ordnernamen teils verallgemeinert. Der größte Ordner: rund 250.000 Dateien und 158 GiB (169 GB). Vollscan stündlich, Änderungen erkennt die Dateisystemüberwachung sofort. Schritt 5: Die .stignore vor dem ersten Scan anlegen Was nicht synchronisiert werden soll, steht in einer Datei .stignore im jeweiligen Ordner – oder du trägst es beim Anlegen des Ordners im Reiter „Ignoriermuster“ ein. Entscheidend ist der Zeitpunkt: Die Liste muss vor dem ersten Scan stehen. Sonst hasht und überträgt Syncthing erst alles und ignoriert es danach. Bei mir sind Python-Umgebungen und node_modules unter Dokumente und Projekte erst beim Zuschauen aufgefallen – die nachträglich ignorierten Dateien blieben auf der Gegenseite liegen und mussten von Hand weg. So sieht meine Liste für die Code-Ordner aus: // Abhängigkeiten / Build-Artefakte (?d)node_modules (?d).pnpm-store (?d)vendor (?d).venv (?d)venv* (?d)*-venv (?d)__pycache__ (?d).pytest_cache (?d).mypy_cache (?d).ruff_cache (?d).cache (?d).next (?d).nuxt (?d).turbo (?d)dist (?d)build (?d)target (?d).gradle (?d)test-results (?d)playwright-report // Modelle und VMs *.gguf *.safetensors *.bin *.vmdk *.vmem *.vmss *.nvram *.qcow2 *.iso *.vdi *.img // Müll (?d).DS_Store (?d)Thumbs.db (?d)*.tmp (?d)*.swp (?d)*.log // nur im Projektordner: VMs und Snapshots (?d)vmware (?d)VM (?d).snapshots (?d).sync Das Präfix (?d) erlaubt Syncthing, die ignorierten Einträge zu löschen, wenn sie sonst das Entfernen eines Ordners blockieren würden. Zeilen mit // sind Kommentare. Im Projektordner fliegen zusätzlich 213 GB VMware-Maschinen, 30 GB weitere VMs und die BTRFS-Snapshots raus. Reine Datenordner wie der Obsidian-Vault bekommen nur die Müll-Muster. Für die Schlüsselordner gelten eigene Regeln: Unter .gnupg dürfen Sockets und Sperrdateien nie synchronisiert werden (S.gpg-agent*, S.scdaemon, *.lock, random_seed, *~), unter .ssh bleiben known_hosts.old, known_hosts.bak* und *.swp draußen. Wie man SSH-Schlüssel überhaupt erzeugt, steht in SSH-Key erstellen. Die Ignoriermuster lassen sich direkt in der Oberfläche bearbeiten, gespeichert werden sie in der .stignore des Ordners. Ob die Liste greift, prüfst du, bevor die Gegenseite Daten bekommt: Im Ordner zeigt Syncthing unter „Lokaler Status“ den Hinweis „Durch Ignoriermuster reduziert“, und im Log beziehungsweise über die REST-API siehst du, was tatsächlich übertragen wird. Schritt 6: Verbindungen – lokal direkt, unterwegs über Tailscale Weil alle meine Geräte im selben Tailscale-Netz hängen, brauche ich die öffentlichen Hilfsdienste von Syncthing nicht. In den Einstellungen unter „Verbindungen“ sind deshalb die globale Gerätesuche und die Weiterleitung (Relays) aus, die lokale Gerätesuche bleibt an. Auch die anonyme Nutzungsstatistik habe ich abgelehnt. Lokale Gerätesuche an, globale Gerätesuche und Relays aus. Das Ergebnis: Zu Hause verbindet sich Syncthing direkt über die LAN-Adresse des Homeservers und markiert die Verbindung als „TCP LAN“ – nicht über Tailscale, obwohl dort die Tailscale-Adresse eingetragen ist. Unterwegs läuft der Abgleich über Tailscale. Der komplette Erstabgleich von 171,7 GB lief über genau eine direkte LAN-Verbindung. Schritt 7: Versionierung nur auf dem Homeserver Syncthing überträgt jede Änderung, auch ein versehentliches Löschen. Deshalb versioniert der Homeserver alle Ordner stufenweise für 30 Tage: In der ersten Stunde bleibt alle 30 Sekunden eine Version, am ersten Tag stündlich eine, danach täglich eine. Aufgeräumt wird jede Stunde, die Versionen landen im Unterordner .stversions. Desktop und Notebooks versionieren nicht – das spart dort Platz, und eine Kopie mit Vergangenheit reicht. Auf dem Homeserver: stufenweise Versionierung mit 30 Tagen Höchstalter. Derselbe Ordner auf dem Homeserver: Pfad im Container /data1/Projekte, Versionierung „Stufenweise, 30 Tage“. Schritt 8: Weitere Rechner sauber einbinden Damit nie ein Rechner in das Home-Verzeichnis eines anderen schreibt, gilt bei mir eine einfache Regel: Jeder Rechner besitzt eigene Ordner. Andere Rechner empfangen sie unter ~/Sync/<Rechnername>/<Ordner>, der Homeserver unter /data1/<Rechnername>/<Ordner>. Die Ordner-IDs bekommen den Rechnernamen als Präfix. So kollidieren auch zwei Rechner nicht, die beide einen Ordner „Projekte“ haben. Auf dem Homeserver: oben und unten die Ordner des Desktops, dazwischen die Ordner eines Notebooks mit eigenem Präfix. Rechnernamen verallgemeinert. Die Weboberfläche absichern Auf dem Desktop lauscht die Oberfläche nur auf 127.0.0.1:8384. Auf dem Homeserver muss sie im Netz erreichbar sein, also gehört ein Benutzer mit Passwort dazu, und am besten ist sie nur im LAN oder über Tailscale erreichbar. Das Passwort setzt du am einfachsten in der Oberfläche unter Einstellungen → GUI. Wer die config.xml von Hand bearbeitet, sollte wissen: Ein Klartext-Passwort in der Datei hat Syncthing 2.1.6 bei mir beim Start nicht gehasht, auch per REST-API eingetragener Klartext blieb Klartext – der Login schlug fehl. Den nötigen bcrypt-Hash erzeugt Syncthing selbst: syncthing generate --home=/tmp/stgen --gui-user=NAME --gui-password=PASSWORT grep -oP '(?<=<password>)[^<]+' /tmp/stgen/config.xml Den Hash trägst du dann statt des Klartexts ein. Den temporären Ordner danach löschen. Status prüfen über die REST-API Für Skripte und schnelle Kontrollen hat Syncthing eine REST-API. Den API-Schlüssel findest du in der config.xml oder in der Oberfläche unter Einstellungen → GUI: # Verbindungen und übertragene Datenmengen curl -H "X-API-Key: $KEY" http://127.0.0.1:8384/rest/system/connections # Zustand eines Ordners (Dateien, Größe, ausstehend) curl -H "X-API-Key: $KEY" "http://127.0.0.1:8384/rest/db/status?folder=projekte" Syncthing ist kein Backup Das kann man nicht oft genug sagen: Syncthing hält Ordner gleich. Löschst du eine Datei auf dem Desktop, ist sie Sekunden später auch auf dem Homeserver weg. Die Versionierung auf einem Knoten ist das Minimum, ein echtes Backup mit eigener Historie bleibt trotzdem nötig – bei mir übernehmen das restic und der Proxmox Backup Server. Typische Fehler beim Einrichten Fehler Folge Besser Ganzes Home als ein Ordner Scan über alles, Browser-Profile und Caches landen auf dem Server Gezielte Ordner, Rest bleibt lokal .stignore erst nach dem Scan Daten werden übertragen und bleiben auf der Gegenseite liegen Ignore-Liste vor dem ersten Scan anlegen Alte Konfiguration nicht geprüft Ein vergessener Ordner startet sofort config.xml vor dem ersten Start ansehen Unraid-Container auf /mnt/user Erstabgleich mit 1,7 MB/s Direkter Pool-Pfad, siehe Teil 2 Klartext-Passwort in der config.xml Login schlägt fehl Passwort in der GUI setzen oder Hash erzeugen Syncthing als Backup betrachtet Löschen wird überall nachgezogen Versionierung plus echtes Backup Fazit Syncthing erledigt genau, was ich wollte: Desktop und Homeserver gleichen sich ohne Cloud ab, zu Hause direkt über das LAN, unterwegs über Tailscale. Nach dem Erstabgleich standen alle neun Ordner auf „Aktuell“, der Projektordner mit rund 250.000 Dateien und 169 GB vollständig, insgesamt 171,7 GB übertragen, null Dateien ausstehend. Die meiste Arbeit steckt nicht im Programm, sondern in der Vorbereitung: die richtigen Ordner wählen, die Ignore-Liste vor dem ersten Scan anlegen und auf Unraid den richtigen Pfad nutzen. Weiter geht es mit Teil 2: Syncthing auf Unraid 110-mal schneller und Teil 3: Syncthing vs. Resilio Sync. Wer statt Ordnerabgleich eine Cloud mit Weboberfläche sucht, findet in Nextcloud installieren die Alternative mit Server. FAQ Welche Ports braucht Syncthing? 22000/TCP und 22000/UDP für den Datenabgleich, 21027/UDP für die lokale Gerätesuche und 8384/TCP für die Weboberfläche. Die Weboberfläche sollte nicht aus dem Internet erreichbar sein. Gibt es Syncthing für Android? Die offizielle Android-App wurde im Dezember 2024 eingestellt. Weiter gepflegt wird der Fork „Syncthing-Fork“, erhältlich über F-Droid und GitHub. Gibt es Syncthing für das iPhone? Ja, über Apps anderer Entwickler. „Synctrain“ ist seit Januar 2025 kostenlos und quelloffen im App Store, „Möbius Sync“ ist kostenpflichtig. Ist Syncthing ein Backup? Nein. Syncthing überträgt auch Löschungen und Fehler. Aktiviere die Versionierung mindestens auf einem Gerät und sichere zusätzlich mit einem echten Backup-Programm. Kann ich einen Obsidian-Vault mit Syncthing synchronisieren? Ja, der Vault ist nur ein Ordner. Meiner hat 16,5 GB und 8.700 Dateien. Bearbeitest du dieselbe Notiz gleichzeitig auf zwei Geräten, legt Syncthing eine Konfliktdatei mit „sync-conflict“ im Namen an, statt eine Version zu verlieren. Funktioniert Syncthing ohne Internet? Ja. Mit lokaler Gerätesuche finden sich die Geräte im LAN auch ohne Internet. Globale Gerätesuche und Relays werden nur gebraucht, wenn Geräte über das Internet ohne VPN zueinanderfinden sollen. Wo liegt die Konfiguration von Syncthing unter Linux? Bei neueren Installationen unter ~/.local/state/syncthing, bei älteren unter ~/.config/syncthing. Im Docker-Container von linuxserver liegt sie im Volume /config. Quellen Syncthing-Dokumentation Syncthing: Ignoring Files (.stignore) Syncthing: Firewall Setup (Ports) Syncthing: File Versioning linuxserver.io: Docker-Image syncthing Wikipedia: Syncthing (Versionen, Lizenz) Syncthing-Forum: Einstellung der Android-App Vorheriger Beitrag TeamViewer-Lücke CVE-2026-111585: Ferngesteuerter Rechner kann den Techniker angreifen Nächster Beitrag Ransomware C3RB3R: Angreifer verschlüsseln Synology-NAS mit veraltetem DSM You may also like Neue Cyberangriffe auf Kühlanlagen: Supermärkte in ganz Europa müssen Ware aussortieren November 3, 2026 Ransomware C3RB3R: Angreifer verschlüsseln Synology-NAS mit veraltetem DSM November 3, 2026 TeamViewer-Lücke CVE-2026-111585: Ferngesteuerter Rechner kann den Techniker angreifen November 2, 2026 Wie sicher sind Stablecoins? Sperren, Deckung und Hacks erklärt November 2, 2026 Wazuh SCA einrichten und CIS-Ergebnisse richtig bewerten November 2, 2026 Zabbix Telegram-Benachrichtigung einrichten: Alarm aufs Handy in 15 Minuten November 1, 2026 Hinterlasse einen Kommentar Cancel Reply Save my name, email, and website in this browser for the next time I comment.