Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 11.09.2026 · 11 min Lesezeit

SFTPGo auf dem Synology NAS installieren: sicherer SFTP- und WebDAV-Server

SFTPGo ersetzt FTP-Altlasten und Synology-QuickConnect-Freigaben durch einen modernen, auditierbaren SFTP- und WebDAV-Server mit Web-UI – komplett als Docker-Compose-Projekt, ohne externe Datenbank, mit virtuellem Ordner-Mapping und Benutzer-Quotas.

SFTPGo auf dem NAS: SFTP, WebDAV, Virtuelle Ordner. Illustration mit Laptop und Administrationsoberfläche. KI-generiert

Wer im Büroalltag Dateien mit Kunden oder Partnern austauscht, greift oft noch auf unsichere FTP-Server oder unübersichtliche Synology-QuickConnect-Freigaben zurück. SFTPGo bietet eine deutlich elegantere Lösung: einen vollständigen, eventgesteuerten Dateiübertragungsserver, der SFTP, WebDAV und HTTP/S in einem einzigen Container vereint – inklusive WebAdmin-UI, WebClient-Portal für Endnutzer, virtuellen Ordnern mit Quotas und integriertem Brute-Force-Schutz. Mit über 12.100 GitHub-Stars und einem Release alle paar Wochen (aktuell v2.7.3 vom 30. Mai 2026) ist SFTPGo der meistgenutzte selbstgehostete SFTP-Server mit Web-Oberfläche. Diese Anleitung zeigt den kompletten Weg auf dem Synology NAS – als sauberes Compose-Projekt im Container Manager, ohne externe Datenbank und mit Verifikation nach jedem Schritt.

Voraussetzungen

  • Synology NAS mit DSM 7.2 und installiertem Container Manager (früher Docker-Paket)
  • Intel/AMD x86_64-CPU (alle aktuellen Plus-/XS-Modelle) oder ARM-CPU – SFTPGo unterstützt amd64, arm64 und armv7
  • Freigegebener Ordner /volume1/docker auf dem NAS (über File Station oder DSM-Systemsteuerung anlegen)
  • SSH-Zugang zum NAS für den chown-Befehl – Anleitung: SSH auf dem Synology NAS aktivieren und verbinden
  • Firewall-Freigabe für Port 2022 (SFTP), 8813 (WebAdmin, intern) und 10080 (WebDAV, optional) – Anleitung: DSM-Firewall: Ports für Docker-Container freigeben
  • Mindestens 256 MB freier RAM für den Container (empfohlen: 512 MB+)
  • Optional: SSH-Schlüsselpaar für passwortlose SFTP-Authentifizierung – Anleitung: SSH-Key-Authentifizierung einrichten – Linux & Windows

Eckdaten auf einen Blick

ParameterWertHinweis
Docker-Imagedrakkan/sftpgo:v2.7Stabiler Floating-Tag; Docker Hub bevorzugen (ghcr.io scheitert im DSM-GUI)
Aktuelle Versionv2.7.3 (30.05.2026)Debian-basiert, Multi-Arch: amd64, arm64, armv7
Port WebAdmin/WebClient8813 → 8080Host 8813, Container 8080; Pfade /web/admin und /web/client
Port SFTP2022 → 2022SFTPGo läuft intern auf 2022, nicht 22 (DSM-reserviert)
Port WebDAV10080 → 10080Optional; muss per Umgebungsvariable aktiviert werden
Volume Nutzdaten/volume1/docker/sftpgo/data:/srv/sftpgoUser-Homes, Uploads, Backups
Volume Konfiguration/volume1/docker/sftpgo/home:/var/lib/sftpgoSQLite-DB, SSH-Host-Keys, Konfigurationsdatei
UID/GID1000:1000Host-Verzeichnisse per chown anpassen – sonst Permission denied
DatenbankSQLite (Standard)Kein externer DB-Container nötig

Schritt 1: Ordnerstruktur anlegen und Berechtigungen setzen

Verbinde dich per SSH mit dem NAS (Anleitung: SSH auf dem Synology NAS aktivieren). Erstelle die beiden Verzeichnisse und setze die Berechtigungen auf UID/GID 1000 – dieser Schritt ist zwingend erforderlich, bevor du den Container das erste Mal startest. Fehlt das chown, bricht SFTPGo sofort mit „Permission denied" ab und kann weder Datenbank noch SSH-Host-Keys anlegen.

sudo mkdir -p /volume1/docker/sftpgo/data
sudo mkdir -p /volume1/docker/sftpgo/home
sudo chown -R 1000:1000 /volume1/docker/sftpgo/data
sudo chown -R 1000:1000 /volume1/docker/sftpgo/home

Möchtest du zusätzlich einen bestehenden Synology-Shared-Folder als SFTPGo-Speicher einbinden – z. B. /volume1/backup – trägst du diesen später in der Compose-Datei als zusätzliches Volume ein (mehr dazu in Schritt 3).

Verifizieren: Prüfe, ob die Verzeichnisse mit dem richtigen Eigentümer angelegt wurden:

ls -la /volume1/docker/sftpgo/

Erwartete Ausgabe: Beide Unterordner data und home zeigen 1000 1000 als Eigentümer.

Schritt 2: Compose-Datei erstellen

Erstelle die Datei /volume1/docker/sftpgo/compose.yaml mit folgendem Inhalt. Die Datei kannst du direkt im SSH-Terminal anlegen oder über den Text-Editor in der DSM-File-Station hochladen.

services:
  sftpgo:
    image: drakkan/sftpgo:v2.7
    container_name: sftpgo
    restart: unless-stopped
    user: "1000:1000"
    ports:
      - "8813:8080"    # WebAdmin-UI und WebClient
      - "2022:2022"    # SFTP
      - "10080:10080"  # WebDAV HTTP (optional)
    volumes:
      - /volume1/docker/sftpgo/data:/srv/sftpgo
      - /volume1/docker/sftpgo/home:/var/lib/sftpgo
    environment:
      - SFTPGO_GRACE_TIME=32
      - SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080
      - SFTPGO_WEBDAVD__BINDINGS__0__ADDRESS=
    security_opt:
      - no-new-privileges:true

Einige wichtige Punkte zur Compose-Datei: Der Host-Port 8813 statt 8080 für die Web-UI vermeidet Konflikte mit DSM-eigenen Diensten. SFTPGO_GRACE_TIME=32 gibt laufenden Verbindungen 32 Sekunden zum sauberen Beenden – das schützt die SQLite-Datenbank vor Korruption bei Neustarts. WebDAV ist standardmäßig deaktiviert; erst durch SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080 lauscht ein Listener. Ein externer Datenbankcontainer ist ausdrücklich nicht nötig.

Verifizieren: Prüfe die Datei auf vollständigen Inhalt ohne Syntaxfehler:

cat /volume1/docker/sftpgo/compose.yaml

Die Ausgabe muss die vollständige YAML-Struktur zeigen – kein abgeschnittener Inhalt, keine Tabulatorfehler.

Schritt 3: Compose-Projekt im Container Manager anlegen und starten

Öffne den Container Manager in der DSM-Oberfläche und wechsle zu „Projekt". Wie du ein neues Compose-Projekt anlegst, erklärt die Grundanleitung Container Manager: Docker-Compose-Projekt anlegen, starten und aktualisieren Schritt für Schritt. Verwende als Projektpfad /volume1/docker/sftpgo und die oben erstellte compose.yaml.

Beim ersten Start lädt der Container Manager das Image drakkan/sftpgo:v2.7 von Docker Hub (ca. 120 MB). Anschließend generiert SFTPGo automatisch SSH-Host-Keys in /var/lib/sftpgo und legt die SQLite-Datenbank an – das dauert 10–15 Sekunden. Warte, bis der Container-Status im Container Manager auf „Läuft" gewechselt ist, bevor du den Browser öffnest.

Verifizieren: Prüfe im Container Manager, ob der Container sftpgo den Status „Läuft" hat, und öffne die Protokoll-Ansicht. Folgende Zeilen müssen erscheinen (kein „Permission denied", kein „database is locked"):

SFTPGo v2.7.x
Binding to port: 8080
SFTP binding: 0.0.0.0:2022
WebDAV binding: 0.0.0.0:10080

Schritt 4: Ersten Admin-Account einrichten

Öffne im Browser: http://<NAS-IP>:8813/web/admin

Beim allerersten Aufruf zeigt SFTPGo automatisch einen Setup-Assistenten an, der dich zur Anlage des ersten Administrator-Accounts auffordert. Trage einen sicheren Benutzernamen und ein starkes Passwort ein. Kein Kommandozeileneingriff ist nötig – kein Passwort steht in der Compose-Datei, was ein wichtiger Sicherheitsvorteil gegenüber vielen anderen Docker-Setups ist.

Nach dem Login landest du im WebAdmin-Dashboard mit Statistiken, Benutzerverwaltung, virtuellen Ordnern und Protokollen. Unter http://<NAS-IP>:8813/web/client ist das WebClient-Portal für Endnutzer erreichbar – ein Browser-basierter Dateimanager, den Kunden oder Mitarbeiter zum Hoch- und Herunterladen nutzen können, ohne einen SFTP-Client zu installieren.

Verifizieren: Nach dem ersten Login erscheint das WebAdmin-Dashboard. Rufe zusätzlich http://<NAS-IP>:8813/web/client auf – es erscheint die Login-Seite des WebClient-Portals. Die Statusseite im WebAdmin zeigt SFTP und WebDAV als aktive Dienste.

Schritt 5: Ersten SFTP-Benutzer anlegen

Wechsle im WebAdmin zu Benutzer → Neuer Benutzer. Fülle mindestens folgende Felder aus:

  • Benutzername: z. B. kunde-mueller
  • Passwort: sicheres Passwort oder SSH-Public-Key (Tab „Öffentliche Schlüssel")
  • Home-Verzeichnis: /srv/sftpgo/data/kunde-mueller – SFTPGo legt diesen Ordner beim ersten Login automatisch an
  • Quota: optional – maximale Dateigröße und Gesamtzahl im Tab „Quota" setzen

Für passwortlose SSH-Key-Authentifizierung trägst du den Public Key des Benutzers direkt im Tab „Öffentliche Schlüssel" ein. Wie du SSH-Schlüsselpaare erzeugst, erklärt SSH-Key-Authentifizierung einrichten – Linux & Windows.

Verifizieren: Stelle eine SFTP-Verbindung mit WinSCP her: Verbindungstyp „SFTP", Host = NAS-IP, Port = 2022, Benutzername und Passwort des neuen Benutzers. Beim ersten Verbindungsaufbau den Host-Key bestätigen. Alternativ per OpenSSH:

sftp -P 2022 kunde-mueller@<NAS-IP>

Erwartetes Ergebnis: Der Prompt sftp> erscheint, und mit ls ist das Home-Verzeichnis des Benutzers sichtbar.

Schritt 6: Virtuelle Ordner und Quotas einrichten

Virtuelle Ordner erlauben es, beliebige Verzeichnisse – auch außerhalb des User-Homes – in das sichtbare Dateisystem eines Benutzers einzublenden. Das ist ideal, wenn Kunden Zugriff auf einen freigegebenen Ablagebereich bekommen sollen, ohne Zugriff auf das gesamte NAS.

Navigiere im WebAdmin zu Ordner → Neuer virtueller Ordner. Gib den physischen Pfad an – z. B. /srv/sftpgo/data/shared-upload – und weise ihm einen virtuellen Pfad zu (z. B. /eingang). Diesen Ordner bindest du anschließend dem Benutzer über den Tab „Virtuelle Ordner" in seinen Account ein. Eine optionale Quota auf dem virtuellen Ordner verhindert, dass ein einzelner Kunde den gesamten Speicherplatz belegt.

Möchtest du einen bestehenden Synology-Shared-Folder einbinden, trage ihn in der Compose-Datei als zusätzliches Volume ein und starte den Container neu:

    volumes:
      - /volume1/docker/sftpgo/data:/srv/sftpgo
      - /volume1/docker/sftpgo/home:/var/lib/sftpgo
      - /volume1/backup:/srv/sftpgo/data/backup

Verifizieren: Verbinde dich als Testbenutzer per SFTP oder über das WebClient-Portal. Der virtuelle Ordner muss im Wurzelverzeichnis des Benutzers sichtbar sein. Lade eine Testdatei hoch und prüfe im WebAdmin unter „Protokolle", ob der Upload korrekt geloggt wurde.

Schritt 7: WebDAV-Zugriff testen

WebDAV ermöglicht das direkte Einbinden des SFTPGo-Speichers als Netzlaufwerk. Unter Windows öffnest du den Explorer, wählst „Dieser PC → Netzwerklaufwerk verbinden → Verbindung mit einer Website herstellen" und gibst http://<NAS-IP>:10080 ein. Auf dem Mac wählst du im Finder „Gehe zu → Mit Server verbinden" (Cmd+K) mit derselben Adresse. Benutzername und Passwort sind identisch mit dem SFTP-Account.

Stelle sicher, dass Port 10080 in der Synology-Firewall freigegeben ist. Für externe Erreichbarkeit mit TLS empfiehlt sich ein Reverse Proxy – z. B. der Nginx Proxy Manager auf der Synology.

Verifizieren: Öffne im Browser http://<NAS-IP>:10080. SFTPGo antwortet mit einer HTTP-401-Meldung (Authentifizierung erforderlich) – das beweist, dass der WebDAV-Listener aktiv ist. Trage Benutzername und Passwort ein; der Dateiinhalt des Home-Verzeichnisses erscheint.

Schritt 8: Brute-Force-Schutz prüfen

SFTPGo enthält einen integrierten Defender, der nach mehreren fehlgeschlagenen Anmeldeversuchen eine IP automatisch sperrt. Er ist nach der Installation aktiv, aber mit relativ weichen Standardschwellenwerten. Öffne im WebAdmin Verteidigung (Defender) und passe die Einstellungen an: Anzahl erlaubter Fehlversuche, Sperrdauer und Whitelist für vertrauenswürdige IP-Bereiche (z. B. dein internes Subnetz). Alternativ setzt du die Werte per Umgebungsvariable:

    environment:
      - SFTPGO_COMMON__DEFENDER__ENABLED=true
      - SFTPGO_COMMON__DEFENDER__BAN_TIME=30
      - SFTPGO_COMMON__DEFENDER__THRESHOLD=10

Verifizieren: Navigiere im WebAdmin zu Diagnose → Defender. Die Seite listet gebannte IPs auf; ein leeres Ergebnis ist bei einem frischen Setup normal. Prüfe, ob der Defender-Status als „aktiviert" angezeigt wird.

Troubleshooting / Typische Fehler

  • „Permission denied" beim Container-Start: Die Host-Verzeichnisse haben nicht die richtige Eigentümerschaft. Lösung: sudo chown -R 1000:1000 /volume1/docker/sftpgo/data /volume1/docker/sftpgo/home ausführen und den Container neu starten.
  • WebAdmin öffnet sich nicht / Verbindung abgelehnt: Der Container ist noch nicht vollständig gestartet. Warte 10–15 Sekunden nach dem ersten Start, dann erst den Browser öffnen. Prüfe im Container Manager, ob der Status „Läuft" anzeigt.
  • WebDAV antwortet nicht auf Port 10080: WebDAV ist ohne SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080 vollständig deaktiviert – kein Fehler im Log, einfach kein Listener. Variable in der Compose prüfen und Container neu starten. Zusätzlich Port 10080 in der Synology-Firewall freigeben.
  • SFTP-Verbindung schlägt fehl (Port 2022): Prüfe, ob Port 2022 in der Synology-Firewall und ggf. im Router für externe Verbindungen freigegeben ist. DSM nutzt Port 22 – das ist kein Konflikt, da SFTPGo intern auf 2022 läuft.
  • „Host key mismatch" nach einem Neustart: Wenn das Volume /var/lib/sftpgo gelöscht oder neu angelegt wurde, generiert SFTPGo neue SSH-Host-Keys. Alle SFTP-Clients zeigen eine Warnung. Lösung: Bekannten Host-Eintrag im Client löschen und neuen Key bestätigen. Das home-Volume niemals löschen.
  • SQLite-Datenbankfehler nach hartem NAS-Shutdown: Bei Stromausfall oder kill -9 kann sftpgo.db beschädigt sein. Wiederherstellung: Container stoppen, Integrität prüfen mit sqlite3 sftpgo.db "PRAGMA integrity_check". Bei Korruption ein Backup einspielen. SFTPGO_GRACE_TIME=32 verhindert das Problem bei normalen Neustarts.
  • Image-Pull schlägt im DSM Container Manager fehl: Das Synology DSM 7.x GUI kann Images von ghcr.io nicht direkt suchen oder pullen. Ausschließlich drakkan/sftpgo:v2.7 von Docker Hub verwenden. Falls nötig, per SSH vorab laden: sudo docker pull drakkan/sftpgo:v2.7.

Häufige Fragen

Brauche ich eine externe Datenbank wie MariaDB oder PostgreSQL?

Nein. SFTPGo verwendet standardmäßig SQLite, die Datenbankdatei liegt in /var/lib/sftpgo/sftpgo.db und wird durch das Volume persistent gehalten. Für KMU-Szenarien mit bis zu mehreren hundert Nutzern ist SQLite vollkommen ausreichend. MariaDB oder PostgreSQL sind nur dann sinnvoll, wenn Hunderte von Verbindungen gleichzeitig auf die Datenbank schreiben – ein Szenario, das für typische Self-Hosted-Installationen nicht realistisch ist.

Wie unterscheidet sich SFTPGo von Syncthing?

SFTPGo ist ein Push/Pull-Protokollserver: Clients verbinden sich aktiv und übertragen Dateien auf Anfrage (SFTP-Upload, WebDAV-Mount). Syncthing hingegen ist ein Sync-Dienst, der Verzeichnisse kontinuierlich zwischen zwei oder mehr Endpunkten synchron hält – ohne manuellen Transfer. Für den B2B-Dateiaustauch, bei dem ein Kunde eine Datei zu einem definierten Zeitpunkt hochlädt, ist SFTPGo die richtige Wahl. Für die automatische Replikation zwischen zwei Standorten ist Syncthing besser geeignet – mehr dazu: Syncthing auf dem Synology NAS: Dateisynchronisation ohne Cloud.

Kann ich bestehende Synology-Shared-Folders als SFTPGo-Speicher nutzen?

Ja. Trage den Shared Folder als zusätzliches Volume in die Compose-Datei ein – z. B. /volume1/backup:/srv/sftpgo/data/backup – und lege dann im WebAdmin einen Benutzer an, dessen Home-Verzeichnis auf diesen Pfad zeigt, oder binde den Pfad als virtuellen Ordner ein. Die Berechtigungen des Shared Folders müssen UID 1000 als Eigentümer haben.

Ist SFTPGo kostenlos?

Die Community Edition ist vollständig Open Source (AGPLv3) und kostenlos. Sie enthält SFTP, WebDAV, FTP/S, WebAdmin, WebClient, virtuelle Ordner, Quotas und Brute-Force-Schutz. Eine kostenpflichtige Enterprise Edition bietet erweiterte Features wie dynamische virtuelle Ordner und IMAP-Integration – für die meisten KMU-Anwendungsfälle ist die Community Edition mehr als ausreichend.

Welchen Image-Tag soll ich verwenden – latest oder v2.7?

Verwende den gepinnten Floating-Tag v2.7 statt latest. Der latest-Tag folgt dem jeweils neuesten Release einschließlich Major-Versionen und kann bei einem automatischen Update zu unerwarteten Breaking Changes führen. Mit v2.7 erhältst du Patch-Updates innerhalb der 2.7-Linie, ohne ungewollt auf 2.8 oder 3.0 zu springen.

Wie sichere ich den WebAdmin ab?

Den WebAdmin-Port 8813 solltest du nicht ins öffentliche Internet öffnen – nur SFTP (2022) und WebDAV (10080) müssen extern erreichbar sein, wenn überhaupt. Für externe Erreichbarkeit aller Dienste mit TLS ist ein Reverse Proxy der empfohlene Weg. Außerdem solltest du für alle SFTP-Benutzer SSH-Key-Authentifizierung statt Passwörtern verwenden und Passwort-Logins im WebAdmin deaktivieren.

Fazit

SFTPGo ist eine außergewöhnlich vollständige Self-Hosted-Lösung, die ohne externe Abhängigkeiten auskommt und trotzdem Enterprise-Features wie virtuelle Ordner, Quotas, ein WebClient-Portal und integrierten Brute-Force-Schutz mitbringt. Das Compose-Setup auf dem Synology NAS ist in unter 30 Minuten abgeschlossen – zwei Volumes, eine Handvoll Umgebungsvariablen, einmal chown per SSH. Wer im KMU-Umfeld sauberen, auditierbaren Dateiaustauch mit Kunden oder Partnern braucht und FTP-Altlasten endlich ablösen möchte, findet hier eine praxistaugliche, aktiv gepflegte Alternative, die weit über das hinausgeht, was Synologies eigene QuickConnect-Freigaben bieten können.

Weiterführende Anleitungen und Quellen

Offizielle Quellen: SFTPGo Docker-Dokumentation · Docker Hub: drakkan/sftpgo · SFTPGo GitHub-Repository