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.0 en 127.0.0.1:9200.
  • Dex (OIDC): ghcr.io/dexidp/dex:v2.41.1 en 127.0.0.1:5556.
  • Nginx vhost: /etc/nginx/sites-available/opencloud — TLS → /dex/ + /.
  • OC_DOMAIN: cloud.km0digital.com con INSECURE=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-data

La 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.0 en /opt/opencloud/opencloud-compose/.env.
  • Corrección en opencloud.yaml runtime: entrada sharing.service_account requerida 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

Redirect URI en Google Cloud Console: 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.
No incluye el vhost de la web corporativa km0 ni otros stacks ajenos a OpenCloud.

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_assignment o DNS — usar driver: default o extra_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.