Por qué autoalojar FileBrowser en un VPS
FileBrowser es un gestor de archivos web escrito en Go y distribuido como un solo binario. Expone una carpeta de su servidor en una interfaz moderna: subida, descarga, previsualización, edición de texto, gestión de usuarios y enlaces para compartir. Es la herramienta ideal cuando un Nextcloud resulta sobredimensionado: sin base de datos externa, sin PHP y con una huella de unas pocas decenas de megabytes. En un VPS se convierte en el punto de acceso web a los datos del servidor: entregar archivos a un cliente, dar un acceso acotado a una carpeta o gestionar los archivos de una aplicación sin pasar por SFTP. Hace falta un VPS porque FileBrowser debe leer y escribir en el sistema de archivos y ejecutarse como demonio, algo que un alojamiento compartido no permite.
FileBrowser frente a alternativas autoalojadas
Desplace la tabla
| Criterio | FileBrowser | Nextcloud | Seafile |
|---|---|---|---|
| Base de datos | SQLite integrado | MySQL/PostgreSQL requerido | MySQL/PostgreSQL requerido |
| RAM mínima | ~30 MB | ~500 MB | ~200 MB |
| Instalación | Un binario o imagen Docker | Docker Compose multiservicios | Docker Compose multiservicios |
| Gestión de usuarios | Sí, con scopes | Sí, completa | Sí, completa |
| Cliente de sincronización de escritorio | No | Sí | Sí |
| Enlaces con caducidad | Sí, nativo | Sí | Sí |
| Edición en línea | Solo texto | Texto, Office (OnlyOffice) | No |
| Caso de uso principal | Acceso y compartición ligera | Suite ofimática completa | Sincronización de datos masivos |
Beneficios concretos de FileBrowser autoalojado
- Ultraligero: un binario Go con base SQLite integrada, que arranca en unos milisegundos.
- Gestión fina de los permisos: cada usuario queda confinado a una subcarpeta (scope) con derechos precisos.
- Enlaces para compartir con contraseña y caducidad: envíe un archivo sin crear una cuenta al destinatario.
- Edición y previsualización en el navegador (texto, imágenes, vídeos) sin descargar nada.
- Comandos personalizados y hooks: lance un script al subir un archivo (conversión, análisis antivirus).
- Interfaz web limpia en sustitución del SFTP para los usuarios no técnicos.
- Tema oscuro nativo, interfaz adaptable en móvil.
- Búsqueda en tiempo real por nombre de archivo en el árbol expuesto.
Requisitos técnicos
FileBrowser es una de las herramientas más económicas en recursos: 1 vCPU y 512 MB de RAM bastan de sobra, y el espacio en disco depende únicamente del volumen de archivos que vaya a servir. No requiere ninguna base de datos externa: la configuración y las cuentas se guardan en un archivo SQLite local. Necesita Docker y Docker Compose, un subdominio files.yourdomain.com apuntando al VPS y un reverse proxy para el HTTPS. Importante: decida qué carpeta del host quiere exponer (una carpeta dedicada /srv/share, nunca la raíz del sistema) y móntela como volumen en el contenedor. Verifique que los puertos 80 y 443 estén abiertos en el cortafuegos, y que su VPS tenga un registro DNS A (o AAAA para IPv6) apuntando a su IP pública.
Desplegar FileBrowser paso a paso
Preparar las carpetas y la configuración
En el VPS:
mkdir -p /opt/filebrowser /srv/share. Cree un archivo vacío para la base de datos:touch /opt/gtsteffaniak/filebrowser.db. La carpeta/srv/sharees la que expondrá FileBrowser. Ajuste los permisos para que el UID del contenedor pueda escribir en ella:chown -R 1000:1000 /srv/share /opt/filebrowser.Escribir el docker-compose.yml
Báse en la imagen
gtsteffaniak/filebrowser:latest. Monte/srv/share:/srv(los datos) y/opt/gtsteffaniak/filebrowser.db:/database/filebrowser.db(la base de datos), y fijePUID/PGIDa 1000 (o el UID real de la carpeta compartida). Exponga el puerto interno 80 únicamente hacia el reverse proxy. Añadarestart: unless-stoppedpara que FileBrowser se reinicie automáticamente tras un reinicio del servidor.Arrancar y recuperar las credenciales
Arranque con
docker compose up -d. En el primer arranque, FileBrowser crea una cuentaadmincon una contraseña que muestra en los logs:docker compose logs filebrowser. Anótela para la primera conexión. Si los logs no muestran la contraseña, conéctese conadmin/admin(los valores por defecto de la imagen oficial) y cámbiela de inmediato.Poner en marcha el reverse proxy y el SSL
Coloque FileBrowser detrás de un reverse proxy HTTPS. Con Caddy:
files.yourdomain.com { reverse_proxy filebrowser:80 }. El certificado Let's Encrypt se genera y se renueva automáticamente. Con nginx, cree un vhost dedicado conproxy_pass http://127.0.0.1:<puerto_contenedor>;y un bloquessl_certificateapuntando a los archivos de certbot. Asegúrese de que la cabeceraX-Forwarded-Forse transmite para que FileBrowser registre las IP reales de los clientes.Proteger y crear las cuentas
Conéctese, cambie de inmediato la contraseña de admin y cree después usuarios limitando cada uno a su scope (subcarpeta) con los derechos adecuados. Active la doble autenticación del reverse proxy si el acceso es sensible. En los ajustes de FileBrowser, desactive el registro público (
allow registration: false) y restrinja los métodos de autenticación.Probar el uso compartido y los enlaces públicos
Suba un archivo de prueba, genere un enlace para compartir con caducidad (por ejemplo 7 días) y contraseña opcional. Copie el enlace y ábralo en una ventana de navegación privada para verificar que funciona sin sesión activa. Compruebe que el límite de caducidad se respeta correctamente consultando la hora de expiración en la interfaz de administración.
Proteger FileBrowser en producción
Exponer un gestor de archivos en Internet sin capas de seguridad adicionales es arriesgado. Varias medidas complementarias aplican según su contexto: restringir el acceso por IP en el reverse proxy si la herramienta está destinada solo a un equipo en una red fija; forzar la autenticación HTTP básica delante de FileBrowser para añadir una barrera incluso antes de la pantalla de inicio de sesión de la aplicación; activar los registros de acceso detallados para detectar intentos de fuerza bruta. FileBrowser no ofrece nativamente bloqueo de cuenta tras N intentos fallidos: si su VPS está expuesto públicamente, una regla fail2ban sobre los logs de nginx o Caddy que coincida con las respuestas 401 es un complemento indispensable.
Lista de verificación de seguridad antes de salir a producción
- Contraseña de admin cambiada en el primer arranque.
- Registro público desactivado en los ajustes de FileBrowser.
- Reverse proxy HTTPS activo, redirección HTTP→HTTPS forzada.
- Cada usuario limitado a su propio scope de carpeta.
- Fail2ban (o Crowdsec) configurado sobre los logs del reverse proxy.
- Caducidad activada por defecto globalmente para todos los enlaces de compartición.
- Copias de seguridad regulares de
/opt/gtsteffaniak/filebrowser.db(cuentas, configuración, permisos). - Restricción de acceso por IP en el reverse proxy si los usuarios tienen direcciones fijas.
Personalizar FileBrowser: marca, comandos y hooks
FileBrowser ofrece varios niveles de personalización accesibles desde la interfaz de administración. La sección de Branding permite reemplazar el logotipo, el nombre de la aplicación y los colores — útil para entregar acceso con marca blanca a clientes. La sección de Comandos personalizados (Custom Commands) es una de las funcionalidades más potentes: cada scope puede llevar comandos shell disponibles con un solo clic en la interfaz. Los hooks — before_upload, after_upload, before_delete, after_delete y otros — permiten automatizar acciones sin intervención del usuario: generar una miniatura al subir una imagen, lanzar un análisis con ClamAV, sincronizar con almacenamiento de objetos S3.
Hacer copias de seguridad y actualizar FileBrowser
FileBrowser almacena toda su configuración en un único archivo SQLite: /opt/gtsteffaniak/filebrowser.db. Este archivo contiene cuentas, scopes, permisos, tokens de compartición y ajustes de la aplicación. Una copia de seguridad diaria de este archivo es suficiente para garantizar una restauración completa. Actualizar se reduce a descargar la nueva imagen Docker: docker compose pull && docker compose up -d. FileBrowser aplica automáticamente las migraciones de base de datos al iniciar. Antes de cualquier actualización mayor, copie el archivo SQLite fuera de la carpeta Docker para conservar un punto de retorno seguro.
Aproveche los «comandos personalizados» de FileBrowser para automatizar el postprocesado: asocie por ejemplo un script lanzado en cada subida (after_upload) que genere una miniatura o inicie un análisis con ClamAV. Para los envíos a clientes, cree siempre un usuario dedicado con un scope reducido en lugar de compartir la cuenta de admin, y active la caducidad automática en los enlaces públicos para que ningún archivo quede accesible de forma indefinida. Para automatizar las copias de seguridad del SQLite, un cron diario con cp /opt/gtsteffaniak/filebrowser.db /backup/filebrowser-$(date +%F).db es suficiente — recuerde purgar las copias de más de 30 días para no llenar el disco.