Skip to main content

SFTPGo

image.png

Enlaces

Requisitos

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 variables2.15-docker_add_stack_web_editor.gif

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

image.png

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:

image.png

Traefik

traefik-concepts-1.webp

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