Skip to main content

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 running sin 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.

Referencias