Skip to main content

sFTPGo - Setup On a Docker Server

services:
  sftpgo:
    image: drakkan/sftpgo:latest
    container_name: SFTPGo
    user: root:root # For running on Docker server
    ports:
      - 8082:8080 # HTTP
      - 2022:2022 # SFTP
      - 2121:2121 # FTP
      - 10080:10080 #WebDAV
      - 50000-50010:50000-50010 #Passive Ports
    environment:
      # Global Parameters
      #PUID: 0 # UserId for running on Synology
      #GUID: 0 # GroupId for running on Synology
      SFTPGO_LOG_LEVEL: debug
      TZ: America/Montreal
      SFTPGO_COMMON_DEFAULT_LANGUAGE: en
      SFTPGO_COMMON__UMASK:#SFTPGO_COMMON__UMASK: 000
      # Defender
      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
      # Used for Testing/Dev only
      SFTPGO_DATA_PROVIDER_CREATE_DEFAULT_ADMIN: false
        #SFTPGO_DEFAULT_ADMIN_USERNAME: sftpgo
        #SFTPGO_DEFAULT_ADMIN_PASSWORD: "f$ANnh#Khamd&7sy"
      # FTP
      SFTPGO_FTPD__ENABLED: true
      SFTPGO_FTPD__BINDINGS__0__DEBUG: true
      SFTPGO_FTPD__BANNER: "SFL FTP Server"
      SFTPGO_FTPD_BINDINGS_0_PORT: 2121 # FTP Port
      SFTPGO_FTPD__PASSIVE_PORT_RANGE__START: 50000
      SFTPGO_FTPD__PASSIVE_PORT_RANGE__END: 50010
      SFTPGO_FTPD_BINDINGS_0_FORCE_PASSIVE_IP: 172.0.0.1:8082
      #SFTPGO_FTPD__CERTIFICATE_FILE: /var/lib/sftpgo/certificate
      #SFTPGO_FTPD__CERTIFICATE_KEY_FILE: /var/lib/sftpgo/certificateKey
      # sFTP
      SFTPGO_SFTPD_BINDINGS_0_PORT: 2022 # SFTP port
      # HTTPD
      SFTPGO_HTTPD_BINDINGS_0_PORT: 8082
      SFTPGO_HTTPD_BINDINGS_0_ADDRESS: 0.0.0.0
      # WebDAV
      SFTPGO_WEBDAVD__BINDINGS__0__PORT: 10080
      # MySQL Backend
      SFTPGO_DATA_PROVIDER_CREATE_DEFAULT_ADMIN: true
      SFTPGO_DATA_PROVIDER__DRIVER: mysql
      SFTPGO_DATA_PROVIDER__NAME: sftpgo
      SFTPGO_DATA_PROVIDER__HOST: mysql
      SFTPGO_DATA_PROVIDER__PORT: 3306
      SFTPGO_DATA_PROVIDER__USERNAME: sftpgo
      SFTPGO_DATA_PROVIDER__PASSWORD: "f$ANnh#Khamd&7sy"
    volumes:
      - /volume1/docker/sftpgo/data:/srv/sftpgo:rw
      - /volume1/docker/sftpgo/config:/var/lib/sftpgo:rw
      - /volume1/docker/sftpgo/backups:/srv/sftpgo/backups:rw
      #- /volume1/docker/sftpgo/etc/sftpgo.json:/etc/sftpgo/sftpgo.json:rw
      #- /volume1/docker/sftpgo/storage:/var/lib/sftpgo:rw
    restart: on-failure:8
    comments: "You have to enable the section in the /etc/sftpgo/sftpgo.json file for FTP to work"

  mysql:
    image: mariadb:11.4-noble
    container_name: SFTPGo-DB
    environment:
      TZ: America/Montreal
      MYSQL_DATABASE: sftpgo
      MYSQL_USER: sftpgo
      MYSQL_PASSWORD: "f$ANnh#Khamd&7sy"
      MYSQL_ROOT_PASSWORD: "f$ANnh#Khamd&7sy"
    volumes:
      - /volume1/docker/sftpgo/db:/var/lib/mysql:rw
    restart: on-failure:5

From the comment above you have to do the following to update the file.

Install nano editor and edit file using Unraid Root prompt (Not docker console!)

docker exec -u 0 -it [Docker ID/NAME] bash
apt-get update
apt-get install nano -y
nano /etc/sftpgo/sftpgo.json
Ctrl + X
Y