OffshoreVps
Tutoriales10 oct 20269 min de lecturaPor el equipo de OffshoreVps

Aloja Nextcloud por tu cuenta en un VPS con Docker Compose

Ejecuta tu propia nube privada para archivos, calendarios y contactos: archivo Compose, proxy inverso HTTPS, dominios de confianza, tareas cron y copias de seguridad.

Nextcloud te ofrece sincronización de archivos, calendarios, contactos y edición de documentos en un servidor que controlas, en lugar de entregar tus archivos a un gran proveedor de nube. Así se ejecuta en un VPS con Docker Compose.

Ventana de terminal en un VPS que muestra los comandos usados para autoalojar Nextcloud, empezando por “mkdir -p ~/nextcloud && cd ~/nextcloud”
El tipo de comandos que ejecutarás en tu servidor en esta guía.

Antes de empezar

  • Un VPS con 2 vCPU y 4 GB de RAM es un comienzo cómodo. El almacenamiento es la principal limitación, así que elige un tamaño de disco adecuado a tus archivos.
  • Un dominio que apunte al servidor, explicado en nuestra guía de DNS.
  • Docker instalado, consulta instalar Docker en Ubuntu.

1. El archivo Compose

mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_PASSWORD: change-me-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - db:/var/lib/mysql
  redis:
    image: redis:7-alpine
    restart: unless-stopped
  app:
    image: nextcloud:stable
    restart: unless-stopped
    depends_on: [db, redis]
    ports:
      - "127.0.0.1:8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: change-me-db
      REDIS_HOST: redis
    volumes:
      - nc:/var/www/html
volumes:
  db:
  nc:
EOF
docker compose up -d

Cambia las tres contraseñas antes de ejecutarlo. Usa cadenas aleatorias largas.

Los pasos de esta guía en orden: 1. Antes de empezar; 2. 1. El archivo Compose; 3. 2. Pon HTTPS por delante; 4. 3. Termina la configuración; 5. 4. Mantenlo sano
Los pasos de esta guía, en orden.

2. Pon HTTPS delante

Añade un bloque server de Nginx que haga proxy a 127.0.0.1:8080 y luego ejecuta Certbot como en nuestra guía de Nginx. El bloque del proxy necesita estas líneas para que Nextcloud vea el protocolo correcto y las subidas grandes funcionen:

client_max_body_size 2G;
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
}

3. Termina la configuración

Abre tu dominio y crea la cuenta de administrador. Luego añade tu dominio a la lista de confianza y define los detalles del proxy:

docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https

4. Mantenlo sano

  • Actualizaciones: docker compose pull && docker compose up -d, una versión mayor cada vez.
  • Tareas en segundo plano: cambia a Cron en los ajustes de administración y añade una entrada de cron en el host que ejecute cron.php cada cinco minutos.
  • Copias de seguridad: guarda ambos volúmenes y un volcado de la base de datos. Consulta cómo hacer una copia de seguridad de un VPS.
  • Inicio de sesión en dos pasos: activa la app TOTP para cada cuenta.