Tutoriales 10 min de lectura

Instalar y configurar Nextcloud en tu propio servidor

Guía completa para instalar Nextcloud con Docker Compose, configurar almacenamiento, SSL con Traefik y optimización para usar como alternativa a Google Drive o OneDrive bajo tu propio control.

Interfaz web de Nextcloud mostrando el explorador de archivos con carpetas compartidas y documentos
Interfaz web de Nextcloud mostrando el explorador de archivos con carpetas compartidas y documentos

Google Drive y OneDrive son convenientes — hasta que te preguntas dónde están realmente tus datos, quién más puede acceder a ellos y qué pasa cuando el proveedor cambia sus términos de servicio o sus precios. Nextcloud te da la misma experiencia de almacenamiento y colaboración en la nube, pero corriendo en tu propio servidor, con tus propias reglas y tus datos bajo tu control.

En esta guía vas a instalar Nextcloud con Docker Compose, conectarlo a PostgreSQL como base de datos, configurar SSL y optimizarlo para uso diario de tu equipo.

Requisitos previos

Un servidor Ubuntu 24.04 con al menos 2 GB de RAM, Docker y Docker Compose instalados, un dominio que apunte al servidor y suficiente almacenamiento para tus archivos.

Paso 1: Estructura del proyecto

nextcloud/
├── docker-compose.yml
├── .env
└── data/                  # Se crea automáticamente

Paso 2: Docker Compose

Esta configuración incluye Nextcloud, PostgreSQL como base de datos y Redis como caché para rendimiento óptimo:

# docker-compose.yml
services:
  nextcloud:
    image: nextcloud:29-apache
    restart: unless-stopped
    environment:
      POSTGRES_HOST: db
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      REDIS_HOST: cache
      NEXTCLOUD_ADMIN_USER: ${ADMIN_USER}
      NEXTCLOUD_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      NEXTCLOUD_TRUSTED_DOMAINS: ${DOMAIN}
      OVERWRITEPROTOCOL: https
      OVERWRITECLIURL: https://${DOMAIN}
      PHP_UPLOAD_LIMIT: 10G
      PHP_MEMORY_LIMIT: 512M
    volumes:
      - nc_data:/var/www/html
    depends_on:
      db:
        condition: service_healthy
      cache:
        condition: service_started
    networks:
      - proxy
      - backend
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.nextcloud.entrypoints=websecure"
      - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
      - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
      # Headers requeridos por Nextcloud
      - "traefik.http.middlewares.nextcloud-headers.headers.stsSeconds=31536000"
      - "traefik.http.middlewares.nextcloud-headers.headers.stsIncludeSubdomains=true"
      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.permanent=true"
      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.regex=^https://(.*)/.well-known/ca(l|rd)dav"
      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.replacement=https://$${1}/remote.php/dav/"
      - "traefik.http.routers.nextcloud.middlewares=nextcloud-headers,nextcloud-caldav"

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pg_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nextcloud -d nextcloud"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - backend

  cache:
    image: redis:7-alpine
    restart: unless-stopped
    command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru
    volumes:
      - redis_data:/data
    networks:
      - backend

  cron:
    image: nextcloud:29-apache
    restart: unless-stopped
    entrypoint: /cron.sh
    volumes:
      - nc_data:/var/www/html
    depends_on:
      - nextcloud
    networks:
      - backend

networks:
  proxy:
    external: true
  backend:

volumes:
  nc_data:
  pg_data:
  redis_data:

¿Sin Traefik?

Si no usas Traefik, puedes exponer Nextcloud directamente con ports: - "8080:80" y poner un Nginx reverse proxy delante con Certbot para SSL. La configuración de este tutorial asume que tienes Traefik configurado.

Crea el archivo .env:

# .env
DOMAIN=nube.tuempresa.com
ADMIN_USER=admin
ADMIN_PASSWORD=contraseña_admin_segura
DB_PASSWORD=contraseña_db_segura

Paso 3: Levantar Nextcloud

docker compose up -d

La primera ejecución toma 1-2 minutos mientras Nextcloud configura la base de datos y crea los archivos iniciales. Revisa los logs:

docker compose logs -f nextcloud

Cuando veas Apache/2.4.x configured -- resuming normal operations, Nextcloud está listo.

Accede a https://nube.tuempresa.com e inicia sesión con las credenciales de admin que definiste en .env.

Paso 4: Configuración post-instalación

Configurar el cron job

Nextcloud necesita ejecutar tareas en segundo plano (limpieza, generación de previews, notificaciones). El contenedor cron que agregamos se encarga de esto. Verifica en Configuración → Ajustes básicos → Tareas en segundo plano que esté seleccionado "Cron".

Optimizar PHP

Dentro del contenedor, ajusta la configuración de PHP para archivos grandes:

docker compose exec nextcloud bash -c "cat >> /usr/local/etc/php/conf.d/custom.ini <<EOF
upload_max_filesize=10G
post_max_size=10G
max_execution_time=3600
max_input_time=3600
memory_limit=512M
output_buffering=0
EOF"

docker compose restart nextcloud

Configurar almacenamiento externo (opcional)

Si tienes un NAS o quieres conectar almacenamiento S3, habilita la app "External Storage" en Nextcloud:

  1. Ve a Apps → Archivos → External storage support → Habilitar
  2. Ve a Configuración → Almacenamiento externo
  3. Agrega tu almacenamiento (SMB/CIFS, S3, WebDAV, FTP, SFTP)

Paso 5: Seguridad

Autenticación de dos factores (2FA)

Habilita TOTP para todos los usuarios:

  1. Ve a Apps → Seguridad → Two-Factor TOTP Provider → Habilitar
  2. Cada usuario activa 2FA desde su perfil con Google Authenticator o similar

Fuerza bruta (protección incluida)

Nextcloud incluye protección contra fuerza bruta por defecto. Si alguien falla el login varias veces, el acceso se retrasa progresivamente.

Antivirus (escaneo de archivos subidos)

Si tus usuarios suben archivos de fuentes externas, instala ClamAV:

# Agregar al docker-compose.yml
  clamav:
    image: clamav/clamav:stable
    restart: unless-stopped
    volumes:
      - clam_data:/var/lib/clamav
    networks:
      - backend

volumes:
  clam_data:

Luego habilita la app "Antivirus for files" en Nextcloud y configúrala para conectar con el contenedor ClamAV en clamav:3310.

Paso 6: Backup

Un Nextcloud sin backup es un desastre esperando ocurrir. Necesitas respaldar tres cosas:

1. Base de datos PostgreSQL

docker compose exec db pg_dump -U nextcloud nextcloud | gzip > backup_db_$(date +%Y%m%d).sql.gz

2. Datos de Nextcloud (archivos de usuarios)

docker run --rm -v nextcloud_nc_data:/data -v $(pwd)/backups:/backup alpine \
  tar czf /backup/nc_data_$(date +%Y%m%d).tar.gz -C /data .

3. Script de backup automatizado

Combina ambos en un script y prográmalo con cron — o usa el script de backup con Python que ya creamos:

#!/bin/bash
# backup-nextcloud.sh
BACKUP_DIR="/var/backups/nextcloud/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

echo "Activando modo mantenimiento..."
docker compose exec -T nextcloud php occ maintenance:mode --on

echo "Respaldando base de datos..."
docker compose exec -T db pg_dump -U nextcloud nextcloud | gzip > "$BACKUP_DIR/db.sql.gz"

echo "Respaldando archivos..."
docker run --rm -v nextcloud_nc_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/data.tar.gz -C /data .

echo "Desactivando modo mantenimiento..."
docker compose exec -T nextcloud php occ maintenance:mode --off

echo "Backup completado en $BACKUP_DIR"
ls -lh "$BACKUP_DIR"

Modo mantenimiento

Activar el modo mantenimiento antes del backup garantiza que no haya escrituras durante el proceso. Es molesto por unos minutos, pero evita inconsistencias. Programa el backup a las 3 AM cuando nadie trabaja.

Paso 7: Apps recomendadas

Nextcloud tiene un ecosistema de apps que extienden su funcionalidad. Las más útiles para empresas:

AppFunción
Collabora Online / OnlyOfficeEdición de documentos en el navegador (como Google Docs)
TalkVideoconferencia y chat (alternativa a Zoom/Teams)
CalendarCalendario compartido con CalDAV
ContactsDirectorio de contactos con CardDAV
MailCliente de correo integrado
DeckTableros Kanban para gestión de tareas
FormsFormularios y encuestas (alternativa a Google Forms)
Group FoldersCarpetas compartidas por grupo con cuotas

Paso 8: Conectar clientes

Escritorio (Windows, macOS, Linux)

Descarga el cliente de escritorio de Nextcloud. Configura:

  • Servidor: https://nube.tuempresa.com
  • Usuario y contraseña (o app password si tienes 2FA)
  • Selecciona qué carpetas sincronizar

Los archivos se sincronizan automáticamente — igual que Dropbox o OneDrive.

Móvil (iOS y Android)

Descarga la app Nextcloud desde App Store o Play Store. Además de archivos, puedes configurar la subida automática de fotos como reemplazo de Google Photos.

WebDAV

Cualquier aplicación que soporte WebDAV puede conectarse directamente:

https://nube.tuempresa.com/remote.php/dav/files/usuario/

Verificación de seguridad

Nextcloud incluye un escáner de seguridad integrado. Ve a Configuración → Información general y revisa las advertencias. También puedes usar el escáner externo:

https://scan.nextcloud.com

Introduce tu dominio y verifica que tu instalación cumple con las mejores prácticas de seguridad.

Siguientes pasos

Con Nextcloud corriendo, puedes expandir:

  • Integración con Active Directory/LDAP — para que los usuarios de tu red corporativa accedan con sus credenciales existentes
  • Collabora Online — edición de documentos colaborativa en el navegador sin salir de Nextcloud
  • Almacenamiento S3 — almacenamiento primario o secundario en AWS S3 para escalar sin límite
  • Monitoreo — métricas de Nextcloud en Prometheus/Grafana con el endpoint /ocs/v2.php/apps/serverinfo/api/v1/info
  • Ciberseguridad — auditoría de tu instalación Nextcloud para cumplir con LFPDPPP y políticas de protección de datos

Almacenamiento empresarial

¿Quieres tus datos bajo tu propio control?

Implementamos Nextcloud para tu empresa con Active Directory, almacenamiento escalable, backup automatizado y soporte continuo.

Solicitar evaluación

Preguntas frecuentes

Temas relacionados

#nextcloud#docker#almacenamiento#linux#privacidad#tutorial

¿Te fue útil? Compártelo

Artículos relacionados

Ver todos

Consultoría gratuita

¿Necesitas almacenamiento empresarial bajo tu control?

Implementamos Nextcloud para tu empresa con integración a Active Directory, almacenamiento escalable y soporte continuo.

Solicitar evaluación