Día 2 — OpenCloud 7, Dex OIDC y backup integral
Actualización a OpenCloud 7.0.0, broker OIDC Dex con Google y Apple, ajustes Nginx, primer backup integral y documentación operativa.
Introducción
El día 2 (22 de mayo de 2026) se centra en el perímetro de autenticación y en madurar el stack OpenCloud ya desplegado el día anterior: actualización de versión, broker OIDC con Dex (Google y Apple), ajustes de Nginx, primer backup integral y documentación operativa.
El despliegue inicial (Debian, Docker, TLS, hostnames separados) quedó cerrado el 21; hoy se trabaja sobre esa base en producción en cloud.km0digital.com.
Estado
Componentes verificados al cierre
- OpenCloud:
opencloudeu/opencloud-rolling:7.0.0en127.0.0.1:9200. - Dex (OIDC):
ghcr.io/dexidp/dex:v2.41.1en127.0.0.1:5556. - Nginx vhost:
/etc/nginx/sites-available/opencloud— TLS →/dex/+/. - OC_DOMAIN:
cloud.km0digital.comconINSECURE=false. - Emisor Dex:
https://cloud.km0digital.com/dex— conectores Google + Apple.
Comprobaciones habituales: docker compose ps, nginx -t y cabeceras HTTP contra la URL pública del cloud.
Arquitectura
Autenticación + aplicación
Browser ── HTTPS :443 cloud.km0digital.com ── Nginx
├─ /dex/ → Dex 127.0.0.1:5556
├─ /login.html → /var/www/opencloud-auth/
└─ / → OpenCloud 127.0.0.1:9200
└─ volúmenes opencloud_* + dex_dex-dataLa web corporativa en el mismo host sigue en otro virtual host: km0digital.com → contenedor estático en loopback.
Upgrade
OpenCloud 6.2.0 → 7.0.0
- Se solicitó acercarse a la rama 7.0.1; la imagen 7.0.0 fue la etiqueta aplicada y validada (7.0.1 no se desplegó al no estar disponible o validada).
- Variable
OC_DOCKER_TAG=7.0.0en/opt/opencloud/opencloud-compose/.env. - Corrección en
opencloud.yamlruntime: entradasharing.service_accountrequerida en OpenCloud 7.x. - Reinicio controlado:
docker compose pull && docker compose up -d. - Revisión de logs en niveles
fatal/error; servicio dejado en marcha.
OIDC
Multi-proveedor con Dex (Google + Apple)
Se descartó el experimento ad hoc con Keycloak (plantillas nginx bajo keycloak*.conf no habilitadas) en favor de un broker Dex ligero en /opt/opencloud/dex/:
- docker-compose.yml: servicio Dex, volumen
dex_dex-data, publicación solo en loopback :5556. - config.yaml: emisor, SQLite, clientes OAuth2, conectores.
- web/themes/km0/: UI de login con marca KM0 (logo, CSS, i18n CA/ES/EN).
- setup-apple.sh: genera JWT de cliente Apple (~180 días).
OpenCloud queda con emisor externo (OC_OIDC_ISSUER → /dex, cliente opencloud-web). alwaysShowLoginScreen: true fuerza el selector Google vs Apple.
Entradas públicas
URLs de acceso
- cloud.km0digital.com/: interfaz web OpenCloud.
- /dex/: emisor OIDC / login Dex.
- /login.html: selector estático Google / Apple.
https://cloud.km0digital.com/dex/callback. Credenciales Apple bajo /opt/ — sin detallar secretos aquí.Nginx
Integración en el vhost OpenCloud
- location /dex/: →
http://127.0.0.1:5556/dex/con cabeceras reenviadas para OIDC. - location = /login.html: fichero estático en
/var/www/opencloud-auth/login.html. - location /: OpenCloud en :9200 manteniendo SSE, TUS y WebSockets del día 1.
Con INSECURE=false y FQDN estable, el stack abandona el modo laboratorio relajado.
Compose
Resolución DNS en contenedor
En external-proxy/opencloud.yml se añadió extra_hosts: ${OC_DOMAIN}:host-gateway para que el contenedor resuelva el hostname público como el host. Sin ello pueden aparecer fallos de login tras OAuth de Google (access-denied o sesiones incoherentes).
Backup
Primera copia integral de la instalación
Script: /opt/opencloud/scripts/backup-opencloud-installation.sh. Primera ejecución: 2026-05-22 19:51 → /opt/backup_opencloud_installation/20260522-195106/ con enlace latest.
- opt-opencloud/: árbol completo
/opt/opencloud/. - host-nginx/: vhost activo + plantillas del repo.
- letsencrypt/: TLS del hostname del cloud.
- docker-volumes/: tarballs
opencloud-data,opencloud-config,dex-data. - manifest/: snapshot de runtime y log del backup.
Incidencias
Síntomas y remedios documentados
- GET .../photo/$value 404: sin avatar subido — ruido benigno en consola.
- 502 en URLs antiguas /signin/: sesión obsoleta antes del corte Dex — limpiar datos del sitio o ventana privada.
- access-denied tras login Google: lista blanca en
role_assignmento DNS — usardriver: defaultoextra_hosts. - Dex en bucle de reinicio: revisar
docker logs; validar JSON de proveedores en/opt/.
Investigación
Sin despliegue hoy
- Collabora / WOPI: revisión de edición Office en navegador — mantener solo core; posible addon futuro.
- Apache HTTP Server: confirmado que no se usa (solo Nginx). Apache Tika en docs upstream no desplegado.
- Branding OpenCloud Web: overlay KM0 revertido el 21 de mayo; branding KM0 en login Dex se mantiene.
Pendientes
Siguientes pasos
Valorar OpenCloud 7.0.1 cuando la imagen esté validada, completar Apple Sign In si falta, instalar cron para el backup integral y revisar rotación del acceso administrativo. Explora los servicios o escríbenos para colaborar.