• 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Docker de sFTPgo
#1
Hola

Ya en un hilo anterior hablé de como usar e instalar el qpkg de SFTPgo.

Pero en este hilo vamos a ver como instalarlo por docker.

Las ventajas de hacerlo en docker frente a un QPKG son varias:
-al no estar como aplicación de QTS, si SFTP se ve comprometido de alguna forma, al ser un docker podremos tenerlo mas aislado.
-no dependemos del programador del qpkg para hacer actualizaciones, las hacemos vía docker del propio programador de SFTPgo.
-podemos activar mas funciones por la definición de variables en la creación del docker.
-podemos usar una BBDD postgreSQL o mariaDB para gestionar datos y hacer que estos sean persistentes en el caso de reinstalaciones de SFTPgo
- ....


Como es habitual, voy a utilizar la consola para la creación.
Recordad que la ventana del código puede tener mas contenido del que se ve a simple vista.

Forma mas sencilla de desplegarlo
Código:
docker run --name sftpgo --network=Dockers -p 8888:8080 -p 2022:2022 -d "drakkan/sftpgo:latest"

Si no tenemos y no queremos tenerlo en la red de Dockers, no pondremos "--network=Dockers"

Para acceder a su web escribiremos en nuestro navegador web "http://la_ip_de_nuestra_nas:8888"
He usado el 8888 ya que el muy posible que nuestro QTS esté usando el 8080

El puerto 2022 es el usado por el protocolo SFTP.


1-Activación de FTP

Si queremos tener FTP activado usaremos este comando
Código:
docker run --name sftpgo --network=Dockers -p 8888:8080 -p 2022:2022 -p 2121:2121 -p 50000-50100:50000-50100 -e SFTPGO_FTPD__BINDINGS__0__PORT=2121 -e SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP=ip_externa  -d "drakkan/sftpgo:latest"

El valor de ip_externa se usa para las conexiones pasivas.

Como muchos las tenemos dinámicas, no podemos ponerla y omitiremos su valor.
Si no la definimos, se pone en modo automático.


2-Activación de WebDAV

Si queremos activar WebDAV usaremos este comando

Código:
docker run --name sftpgo --network=Dockers -p 8888:8080 -p 2022:2022 -p 10080:10080 -e SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080  -d "drakkan/sftpgo:latest"

El puerto de WedDAV que usamos es el 10080

Para acceder podemos ir a dav://ip_local_nas:10080 y nos identificamos con alguno de los usuarios. Cliente de Webdav pueder ser programas tipo WinSCP, Cyberduck,..


3-Activación de WebDAV y FTP

Si quisieramos WebDAV y FTP , sólo hemos de añadir las variables adecuadas. Básicamente mezclamos ambos comandos.

Código:
docker run --name sftpgo --network=Dockers -p 8888:8080 -p 2022:2022 -p 2121:2121 -p 50000-50100:50000-50100 -e SFTPGO_FTPD__BINDINGS__0__PORT=2121 -e SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP=ip_externa -p 10080:10080 -e SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080 -d "drakkan/sftpgo:latest"

Si nos fijamos hemos de ir agregando variables para ir activando funciones.
Por suerte o desgracia, SFTPgo tienen multitud de funciones y variables. Si leemos su documentación los veremos todos [Imagen: lightbulb.png]


4-Usando PostgreSQL

Si queremos usar una BBDD de PosgreSQL agregaremos estas variables
Código:
-e SFTPGO_DATA_PROVIDER__DRIVER=postgresql
-e SFTPGO_DATA_PROVIDER__NAME="sftpgo_db"
-e SFTPGO_DATA_PROVIDER__HOST=ip_de_la_nas o nombre del docker de postgresql
-e SFTPGO_DATA_PROVIDER__PORT=5432
-e SFTPGO_DATA_PROVIDER__USERNAME=sftpgo
-e SFTPGO_DATA_PROVIDER__PASSWORD=clave_sftpgo

Antes hemos de tener activo el motor de PostgreSQL y creada la base de datos "sftp_go" y el usuario "sftpgo"
Nos interesa usar  una base de datos para que cada vez que eliminemos el docker o vaya a ser actualizado, los usuarios y el resto de datos permanezcan.


5-Usando mariaDB

Si queremos usar una BBDD de mariaDB y MySQL agregaremos estas variables

Código:
-e SFTPGO_DATA_PROVIDER__DRIVER=mysql
-e SFTPGO_DATA_PROVIDER__NAME="sftpgo_db"
-e SFTPGO_DATA_PROVIDER__HOST=ip_de_la_nas o nombre del docker de mariaDB
-e SFTPGO_DATA_PROVIDER__PORT=3307 o 3306
-e SFTPGO_DATA_PROVIDER__USERNAME=sftpgo
-e SFTPGO_DATA_PROVIDER__PASSWORD=clave_sftpgo

Antes hemos de tener activo el motor de mariaSQL y creada la base de datos "sftp_go" y el usuario "sftpgo"


6-Activación de Defender

Hay una función interesante similar a Fail2Ban llamada Defender que podremos activar agregando estas variables a la cadena de despliegue

Código:
-e SFTPGO_COMMON__DEFENDER__ENABLED=true
-e SFTPGO_COMMON__DEFENDER__DRIVER=postgresql
-e SFTPGO_COMMON__DEFENDER__OBSERVATION__TIME=5
-e SFTPGO_COMMON__DEFENDER__THRESHOLD=5
-e SFTPGO_COMMON__DEFENDER__BAN__TIME=10
-e SFTPGO_COMMON__DEFENDER__SCORE__VALID=1
-e SFTPGO_COMMON__DEFENDER__SCORE_INVALID=2



7- Asociando rutas entre el docker y la nas

Ahora bien, si queremos que este SFTPgo tenga acceso a carpetas de QTS, hemos de hacer mapeos para que el docker llegue a esas carpeta.

Por ejemplo vamos a suponer que ya tenemos la carpeta compartida en QTS con contenidos de nombre "videos". Es decir su ruta es "/share/videos", aunque el realidad es "/share/conjunto_almacenamiento/video"

Lo que haremos es agregar en la cadena "-v /share/videos:/usr/share/sftpgo/videos"

Al hacer esto, quiere decir que cuando el docker guarde algo el "/share/videos:/usr/share/sftpgo/videos", realmente lo estará dejando fuera del docker en "/share/videos"

Cuando estemos creando un usuario en SFTPgo, hay que indicar que su home dir  es "/usr/share/sftpgo/videos" para que el usuario al loguearse ya vea de inico esa carpeta. 
Recordad que para que el docker tenga accesos a esa carpeta hay que ejecutar el comando "chown -R 1000:1000 /share/videos"

Entiendo que el programa va tener mas usuarios. yo lo que sugiero es  mapear una carpeta raiz común a todos.

Por ejemplo parto de que tenemos la carpeta compartida "DockerData" en la que centralizamos las carpetas persistentes de los dockers.
En ella creo la carpeta "sftpgo" y en su interior "arbol".

Ejecuto en la consola
Código:
chown -R 1000:1000 /share/DockerData/sftpgo/arbol

Luego en el docker se añade "-v /share/DockerData/sftpgo/arbol:/usr/share/sftpgo/arbol"

ahora lanzamos la web de administración de SFTPgo, creamos el usuario de administarción y luego los usuarios finales.

Para cada usuario podemos crear subcarpetas especificas para ellos, creandose dentro de "arbol" las subcarpetas usuario1, usuario2,... y hacemos que los home dir de cada uso sean "/usr/share/sftpgo/arbol/usuario1", "/usr/share/sftpgo/arbol/usuario2", "/usr/share/sftpgo/arbol/usuario3",....


Cuando creamos las usuarios, SFTPgo ya crea las subcarpetas dentro de la carpeta "arbol".


También hay opciones para definir envíos de correos, incluso acciones en función de eventos,... es un programa bastante modelable, aunque es una lástima que no se haga desde su entorno web y si por definición de variables.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Responder




Usuarios navegando en este tema: 1 invitado(s)