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: 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_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!)

To run out of the console use this command

ddcoker ps # To find the ID of the container for the next line
docker exec -u 0 -it [Docker ID/NAME] bash

Then run the following to edit the file

apt-get update
apt-get install nano -y
nano /etc/sftpgo/sftpgo.json

Then exit out of nano

Ctrl + X
Y