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.
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.
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.phpcada 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.