SFTPGo

Enlaces
Requisitos
- Docker instalado siguiendo los pasos de instalar
- Portainer configurado siguiendo los pasos de instalar portainer.
- NGINX Proxy manager siguiendo los pasos de instalar NGINX Proxy Manager. (opcional)
- Traefik configurado siguiendo los pasos de instalar Traefik. (opcional)
Imagen
Repositorio de Docker Hub:
Portainer- Nuevo «stack»
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables
Fichero de variables
# MariaDB
MYSQL_DATABASE=sftpgo
MYSQL_USER=sftpgo_user
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=rootpass
# SFTPgo
TZ=Europe/Madrid
SFTPGO_LOG_FILE_PATH=/srv/sftpgo/logs/sftpgo.log
#SFTPGO_FTPD__BINDINGS__0__PORT=2121
#SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP=<your external ip here>
SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080
SFTPGO_DATA_PROVIDER__DRIVER=mysql
SFTPGO_DATA_PROVIDER__NAME=sftpgo
SFTPGO_DATA_PROVIDER__HOST=sftpgo-db
SFTPGO_DATA_PROVIDER__PORT=3306
SFTPGO_DATA_PROVIDER__USERNAME=${MYSQL_USER}
SFTPGO_DATA_PROVIDER__PASSWORD=${MYSQL_PASSWORD}
SFTPGO_COMMON__DEFENDER__ENABLED=true
SFTPGO_COMMON__DEFENDER__OBSERVATION__TIME=5
SFTPGO_COMMON__DEFENDER__THRESHOLD=5
SFTPGO_COMMON__DEFENDER__BAN__TIME=10
SFTPGO_COMMON__DEFENDER__SCORE__VALID=1
SFTPGO_COMMON__DEFENDER__SCORE_INVALID=2
Fichero docker-compose
services:
mariadb:
image: mariadb
container_name: sftpgo-db
restart: unless-stopped
env_file: stack.env
volumes:
- db:/var/lib/mysql
networks:
- backend
sftpgo:
image: drakkan/sftpgo
container_name: sftpgo
restart: unless-stopped
env_file: stack.env
depends_on:
- mariadb
ports:
- "8080:8080" # HTTP
- "10080:10080" # WebDAV
- "2022:2022" # SFTP
#- 2121:2121 #ftp port
#- 50000-50100:50000-50100 #ftp passive ports range
volumes:
- app:/srv/sftpgo/
- config:/var/lib/sftpgo
networks:
- backend
- proxy
volumes:
db:
app:
config:
networks:
backend:
proxy:
external: true
En este punto ya puedes ir a http://my.docker.ip.address
Publicando detrás de un proxy
Crear registro DNS
En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"
NGINX proxy

Para publicar el contenedor detrás de NGINX proxy, el fichero docker-compose.yaml contendrá lo siguiente:
Crear un nuevo "proxy host"
Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

Traefik

Para publicar el contenedor detrás del proxy Traefik, el fichero docker-compose.yaml contendrá lo siguiente:
labels:
- traefik.enable=true
- traefik.http.routers.sftpgo.rule=Host(`app.ictiberia.com`)
- traefik.http.routers.sftpgo.tls=true
- traefik.http.routers.sftpgo.tls.certresolver=letsencrypt
- traefik.http.services.sftpgo.loadbalancer.server.port=80
Solo IPs Privadas
Para permitir el acceso solo desde redes privadas, modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «privateIPs@file»
- traefik.http.routers.app.middlewares=privateIPs@file
Configuración adicional
Variables adicionales
# Servidor SMTP
SFTPGO_SMTP__HOST=smtp.office365.com
SFTPGO_SMTP__PORT=587
SFTPGO_SMTP__FROM=noreply@domain.com
SFTPGO_SMTP__USER=user@domain.com
SFTPGO_SMTP__PASSWORD=password
SFTPGO_SMTP__AUTH_TYPE=1
SFTPGO_SMTP__ENCRYPTION=2
# Servidor HTTP
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__NAME="nombre web"
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__SHORT_NAME="texto junto al logo"
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__FAVICON_PATH=/branding/favicon.ico
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__LOGIN_IMAGE_PATH=/branding/login.png
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__LOGO_PATH=/branding/logo.png
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_CLIENT__NAME="nombre web"
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_CLIENT__SHORT_NAME="texto junto al logo"
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_CLIENT__FAVICON_PATH=/branding/favicon.png
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_CLIENT__LOGIN_IMAGE_PATH=/branding/login.png
SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_CLIENT__LOGO_PATH=/branding/logo.png