26-11-2022, 04:41 PM
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
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
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
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.
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
4-Usando PostgreSQL
Si queremos usar una BBDD de PosgreSQL agregaremos estas variables
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
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
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
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.
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
Code:
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
Code:
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
Code:
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.
Code:
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
4-Usando PostgreSQL
Si queremos usar una BBDD de PosgreSQL agregaremos estas variables
Code:
-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
Code:
-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
Code:
-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
Code:
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η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η