Plataforma de almacenamiento de archivos colaborativa con Nextcloud, PostgreSQL y Redis usando Docker Compose

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?

  1. PostgreSQL almacena toda la información de usuarios, permisos y metadatos.
  2. Redis se encarga de la cache y la gestión eficiente de sesiones.
  3. Nextcloud levanta la web que conecta ambos servicios y expone el panel de control en http://localhost:8080.
  4. 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 de db_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» con docker 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.

Avatar

Por Mid