Seguro que muchos de vosotros habréis usado servicios de terceros para subir archivos pesados a internet, como WeTransfer, Dropsend o TochoMail. En este artículo vamos a aprender a desplegar un contenedor de docker muy sencillo de instalar y de mantener que nos permitirá tener un servicio similar para nosotros solitos: vamos a abordar la instalación de Filegator.
Pues no lo entiendo. Yo he usado muchas veces servicios cómo los que nos comentas, pero a mi me funcionan muy bien. No entiendo por qué debería complicarme la vida instalando algo como ésto en mi raspberry.
Pues podrías tener varios motivos. El primero y más evidente es que realizando la instalación de Filegator en tu propio servidor no vas a depender de un tercero para nada. El servicio de turno no te va a poner restricciones de ningún tipo, ni de tamaño de archivo ni de número de archivos que puedes subir cada día. Tampoco va a haber peligro de que el servicio cierre un día y te deje tirado, o que los archivos desaparezcan porque el servicio te los haya borrado por inactividad de la cuenta.
Pero para mi lo más importante es que con esta aplicación eres el dueño de tus propios archivos. No le estarás dando tus archivos a nadie, y nadie más que la persona a la que le mandes el enlace podrá verlos. La letra pequeña de sitios como WeTransfer es muy peligrosa y muchos servicios de este tipo se reservan el derecho a ver y usar los contenidos que estás publicando para los fines que ellos consideren oportuno.
Veeeeenga. Vale. Pero aún así, en el tutorial número 12 abordamos la instalación de Nextcloud, que es completamente capaz de hacer todo esto y muchísimo más. ¿Por qué habría de instalar Filegator, si ya puedo compartir archivos con Nextcloud?
Pues el motivo se resume en una palabra: Simplicidad. Efectivamente Nextcloud es una herramienta tremendamente potente y podemos hacer con ella muchísimas cosas más de las que podemos hacer con Filegator. Pero si queremos subir algo para que alguien se lo descargue en internet, en Nextcloud deberíamos poner el archivo en nuestra cuenta. Ese archivo se estaría sincronizando con la carpeta de nuestro escritorio todo el rato (Si lo quitamos, se dejaría de compartir). Y además las opciones de compartir son mucho más complejas (precisamente porque Nextcloud permite compartir archivos y carpetas de mil formas distintas).
Con Filegator sólo es subir el archivo y recoger el enlace. No tardas nada en hacerlo y el archivo queda subido a una ubicación que no te molesta (porque no se sincroniza con nada). Es ideal si lo único que quieres es un enlace para que una persona o grupo de personas se descarguen tus archivos de internet.
Si habéis seguido el resto de artículos que hemos ido poniendo sobre docker, seguro que la instalación de Filegator os va a parecer muy sencilla. Vamos a verla.
1- Creamos la estructura de carpetas en el directorio Dockers.
Como siempre, vamos a crear la estructura de carpetas que vamos a necesitar para que funcione este docker en particular. Si habéis seguido el resto de artículos, sabréis que estamos poniendo todos nuestros dockers en un directorio llamado «docker» que está en la carpeta de nuestro usuario, es decir, en esta ruta.
/home/<tu_usuario>/docker
Si no tenéis esa ruta creada, creadla con el comando mkdir docker
. Lo que haremos es entrar en la carpeta docker
y ahí crear una carpeta específica para este docker en particular (la llamaremos filegator
). Dentro de ella, crearemos la única carpeta que necesita filegator para gestionar sus archivos y la llamaremos files
. Todo esto lo haremos con los siguientes comandos:
cd docker
mkdir filegator
cd filegator
mkdir files
mkdir private
En otros dockers pasaríamos ya al siguiente punto, pero en este caso tenemos que hacer un pequeño ajuste a esa última carpeta. Este contenedor necesita que la carpeta files
tenga permisos especiales (necesita que el usuario www-data sea el propietario de esa carpeta). Así que vamos a hacer esos cambios con el siguiente comando.
sudo chown www-data:www-data files
Este docker también requiere descargar un archivo de configuración a la carpeta «filegator». Se trata de un archivo de configuración que podréis descargar en la carpeta «filegator» con el siguiente comando.
wget https://github.com/causefx/filegator/raw/master/configuration.php
Por si ese archivo desaparece de ese enlace, os voy a proporcionar el archivo también en este enlace (Que está generado precisamente con Filegator. Así comprobáis que el servicio funciona correctamente).
Con esto sí que tenemos todo listo para pasar al siguiente punto.
2) Creamos el archivo de configuración de Docker Compose
Para realizar la instalación de Filegator usando docker, necesitamos crear en la carpeta Filegator
un archivo llamado docker-compose.yml. Lo crearemos con el comando sudo nano docker-compose.yml
y le pegaremos exactamente el siguiente contenido sin modificar nada.
version: '3.3'
services:
filegator:
container_name: filegator
ports:
- '5518:80'
- '5517:8080'
volumes:
- $DOCKERDIR/filegator/files:/var/www/html/demorepo
- $DOCKERDIR/filegator/configuration.php:/var/www/filegator/configuration.php
- $DOCKERDIR/filegator/private:/var/www/filegator/private
restart: always
image: 'filegator/filegator:v7.9.2-multiarch'
Nota importante: Si en lugar de hacer la instalación en una raspberry la hacéis en un equipo X64, poned este otro contenido en su lugar:
version: '3.3'
services:
filegator:
container_name: filegator
ports:
- '5518:80'
- '5517:8080'
volumes:
- $DOCKERDIR/filegator/files:/var/www/filegator/repository
- $DOCKERDIR/filegator/configuration.php:/var/www/filegator/configuration.php
- $DOCKERDIR/filegator/private:/var/www/filegator/private
restart: always
image: 'filegator/filegator:latest'
(y mis agradecimientos al usuario «Carlos» por darme en los comentarios del artículo indicaciones para añadir esta anotación)
Acordaos de teclear Control + O para guardar los cambios y luego Control + X para salir de nano.
3) Creamos el archivo de variables de entorno
Vamos a crear un archivo de variables de entorno al que vamos a llamar .env
. Lo crearemos con el siguiente comando.
sudo nano .env
Dentro, le pondremos el siguiente contenido:
DOCKERDIR=/home/<tu_usuario>/docker
Antes de guardar cambios, fíjate que debes cambiar la ruta por la ruta correcta hacia la carpeta docker
. Así que cambia eso de <tu_usuario>
por el usuario que estás usando en Linux. Una vez hecho ésto, pulsa Control + O
para guardar cambios y luego Control + X
para salir del editor nano.
No te olvides que en todos estos tutoriales estamos protegiendo el archivo .env
para que nadie con oscuras intenciones pueda modificarlo. Lo podemos proteger tecleando este comando en el terminal.
sudo chmod 600 .env
Llegados a este punto ya podemos comenzar, por fin, la instalación de Filegator.
4) Desplegamos la máquina: instalación de Filegator
Para realizar la instalación de Filegator, después de haber realizado los tres pasos anteriores, sólo tenemos que teclear este comando.
sudo docker-compose -p "filegator" up -d
Después de unos segundos, si hemos hecho todo bien, podremos acceder a nuestro Filegator usando como URL la ip de nuestra raspberry y el puerto 5517, de esta forma.
http://<ip.de.tu.raspberry>:5517
Perfecto. Pero esta web me pregunta por un usuario y contraseña que ni siquiera he definido.
Efectivamente. Fijaos que durante la instalación de Filegator no hemos llegado a poner en ningún momento las credenciales. Filegator usa credenciales genéricas para el primer usuario. Puedes entrar en tu instalación poniendo lo siguiente:
Usuario: admin
Contraseña: admin123
Ni que decir tiene que nada más logarte en el interface, debes ir corriendo a la configuración de tu usuario para cambiar estas credenciales por otras. Es un riesgo de seguridad enorme dejar sin cambiar las credenciales que nos dan por defecto.
Ya que estamos, en la gestión de los usuarios, edita el usuario Guest
(invitado) y habilita la opción para que cualquier invitado pueda descargar ficheros. Esto te va a permitir que otros descarguen las cosas que tú vas a colgar de tu Filegator.
5) Creamos un proxy para acceder desde fuera de nuestra red local.
En el artículo número 9 de esta serie explicamos cómo podríamos instalar un proxy para poder acceder a este tipo de aplicaciones desde fuera de nuestra red. De nuevo vamos a usar lo aprendido y crear un subdominio para este servicio. Si no lo hacemos va a ser imposible acceder a nuestra instalación de Filegator a través de internet.
Voy a suponer que me habéis hecho caso en el artículo número 9 y tenéis en vuestra red un Nginx Proxy Manager. Si es así, lo que debemos hacer es añadir un proxy pulsando el botón «hosts» y luego pulsando en «proxy Hosts».
Pulsaremos ahora arriba a la derecha el botón que dice Add Proxy Host
.
Ahora cubrimos los siguientes datos:
- Domain names: ponemos un subdominio del dominio que tenemos contratado. Algo del tipo «filegator.midominio.com»
- scheme: http
- Forward Hostname / IP: ponemos la ip local del host dónde hemos hecho la instalación de Filegator.
- Forward Port: 5517
Con lo que acabamos de hacer, podremos acceder a Filegator por http, pero no por https, así que vamos a pulsar en los tres puntitos que hay al final de la línea del proxy que acabamos de configurar y luego pulsar sobre la opción «Edit».
En la pestaña «SSL» vamos a seleccionar la opción que dice «Request a new SSL Certificate» y a activar los botones «Force SSL» y «HTTP/2 Support». Luego guardamos cambios.
Con esto la instalación de Filegator ya debería funcionar sin problemas en la dirección web que has establecido al principio de este punto.
Ahora lo único que deberíais hacer para probarla es subir algún archivo y generar algún enlace. Luego poner el enlace en el navegador y comprobar que cualquiera desde internet puede acceder a él.
6) Actualización de nuestra instalación de Filegator.
Cada cierto tiempo es conveniente revisar si existe alguna actualización de los contenedores que tenemos instalados para evitar cualquier brecha de seguridad. Si éste es el único contenedor que tenemos, lo ideal es crear en alguna carpeta un archivo al que vamos a llamar actualizar.sh
. Lo podemos crear así.
sudo nano actualizar.sh
Una vez que hayamos entrado en el editor de texto, le pondremos este contenido.
cd /home/usuario/docker/filegator
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
Podemos guardar cambios con Control + O y saldremos del editor con Control + X. Sin embargo, tal cual está ahora no podríamos ejecutar ese archivo, así que lo hacemos ejecutable con este comando.
sudo chmod +x actualizar.sh
Ahora, cada vez que queramos comprobar si hay actualizaciones del contenedor, sólo tendremos que ir a la línea de comandos, situarnos dónde hemos dejado ese archivo y teclear lo siguiente:
sudo ./actualizar.sh
Esto comprobará si hay actualizaciones y en caso afirmativo las descargará y las aplicará.
Pero si lo que quieres es actualizar todos los contenedores de una vez, tendrás que hacer un script que actualice uno por uno todos los contenedores. Pero esta vez vamos a hacer el script de forma un poco más profesional respecto a lo que hemos hecho en los artículo anteriores.
Si habéis hecho todos los artículos de esta serie, deberíais tener un montón de contenedores funcionando y ya en el último artículo el script para actualizarlos todos se estaba haciendo un poco largo. Así que vamos a automatizar un poco el proceso.
En lugar de ir carpeta por carpeta diciéndole al script que actualice el contenedor que se indica en la carpeta, vamos a hacer un bucle para que el script recorra automáticamente todas las carpetas que hay dentro del directorio docker
y si en alguna de esas carpetas hay un docker-compose, que lo actualice. Así que vamos a editar nuestro script con este comando
sudo nano actualizar.sh
Y vamos a cambiar el código que está dentro por este otro.
#!/bin/bash
# Actualizo el sistema operativo
sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
# Definimos el directorio base
BASE_DIR="/home/<tu_usuario>/docker"
# Recorro todas las subcarpetas dentro del directorio base
for dir in $BASE_DIR/*; do
if [ -d "$dir" ]; then
echo "Procesando $dir ..."
cd "$dir"
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
fi
done
# Ya he actualizado todo. Ahora reinicio el sistema.
sudo shutdown -r now
Acuérdate de cambiar la línea que pone BASE_DIR="/home/<tu_usuario>/docker"
. Debe poner la ruta correcta a la carpeta docker
.
Tiene buena pinta, pero yo he hecho pruebas con algunos dockers y dentro del directorio docker
tengo un par de carpetas con dockers que no estoy usando y no están activos.
Entonces casi mejor usa el método que hemos indicado en los artículos anteriores. Si hay algún contenedor que por el motivo que sea está inactivo o no quieres que se actualice, o bien pones ese contenedor en otra carpeta que no sea la carpeta docker
, o bien actualizas a mano, uno a uno, todos los contenedores (aunque sea dentro de un script para hacerlo todo a la vez) tal y como estábamos haciendo hasta ahora.
Ten en cuenta que este nuevo script va a actualizar e intentar levantar cualquier contenedor que esté dentro de la carpeta de dockers, así que si tienes algo que no debería estar en producción, mejor cámbialo de carpeta.
Y con esto hemos terminado la instalación de Filegator. Aunque se trata de un contenedor muy sencillo a mi me resulta especialmente útil. ¿Os ha resultado complicada la instalación? ¿Habéis tenido problemas con el nuevo script para actualizar todos los dockers? Estaré atento a vuestros comentarios.
Gracias Marcos, muy buena entrada.
Hay un problema y es que a la hora de desplegar con docker compose me da este error, aparentemente no encuentra la versión de arm64:
ulling filegator (filegator/filegator:latest)…
latest: Pulling from filegator/filegator
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
Efectivamente, Carlos. Error mío. No me acordaba que para instalar filegator en una raspbery hay que cambiar la última línea del docker-compose.yml. La última versión de la imagen oficial sólo es válida para equipos x64. Hay que ir unas versiones más atrás para poder instalar una versión compatible con Raspberry.
El artículo queda ya corregido con el docker compose correcto que permite instalar filegator en una raspberry sin errores. Es de esperar que en algún momento devuelvan la compatibilidad con Raspberry pi en las últimas versiones, pero habrá que esperar un poco para ello. En todo caso la funcionalidad es idéntica en una versión o en la otra. Estaré atento y en cuanto vuelvan a habilitar las versiones para raspberry pi, actualizaré el artículo.
He revisado el artículo por completo y he instalado todo de nuevo en una raspberry para comprobar, y creo que no hay más fallos, así que ya debería estar todo correcto. Perdona por el despiste.
Gracias Marcos!
Lo tengo listo y funcionado, herramienta tan simple como útil, como del resto de aplicaciones que nos enseñas a desplegar desconocía que existían.
Por cierto he desplegado wordpress, es muy simple pero a la hora de configurar el nginx proxy se queda clavado en el puerto 443, quería preguntarte si tratarás está herramienta que, bajo mi punto pone el broche de oro a la función de nuestra raspi, yo uso una 4 de 8Gb.
Saludos y muchísimas gracias por compartir
Hola Carlos. Me alegra que al final pudieras instalarlo correctamente.
Sobre el WordPress, efectivamente lo estuve planteando poner en uno de los artículos, pero lo descarté por la cantidad de recursos que necesita. Alguna vez me habéis preguntado si todas estas cosas pueden estar a la vez en una raspberry. Todo lo que estoy poniendo está muy medido y soy consciente que el docker de Nextcloud consume bastantes recursos. Pero poner también el docker de WordPress junto con todos estos me parece algo excesivo, así que no voy a ponerlos dentro de esta serie de tutoriales. Peeeero… en cuanto terminen estos tutoriales tengo en mente poner algún artículo a mayores con instalaciones enfocadas un poco más a empresas y a usuarios que quieren hacer un poco más que lo básico. Ahí sí que me entrará el wordpress, y al igual que todos estos artículos actuales se pueden hacer tanto en una raspberry como en un ordenador con linux, el wordpress también se podrá hacer en ambos sistemas.
Resumiendo: Sí lo haré pero tenodrás que esperar un poco.
Marcos:
Una duda, en la la carpeta $DOCKERDIR/filegator/files ¿debemos ver los ficheros que subimos? porque subo fotos y no los veo hay, he revisado la configuracion y no veo nada, otro problema que he visto es que no me deja subir ficheros de mas de 100MB, dice que excedo el tamaño máximo de 100MB.
Un saludo!!
Disculpa Marcos,
Con el tema de superar los 100MB, me respondo: está en el fichero configuration.php, hay que aumentar la variable upload_max_size, esta muy claro, después desplegar de nuevo el docker.
Un saludo!!!
Veo que esa versión anterior tiene un pequeño bug . Los archivos están en una ruta distinta. Se soluciona cambiando el volumen por la ruta correcta. Para no liarla he puesto dos docker compose diferentes en el artículo, uno para arm y otro para x64. Revisa a ver si eso resuelve el problema
Hola de nuevo Marcos, he probado la solucion para $DOCKERDIR/filegator/files creo que la configuracion original que tenias estaba bien solo faltaba hacer un chmod 777 en la carpeta files,ahora si veo lo que hay.. algo de permisos parece que es
Vaya sige fallando disculpa, luego le echo un vistazo porque no termina de ir, entro con bash en el volumen veo los ficheros pero no actualiza la carpeta files y poniendo al ruta demorepo va pero da un error subiendo ficheros. creo q está versión de filegator es una especie de demo readonly, con problemas muy interesantes de resolver. Hablamos!!!
¿Seguro que has revisado la parte que he puesto hoy nueva en el artículo? Mira: haz click en la imagen para verla en grande
La carpeta dónde se almacenan ficheros dentro del docker en las dos versiones del contenedor es distinta, y por eso te pasa lo que te pasa. Eso sí… al cambiarla no tengo claro si vas a perder o no los enlaces que hayas generado en estos tres días, pero creo que es la solución. Como verás en la captura subí un archivo mp3 de prueba y tanto lo veo en el host como en el contenedor (en la ruta correcta).
Genial Marcos, ya esta!!!
Veo en la carpeta files los ficheros que subo… lo he dejado como dices.
Al principio despues de logarme daba «unkrow error», finalmente ademas de hacer un down del docker hice un rm de la imagen y desplegar todo.
En el fichero configuration.php esta la ruta a repodemo y al bajar el otro fichero configuration.php que compartes de backup no aparece esa ruta, creo que son diferentes.
Asunto resuelto, un saludo Marcos y una vez gracias por compartir.
Me alegro de que al final te funcionara todo. Por cierto… La captura de pantalla que te he puesto tiene un spoiler oculto del siguiente artículo que vamos a tratar en esta serie 😄
Si alguno de los que seguís el tutorial de Marcos instalásteis el docker de amule y lo teníais activo habréis tenido un problema grande con vuestro servidor desde el pasado domingo. La Rpi o la máquina donde lo instalárais sufrirá cuelgues apenas arranque y es difícil de diagnosticar porque desde que arranca hasta que se cuelga apenas pasan unos minutos, es decir, poco podemos hacer antes de que se cuelgue de nuevo.
Lo que tenéis que hacer es arrancarla y tan pronto lo haga detener el docker de amule, borrar todos los archivos que empiezan con «ipfilter» en el directorio config de amule y arrancar el docker otra vez. Si no borráis esos archivos el problema sigue porque el volumen config es persistente y sobrevive entre arranques.
Para borrarlos os metéis en el directorio config de amule y ejecutáis » rm ipfilter* » (quitad las comillas).
El problema es que los del amule metieron un ipfilter. zip corrupto y el programa falla al extraerlo y continúa intentándolo en bucle, colgando la máquina. Ya lo han solucionado. Pero para arreglarlo en vuestra máquina tenéis que borrar esos archivos para forzar a que los baje de nuevo.
Más información aqui:
https://github.com/ngosang/docker-amule/issues/51
Gracias Jose Miguel,
Este finde se me «cayó» la raspi varias veces , pensé que recibía ataques de algun bot… el comando «lastb» me decia algun intento de acceso root desde IP,s publicas de origen asiatico, si soy un poco paranoico jejej, total con «btop «comprobé que el origen del bloqueo de la raspi era amule (literalemnte cogía el 100% de la CPU),
apagar el docker de amule (down) y eliminar la carpeta files y desplegar amule up de nuevo (up)…
No sabía que habia sido un bug, lo relacioné con que unos dias antes trasteé con la configuracion intentando rescatar el tema original de amule, no se porqué amule no deja eliminar los ficheros descargados, vamos que hay que hacerlo a mano desde la shell (o es que yo no sé hacerlo).
Gracias por el aporte José Miguel. La verdad es que no me había enterado de la incidencia (esta semana precisamente no tenía ese docker activado).
En todo caso, como siempre, me encanta la agilidad que tienen la mayoría de proyectos de software libre para resolver incidencias. Cualquier proyecto de software puede tener un bug o incidencia. Sin embargo ahí tenemos a Microsoft, cerrando bugs descubiertos hace meses en contraste con proyectos de software libre, que al momento suelen proporcionar un parche.
Gracias de nuevo por el aporte. Eso sí… la próxima vez (espero que no vuelva a haberla con un bug tan grande) ponlo en el post de Amule, que a lo mejor la gente se va ahí a ver el problema. Ya hago una anotación en el post.
No lo he puesto en el post de amule porque al ser un post antiguo he pensado que tendría menos visibilidad. Tus lectores leerán más probablemente el último post que uno antiguo. Además, al ser un problema de difícil diagnóstico les pasará como a Aglak que no sabía que se debía a amule con lo que no irían a ese post. Pero sí, lo mejor es publicarlo en los dos
Muchas gracias por la información, tengo dockerizado el amule en un QNAP y desde hace días (seguramente empezó el domingo como dices) el NAS se me bloqueaba y reiniciaba y empezaba a sincronizar archivos. Leer tu comentario, para el contenedor de amule y solucionarse el problema. Ahora sólo me falta eliminar los archivos que citas. Salud y suerte.
Marcos,
Pues vaya intriga con el spoiler, sospecho que puede ser algo, (screenshot??) veremos si estoy en lo cierto …
Saludos!!!
Hola Marcos
Al parecer, en Debian tampoco se ven los archivos dentro de la carpeta docker/filegator/files.
Usando el comando que muestras en la foto («sudo docker exec -it filegator /bin/bash») ,
los archivos aparecen en «www-data@abe38d****47:~/html/demorepo$ »
¿Hay que tocar algo para modificar la ruta?
Me respondo a mi mismo.
Hay que configurarlo como en la Raspberry:
– $DOCKERDIR/filegator/files:/var/www/html/demorepo
Hola, muchas gracias por toda la información que nos estás dando para nuestras Raspis. Te lo agradezco. Desde mis primeras Raspis, siempre he tenido en mis marcadores tus páginas. Hoy estoy instando el docker de filegator y al arrancar el docker, me salta este mensaje y de ahí no pasa … Folder not writable: /private/logs/. Supongo que es algo de permisos. ¿Te ha pasado alguna vez?