Nextcloud (LinuxServer): Plataforma de almacenamiento y colaboración en la nube autohospedada
Introducción
Este artículo documenta el despliegue de Nextcloud como nube privada autogestionada, utilizando contenedores Docker y una base de datos MariaDB dedicada. El objetivo es disponer de un servicio estable, mantenible y portable, sin acoplar la configuración al host ni perder datos ante recreaciones de contenedores.
La instalación se integra con el resto del entorno mediante reverse proxy (Caddy) y volúmenes persistentes, manteniendo una separación clara entre aplicación, datos y base de datos.
Nota importante sobre la imagen utilizada: este despliegue no utiliza la imagen oficial de Nextcloud, sino la imagen mantenida por LinuxServer.io, que introduce ajustes propios orientados a entornos self-hosted (gestión de permisos, estructura de volúmenes, variables adicionales, etc.). Esto implica que ciertas rutas y comportamientos pueden diferir respecto a la imagen oficial.
Enfoque general / Arquitectura
El despliegue sigue un esquema clásico y probado:
- Contenedor Nextcloud como frontend web y lógica de aplicación.
- Contenedor MariaDB aislado como backend de base de datos.
- Red Docker dedicada para evitar interferencias con otros servicios.
- Volúmenes persistentes para configuración, datos de usuario y base de datos.
- Variables sensibles desacopladas mediante
.env.
Este enfoque permite:
- Actualizaciones limpias de imágenes.
- Backups sencillos a nivel de volumen.
- Reubicación del servicio sin migraciones complejas.
Requisitos previos
- Docker y Docker Compose operativos.
- Almacenamiento persistente suficiente para datos de usuario.
- Puerto disponible o integración con reverse proxy.
- Acceso al repositorio de configuración en Gitea.
Desarrollo
Qué se hizo y por qué
-
Uso de imagen LinuxServer.io Se opta por la imagen de LinuxServer.io por su enfoque consistente en permisos (PUID/PGID), claridad en la separación de volúmenes y buen mantenimiento en entornos Docker persistentes. Esta decisión prioriza estabilidad operativa frente a la fidelidad absoluta a la imagen oficial.
-
Separación de secretos Todas las credenciales y parámetros sensibles se gestionan mediante un archivo
.env, evitando hardcodeo y facilitando rotación de claves. -
Base de datos dedicada MariaDB se ejecuta en un contenedor independiente para aislar carga, facilitar backups y evitar dependencias internas del contenedor de Nextcloud.
-
Volúmenes explícitos La configuración y los datos viven fuera de los contenedores, garantizando persistencia ante recreaciones o cambios de imagen.
-
Red Docker propia Se define una red específica para Nextcloud, reduciendo ruido y riesgos de exposición accidental entre servicios.
-
Sin HTTPS interno forzado El TLS se delega al reverse proxy. Esto evita certificados autofirmados innecesarios dentro del contenedor y simplifica la cadena de confianza.
Configuración utilizada (solo enlaces)
Los archivos de configuración se mantienen versionados en Gitea:
No se incluyen configuraciones completas en el artículo para evitar duplicidades y errores de copia.
Validación
Comprobaciones mínimas tras el despliegue:
- Contenedores en estado
runningsin reinicios constantes. - Logs de Nextcloud sin errores críticos de conexión a base de datos.
- MariaDB aceptando conexiones desde el contenedor de Nextcloud.
- Acceso correcto a la interfaz web desde el puerto o dominio configurado.
- Persistencia de datos tras reiniciar contenedores.
Decisiones importantes o problemas detectados
-
Evitar HTTPS autofirmado interno Nextcloud tiende a generar certificados propios si detecta HTTPS. En entornos con reverse proxy externo, esto solo añade fricción y advertencias innecesarias.
-
Montaje de almacenamiento externo Se deja preparado el montaje de rutas adicionales (
/mnt) para futuras integraciones con almacenamiento externo o datasets grandes.
Resumen breve
- Nextcloud desplegado con Docker y MariaDB dedicada.
- Uso de imagen LinuxServer.io en lugar de la oficial.
- Configuración desacoplada y versionada en Gitea.
- Volúmenes persistentes para datos y configuración.
- Arquitectura simple, estable y fácil de mantener.
- TLS gestionado externamente mediante reverse proxy.