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

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

SFTPGo ersetzt FTP-Server und QuickConnect-Freigaben durch einen SFTP- und WebDAV-Server mit Web-Oberfläche. Die Anleitung zeigt das Compose-Projekt auf dem Synology NAS mit SQLite, virtuellen Ordnern, Quotas und Brute-Force-Schutz.

Geprüft am 30.09.2026 · für sftpgo 2.7.6

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Symbolbild zur Anleitung: SFTPGo auf dem Synology NAS installieren

SFTPGo ist ein eventgesteuerter Dateiübertragungsserver, der SFTP, WebDAV und HTTP/S in einem Container vereint, inklusive WebAdmin-UI, WebClient-Portal für Endnutzer, virtuellen Ordnern mit Quotas und integriertem Brute-Force-Schutz. Beim Dateiaustausch mit Kunden ersetzt er unsichere FTP-Server und unübersichtliche QuickConnect-Freigaben. Diese Anleitung zeigt die Einrichtung auf dem Synology NAS als Compose-Projekt im Container Manager, ohne externe Datenbank.

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.7Tag der 2.7-Linie; Docker Hub bevorzugen (ghcr.io scheitert im DSM-GUI)
Aktuelle Versionv2.7.6 (Stand: September 2026)Debian-basiert, Multi-Arch: amd64, arm64, armv7, ppc64le
Port WebAdmin/WebClient8813 → 8080Host 8813, Container 8080; Pfade /web/admin und /web/client
Port SFTP2022 → 2022Standardport von SFTPGo; Port 22 bleibt für DSM
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

Verbinden Sie sich per SSH mit dem NAS (Anleitung: SSH auf dem Synology NAS aktivieren). Erstellen Sie die beiden Verzeichnisse und setzen Sie die Berechtigungen vor dem ersten Start auf UID/GID 1000, denn das Image läuft als Benutzer 1000. Fehlt das chown, bricht SFTPGo 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

Verifizieren: Prüfen Sie den Eigentümer:

ls -la /volume1/docker/sftpgo/

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

Schritt 2: Compose-Datei erstellen

Erstellen Sie die Datei /volume1/docker/sftpgo/compose.yaml mit folgendem Inhalt, per SSH-Terminal oder per Upload über die File Station.

services:
  sftpgo:
    image: drakkan/sftpgo:v2.7
    container_name: sftpgo
    restart: unless-stopped
    stop_grace_period: 40s
    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=
      - SFTPGO_HTTPD__BINDINGS__0__LANGUAGES=de,en
    security_opt:
      - no-new-privileges:true

Zur Compose-Datei: Der Host-Port 8813 statt 8080 vermeidet Konflikte mit anderen Diensten auf dem NAS. SFTPGO_GRACE_TIME=32 gibt laufenden Übertragungen beim Stoppen bis zu 32 Sekunden Zeit. Docker beendet Container aber standardmäßig nach 10 Sekunden; stop_grace_period: 40s sorgt dafür, dass die Wartezeit tatsächlich greift. WebDAV ist standardmäßig deaktiviert; erst SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080 startet den Listener.

Sprache der Web-Oberfläche: Ohne weitere Angabe zeigt SFTPGo WebAdmin und WebClient nur auf Englisch an. SFTPGO_HTTPD__BINDINGS__0__LANGUAGES=de,en schaltet Deutsch und Englisch frei: Die Oberfläche folgt der Browsersprache, die Anmeldeseite zeigt eine Sprachauswahl, die erste Sprache gilt als Rückfall. Mit =de allein ist sie fest deutsch. v2.7 kennt en, de, fr und it; andere Codes ignoriert SFTPGo ohne Fehlermeldung. Danke an Ralph Hahn für den Hinweis.

Verifizieren: Prüfen Sie die Syntax:

cd /volume1/docker/sftpgo && sudo docker compose config --quiet

Keine Ausgabe bedeutet: keine Syntaxfehler.

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

Öffnen Sie den Container Manager und wechseln Sie zu Projekt. Wie Sie ein Compose-Projekt anlegen, erklärt die Grundanleitung Container Manager: Docker-Compose-Projekt anlegen, starten und aktualisieren. Verwenden Sie 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 (rund 70 MB komprimiert). Anschließend erzeugt SFTPGo SSH-Host-Keys in /var/lib/sftpgo und legt die SQLite-Datenbank an; das dauert einige Sekunden.

Verifizieren: Der Container sftpgo hat im Container Manager den Status „Läuft“. Das Protokoll zeigt die Start-Meldungen der Dienste für HTTP (8080), SFTP (2022) und WebDAV (10080) und enthält weder „Permission denied“ noch „database is locked“.

Schritt 4: Ersten Admin-Account einrichten

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

Beim ersten Aufruf fordert SFTPGo zur Anlage des ersten Administrator-Accounts auf. Tragen Sie einen Benutzernamen und ein starkes Passwort ein. Erledigen Sie das direkt nach dem Start: Bis dahin kann jeder im Netzwerk, der die Seite erreicht, den Admin-Account anlegen. Ein Passwort in der Compose-Datei ist nicht nötig.

Das WebAdmin-Dashboard zeigt Statistiken, Benutzerverwaltung, virtuelle Ordner und Protokolle. Unter http://<NAS-IP>:8813/web/client erreichen Endnutzer das WebClient-Portal, einen Dateimanager im Browser ohne SFTP-Client.

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

Schritt 5: Ersten SFTP-Benutzer anlegen

Wechseln Sie im WebAdmin zu Benutzer → Neuer Benutzer und füllen Sie 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 Gesamtgröße und Dateianzahl im Tab „Quota“

Für SSH-Key-Authentifizierung tragen Sie den Public Key des Benutzers im Tab „Öffentliche Schlüssel“ ein. Wie Sie Schlüsselpaare erzeugen, erklärt SSH-Key-Authentifizierung einrichten – Linux & Windows.

Verifizieren: Stellen Sie 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 blenden Verzeichnisse außerhalb des Home-Verzeichnisses in das Dateisystem eines Benutzers ein, etwa einen gemeinsamen Ablagebereich für Kunden ohne Zugriff auf das übrige NAS.

Öffnen Sie im WebAdmin Ordner → Neuer virtueller Ordner. Geben Sie den physischen Pfad an – z. B. /srv/sftpgo/data/shared-upload und weisen Sie ihn anschließend im Benutzerkonto unter „Virtuelle Ordner“ einem virtuellen Pfad zu (z. B. /eingang). Eine optionale Quota auf dem virtuellen Ordner verhindert, dass ein einzelner Kunde den gesamten Speicherplatz belegt.

Einen bestehenden Synology-Shared-Folder tragen Sie als zusätzliches Volume ein und erstellen das Projekt neu. Der Ordner muss für UID 1000 beschreibbar sein:

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

Verifizieren: Melden Sie sich als Testbenutzer per SFTP oder im WebClient-Portal an. Der virtuelle Ordner ist im Wurzelverzeichnis sichtbar, und eine hochgeladene Testdatei erscheint im Ordner.

Schritt 7: WebDAV-Zugriff testen

WebDAV ermöglicht das direkte Einbinden des SFTPGo-Speichers als Netzlaufwerk. Unter Windows wählen Sie im Explorer „Dieser PC → Netzlaufwerk verbinden → Verbindung mit einer Website herstellen“ und geben http://<NAS-IP>:10080 ein. Windows erlaubt die Basic-Anmeldung für WebDAV standardmäßig nur über HTTPS; ohne TLS scheitert die Anmeldung, daher gehört ein Reverse Proxy mit Zertifikat davor. Auf dem Mac wählen Sie im Finder „Gehe zu → Mit Server verbinden“ (Cmd+K) mit derselben Adresse. Benutzername und Passwort sind identisch mit dem SFTP-Account.

Port 10080 muss in der DSM-Firewall freigegeben sein. Für Zugriffe von außen gehört ein Reverse Proxy mit TLS davor, z. B. der Nginx Proxy Manager auf der Synology.

Verifizieren: Öffnen Sie http://<NAS-IP>:10080 im Browser. Es erscheint eine Anmeldeabfrage (HTTP 401), der WebDAV-Listener ist also aktiv. Nach der Anmeldung erscheint der Inhalt des Home-Verzeichnisses.

Schritt 8: Brute-Force-Schutz prüfen

SFTPGo enthält einen Defender, der IP-Adressen nach mehreren fehlgeschlagenen Anmeldungen sperrt. Er ist in der Standardkonfiguration deaktiviert. Aktivieren Sie ihn über Umgebungsvariablen in der compose.yaml und erstellen Sie das Projekt neu (Sperrdauer in Minuten, Schwellenwert als Punktzahl; Standard 15):

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

Verifizieren: Im WebAdmin erscheint der Menüpunkt für gesperrte IP-Adressen (Defender). Die Liste ist bei einem frischen Setup leer. Nach mehreren Fehlanmeldungen von einem Testgerät erscheint dessen IP dort.

Troubleshooting / Typische Fehler

  • Web-Oberfläche bleibt englisch: Die Variable SFTPGO_HTTPD__BINDINGS__0__LANGUAGES fehlt oder enthält keinen gültigen Code. Eintrag in der compose.yaml prüfen, das Projekt neu erstellen und die Seite neu laden. Die gewählte Sprache speichert der Browser; bei Bedarf über die Sprachauswahl auf der Anmeldeseite umstellen.
  • „Permission denied“ beim Container-Start: Falsche Eigentümerschaft der Host-Verzeichnisse. sudo chown -R 1000:1000 /volume1/docker/sftpgo/data /volume1/docker/sftpgo/home ausführen, Container neu starten.
  • WebAdmin öffnet sich nicht / Verbindung abgelehnt: Container noch im Start oder beendet. Status im Container Manager und das Protokoll prüfen.
  • 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 prüfen, Projekt neu erstellen und Port 10080 in der DSM-Firewall freigeben.
  • SFTP-Verbindung schlägt fehl (Port 2022): Port 2022 in der DSM-Firewall und bei Zugriffen von außen im Router freigeben. Im Client Port 2022 angeben, nicht 22 (DSM).
  • „Host key mismatch“ nach einem Neustart: Wurde /var/lib/sftpgo gelöscht, erzeugt SFTPGo neue SSH-Host-Keys und alle Clients warnen. Alten Host-Eintrag im Client löschen und neuen Key bestätigen; das home-Verzeichnis daher nie löschen und mitsichern.
  • SQLite-Fehler nach Stromausfall: sftpgo.db kann beschädigt sein. Wiederherstellung: Container stoppen, Integrität mit sqlite3 sftpgo.db "PRAGMA integrity_check" prüfen (sqlite3 ist auf DSM nicht vorinstalliert, ggf. auf einem anderen Rechner), bei Fehlern ein Backup einspielen.
  • Image-Pull schlägt im Container Manager fehl: drakkan/sftpgo:v2.7 von Docker Hub verwenden, nicht ghcr.io. Notfalls 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 eine einzelne Instanz im KMU reicht SQLite. MariaDB oder PostgreSQL brauchen Sie erst bei sehr vielen gleichzeitigen Verbindungen oder mehreren SFTPGo-Instanzen mit gemeinsamer Datenbank.

Wie unterscheidet sich SFTPGo von Syncthing?

SFTPGo ist ein Protokollserver: Clients übertragen Dateien auf Anfrage. Syncthing ist ein Sync-Dienst, der Verzeichnisse zwischen mehreren Geräten laufend abgleicht. Für den Dateiaustausch mit Kunden eignet sich SFTPGo, für die automatische Replikation zwischen Standorten Syncthing: Syncthing auf dem Synology NAS: Dateisynchronisation ohne Cloud.

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

Ja, als zusätzliches Volume in der Compose-Datei (z. B. /volume1/backup:/srv/sftpgo/data/backup), danach als Home-Verzeichnis eines Benutzers oder als virtueller Ordner (Schritt 6). UID 1000 braucht Schreibrechte auf den Shared Folder.

Ist SFTPGo kostenlos?

Die Open-Source-Version steht unter AGPLv3 und enthält SFTP, WebDAV, FTP/S, WebAdmin, WebClient, virtuelle Ordner, Quotas und Brute-Force-Schutz. Daneben gibt es eine kommerzielle Enterprise-Version mit zusätzlichen Funktionen.

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

Verwenden Sie v2.7 statt latest. latest folgt jedem neuen Release und kann unerwartete Änderungen einspielen. v2.7 liefert Patch-Updates der 2.7-Linie, ohne auf 2.8 zu springen. Für feste Stände nutzen Sie v2.7.6.

Wie sichere ich den WebAdmin ab?

Öffnen Sie den WebAdmin-Port 8813 nicht ins Internet; extern erreichbar sein müssen höchstens SFTP (2022) und WebDAV. WebDAV und WebClient gehören nach außen nur hinter einen Reverse Proxy mit TLS. Aktivieren Sie den Defender (Schritt 8), nutzen Sie für SFTP-Benutzer SSH-Schlüssel und aktivieren Sie für Administratoren die Zwei-Faktor-Authentifizierung im WebAdmin.

Fazit

SFTPGo kommt ohne externe Abhängigkeiten aus. Das Compose-Setup ist in rund 30 Minuten erledigt: zwei Verzeichnisse, einige Umgebungsvariablen, einmal chown per SSH. Für den nachvollziehbaren Dateiaustausch mit Kunden ersetzt es FTP-Server und QuickConnect-Freigaben.

Weiterführende Anleitungen und Quellen

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