Docker – SFTPGo mit Portainer einrichten

Veröffentlicht von

Eine kleine Anleitung wie man SFTPGo mit Portainer auf einem Ubuntu-Server installiert. Bei dieser Anleitung wird ein Laufwerk von einem Windows-Server, mit dem Ubuntu-Server verbunden, um die Daten auf diesem Laufwerk zu speichern.

# Mit dem Ubuntu-Server über SSH verbinden (z.b. über PowerShell)
ssh user@ip-adresse

# Ordner erstellen, der später mit dem Freigabe-Ordner vom Windows-Server gebindet wird
sudo mkdir -p /mnt/win_server_filesharing

# Freigabe-Ordner vom Windows-Server mounten
# [USER] durch den richtigen User ersetzen
# [vers=3.0] das ist die SMB version, schauen ob die SMBv3 unterstützt wird, alternativ auf SMBv2 wechseln
# [uid] das ist die User-ID, die muss angepasst werden, mit dem Befehl "id" ausgeben
# [gid] das ist die Group-ID, die muss angepasst werden, mit dem Befehl "id" ausgeben
sudo mount -t cifs //10.10.10.10/SFTP_Go_data /mnt/win_server_filesharing -o credentials=/home/$USER/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0

# Schauen ob im Ordner was zu sehen ist
ls -l /mnt/win_server_filesharing

# Die Datei "/etc/fstab" damit der Mount nach dem Neustart wieder initialistert wird
sudo nano /etc/fstab

# in die "/etc/fstab" ganz unten eintragen (Speicheren mit Strg+O, dann Enter und schließen mit Strg+X)
//10.10.10.10/SFTP_Go_data /mnt/win_server_filesharing cifs credentials=/home/inge/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0,noserverino 0 0


### Vorbereitung für Docker ###

# Hauptverzeichnis für SFTPGo erstellen
mkdir -p /home/[USER]/docker/sftpgo/config
mkdir -p /home/[USER]/docker/sftpgo/hostkeys
mkdir -p /home/[USER]/docker/sftpgo/backups
mkdir -p /home/[USER]/docker/sftpgo/db

# Rechte für die Ordner setzen (Falls nötig)
sudo chown -R 1000:1000 /home/[USER]/docker/sftpgo/config
sudo chown -R 1000:1000 /home/[USER]/docker/sftpgo/hostkeys
sudo chown -R 1000:1000 /home/[USER]/docker/sftpgo/backups
sudo chown -R 1000:1000 /home/[USER]/docker/sftpgo/backups

# in den Portainer-Ordner wechseln
cd /home/[USER]/docker/sftpgo/config

# die sftpgo.json Datei erstellen
nano sftpgo.json

# folgendes in die sftpgo.json einfügen (speichern mit Strg+O, Enter und schließen mit Strg+X)
{
  "httpd": {
    "bindings": [
      {
        "languages": ["de"]
      }
    ]
  }
}

# Jetzt zu Portainer wechseln und ein Stack erstellen und das hier einfügen
version: '3.8'

services:
  sftpgo:
    image: drakkan/sftpgo:2.7.x-plugins
    container_name: SFTPGo
    user: "1000:1000" # Optional: Passe dies an deine 'id' an, falls Rechteprobleme auftreten
    ports:
      - "8813:8080" # Web-Interface
      - "9422:2022" # SFTP Zugriff
    environment:
      SFTPGO_WEBDAVD__BINDINGS__0__PORT: 5007
      SFTPGO_DATA_PROVIDER__DRIVER: mysql
      SFTPGO_DATA_PROVIDER__NAME: sftpgo
      SFTPGO_DATA_PROVIDER__HOST: mysql
      SFTPGO_DATA_PROVIDER__PORT: 3306
      SFTPGO_DATA_PROVIDER__USERNAME: admin
      SFTPGO_DATA_PROVIDER__PASSWORD: admin-PW
      SFTPGO_COMMON__DEFENDER__ENABLED: "true"
      SFTPGO_COMMON__DEFENDER__BAN_TIME: 15
      SFTPGO_COMMON__DEFENDER__BAN_TIME_INCREMENT: 100
      SFTPGO_COMMON__DEFENDER__THRESHOLD: 5
      SFTPGO_COMMON__DEFENDER__OBSERVATION_TIME: 15
    volumes:
      # DIE DATEN: Hier wird die Windows-Festplatte eingebunden
      - /mnt/win_server_filesharing:/srv/sftpgo:rw
      
      # KONFIGURATION: Diese liegen lokal auf deinem Ubuntu Server
      - /home/[USER]/docker/sftpgo/config:/var/lib/sftpgo:rw
      - /home/[USER]/docker/sftpgo/hostkeys:/var/lib/sftpgo/hostkeys:rw
      - /home/[USER]/docker/sftpgo/backups:/srv/sftpgo/backups:rw
      - /home/[USER]/docker/sftpgo/config/sftpgo.json:/etc/sftpgo/sftpgo.json:ro
      # Hinweis: Die Datei sftpgo.json wird beim ersten Start automatisch erstellt, 
      # wenn du den Mount unten weglässt oder die Datei vorher leer anlegst.
    depends_on:
      - mysql
    restart: unless-stopped

  mysql:
    image: mariadb:11.4-noble
    #user: "1000:1000"
    container_name: SFTPGo-DB
    environment:
      TZ: Europe/Zurich
      MYSQL_DATABASE: sftpgo
      MYSQL_USER: admin
      MYSQL_PASSWORD: admin-PW
      MYSQL_ROOT_PASSWORD: "mysql_rootpass"
    volumes:
      - ./db:/var/lib/mysql:rw
    restart: unless-stopped

# Wenn alles funktioniert hat, dann SFTPGo im Browser öffnen
Code-Sprache: PHP (php)