Saltar a contenido

OpenCloud

File sync + sharing fork de ownCloud Infinite Scale. Go, microservicios internos, sin DB externa (metadata en filesystem). RAM ~100-300MB. https://cloud.matias7235.com.ar

📁 Rutas y configs

Qué Dónde
Compose base /opt/docker/opencloud/docker-compose.yml
Compose overrides external-proxy/opencloud.yml, custom-collabora.yml
Variables de entorno /opt/docker/opencloud/.env
Config interna /opt/docker/opencloud/config/opencloud.yaml (generada al primer inicio)
Datos usuarios /mnt/hdd_2tb/opencloud_data (Disco WD Blue 1TB)

Contenedores: opencloud-opencloud-1, opencloud-collaboration-1 Puerto: 9200

Versión: 7.1.0 (OC_DOCKER_TAG=7.1.0 en .env).

🧩 Apps integradas externas

App Servicio externo Doc
Office (Collabora) Collabora standalone en office.matias7235.com.ar Collabora.md

🛠️ Comandos útiles

# Ver logs
docker logs -f opencloud-opencloud-1
docker logs -f opencloud-collaboration-1

# Reiniciar contenedores individuales
docker restart opencloud-opencloud-1
docker restart opencloud-collaboration-1

# Recrear todo el stack (necesario si se cambió .env o custom ymls)
cd /opt/docker/opencloud && docker compose down && docker compose up -d

# Verificar containers activos
cd /opt/docker/opencloud && docker compose ps

# Test de salud (desde el host)
curl http://localhost:9200                                   # Debe devolver HTML de login
curl http://localhost:9300/wopi/files/                       # Debe devolver 404 (esperado)
curl http://localhost:9980/hosting/discovery                 # XML de Collabora

# Forzar regeneración de config (si se cambian env vars sensibles)
cd /opt/docker/opencloud && docker compose down && sudo rm -f config/opencloud.yaml && docker compose up -d

💾 Backups y Restauración

OpenCloud no tiene DB externa — todo está en filesystem:

# Backup de config
sudo tar czf /tmp/opencloud-config-$(date +%F).tar.gz /opt/docker/opencloud/config/

# Backup de datos de usuario
sudo tar czf /tmp/opencloud-data-$(date +%F).tar.gz /mnt/hdd_2tb/opencloud_data/

⚙️ Tareas comunes

Usuario y password por defecto:

User: admin
Pass: (lo que esté en INITIAL_ADMIN_PASSWORD del .env)

Configurar Office (Collabora externo): OpenCloud ya viene configurado via custom-collabora.yml. No requiere config extra desde la UI. Detalles en Collabora.md.

Actualizar OpenCloud:

cd /opt/docker/opencloud
docker compose pull
docker compose up -d

Si después del upgrade hay "Invalid credentials" en los logs, ver "Problemas comunes" abajo.

🔥 Problemas comunes

Problema Solución
"Invalid credentials" para service users al upgradear Al pasar de 6.x a 7.x, los hashes argon2 del BoltDB (idm.boltdb) dejan de ser válidos. Script de fix: sudo /opt/scripts/opencloud/fix-idm-passwords.sh (detener containers antes). Service users: idp (idp_password), reva (reva_password), libregraph (idm_password), admin (admin_password)
Authentication failed al loguearse Secrets entre config y data no coinciden. cd /opt/docker/opencloud && docker compose down && sudo rm -rf /mnt/hdd_2tb/opencloud_data/* && sudo rm -f config/opencloud.yaml && docker compose up -d
Office no abre documentos (500 o error en iframe) Ver Collabora.md → Problemas comunes. Causa más frecuente: falta proof key en Collabora
Error 502 desde cloud.matias7235.com.ar Verificar que el contenedor OpenCloud esté corriendo: docker ps
WOPI host not authorized Verificar regex de NEXTCLOUD_DOMAIN_REGEX en /opt/docker/collabora/.env
Cambios en .env no surten efecto Usar docker compose down && docker compose up -d (no restart)
CSP bloquea JS (script-src, unsafe-eval) El CSP template tiene ${IDP_DOMAIN\|keycloak.opencloud.test} que no se resuelve bien. Editar /opt/docker/opencloud/config/opencloud/csp.yaml: reemplazar las referencias a keycloak.opencloud.test por cloud.matias7235.com.ar y agregar 'unsafe-eval' en script-src