Despliega tu propia nube de archivos colaborativa con Nextcloud, PostgreSQL y Redis en Docker Compose
Hoy te traigo uno de los proyectos más útiles y demandados para particulares, pymes y creadores: una nube personal y colaborativa con Nextcloud. ¿Por qué usar Nextcloud? Porque te permite centralizar archivos, sincronizar dispositivos, compartir carpetas y trabajar con editores colaborativos, todo bajo tu control. Además, el stack que te traigo hoy apuesta por rendimiento y escalabilidad: usaremos PostgreSQL en vez de MySQL y Redis para mejorar la velocidad con la caché de objetos y sesiones. ¿Te atreves a montar tu propia alternativa a Google Drive, pero privada y autogestionable? ¡Vamos allá!
¿Por qué Nextcloud, PostgreSQL y Redis?
- Nextcloud es una plataforma open source para almacenamiento, sincronización y colaboración de archivos, calendario, notas, chat y mucho más.
- PostgreSQL es una base de datos robusta y de alto rendimiento, ideal para entornos con muchos usuarios y grandes volúmenes de archivos.
- Redis acelera Nextcloud gestionando cachés y sesiones, lo que se nota, especialmente en instalaciones con muchos usuarios conectados a la vez.
docker-compose.yml completo
El siguiente fichero docker-compose.yml te instala todo el stack, listo para producción o pruebas. Incluye servicios para Nextcloud, PostgreSQL, Redis y opcionalmente cron para tareas automáticas.
version: "3.8"
services:
db:
image: postgres:15-alpine
container_name: nextcloud-db
restart: unless-stopped
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: cambiame123
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U nextcloud"]
interval: 30s
timeout: 5s
retries: 5
redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
app:
image: nextcloud:apache
container_name: nextcloud-app
restart: unless-stopped
ports:
- 8080:80
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: cambiame123
REDIS_HOST: redis
REDIS_PORT: 6379
volumes:
- nextcloud_data:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/themes:/var/www/html/themes
- ./app/data:/var/www/html/data
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
cron:
image: nextcloud:apache
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- nextcloud_data:/var/www/html
entrypoint: /cron.sh
depends_on:
- app
volumes:
db_data:
redis_data:
nextcloud_data:
¿Cómo funciona este despliegue?
- PostgreSQL almacena toda la información de usuarios, permisos y metadatos.
- Redis se encarga de la cache y la gestión eficiente de sesiones.
-
Nextcloud levanta la web que conecta ambos servicios y expone el panel de control en
http://localhost:8080
. - El servicio cron ejecuta las tareas periódicas de mantenimiento (como limpieza de archivos y notificaciones automáticas), que mejoran el rendimiento y la salud de la instalación.
Primeros pasos tras el despliegue
-
Lanza el stack con
docker compose up -d
. - Abre el navegador en http://localhost:8080. El instalador detectará automáticamente la base de datos y Redis.
- Crea tu usuario administrador y empieza a configurar grupos, apps colaborativas y el almacenamiento de archivos.
Consejos extra y troubleshooting rápido
- Seguridad: Cambia las contraseñas por defecto y mapea los puertos externos solo si tienes configurado HTTPS.
-
Backups: Haz copias periódicas del volumen
nextcloud_data
y dedb_data
para evitar sorpresas desagradables. - Plugins: Nextcloud tiene decenas de apps para edición colaborativa, chat interno (Talk), calendario, etc. Añade las que necesites desde el panel de administración.
-
Errores de conexión a la base de datos: Verifica que el servicio
db
esté «healthy» condocker compose ps
. Si no, revisa las variables de entorno y los logs. -
Rendimiento: Si tienes muchos usuarios concurrentes, sube la memoria asignada a Redis y PostgreSQL editando los parámetros en
docker-compose.yml
.
¿Te animas a probarlo? Si ya tienes alguna variante montada, cuéntame en los comentarios qué plugins o integraciones te funcionan mejor.