Stack: nextcloud:31-apache + MariaDB 11.4 + Redis 7, todo en red interna sin puertos de BD expuestos.
cp .env.example .env
openssl rand -base64 32 # para cada secreto del .env
nano .env
docker compose up -d
docker compose ps # esperar healthy
curl -I http://127.0.0.1:8080 # debe responder 302/200El stack escucha solo en 127.0.0.1:8080. En el repo caddy, añadir al Caddyfile
(en la red reverse_proxy — unir el servicio app a esa red o usar IP del host):
cloud.tudominio.com {
reverse_proxy 127.0.0.1:8080
header Strict-Transport-Security "max-age=15552000;"
request_body {
max_size 10GB
}
}
OVERWRITEPROTOCOL=https y TRUSTED_PROXIES ya están configurados en el compose.
docker compose exec -u www-data app php occ maintenance:update:htaccess
docker compose exec -u www-data app php occ db:add-missing-indices
# Backup (ver plan maestro zen-ai-stack: validar nombres de volumen)
tar czf nc_backup_$(date +%F).tgz nc_data db_dataStack creado por la auditoría integral ago-2026 (antes el repo estaba vacío).