Tag 2 — OpenCloud 7, Dex OIDC und vollständiges Backup

Upgrade auf OpenCloud 7.0.0, Dex-OIDC-Broker mit Google und Apple, Nginx-Anpassungen, erstes vollständiges Backup und operative Dokumentation.

Einleitung

Tag 2 (22. Mai 2026) konzentriert sich auf den Authentifizierungs-Perimeter und die Reifung des am Vortag deployten OpenCloud-Stacks: Versions-Upgrade, OIDC-Broker mit Dex (Google und Apple), Nginx-Anpassungen, erstes vollständiges Backup und operative Dokumentation.

Das Erst-Deployment (Debian, Docker, TLS, getrennte Hostnames) wurde am 21. abgeschlossen; heute wird auf dieser Basis in Produktion unter cloud.km0digital.com weitergearbeitet.

Status

Zum Abschluss verifizierte Komponenten

  • OpenCloud: opencloudeu/opencloud-rolling:7.0.0 auf 127.0.0.1:9200.
  • Dex (OIDC): ghcr.io/dexidp/dex:v2.41.1 auf 127.0.0.1:5556.
  • Nginx vhost: /etc/nginx/sites-available/opencloud — TLS → /dex/ + /.
  • OC_DOMAIN: cloud.km0digital.com mit INSECURE=false.
  • Dex-Issuer: https://cloud.km0digital.com/dex — Connectors Google + Apple.

Übliche Checks: docker compose ps, nginx -t und HTTP-Header gegen die öffentliche Cloud-URL.

Architektur

Authentifizierung + Anwendung

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
                                    └─ Volumes opencloud_* + dex_dex-data

Die Unternehmenswebsite auf demselben Host läuft in einem anderen Virtual Host: km0digital.com → statischer Container auf Loopback.

Upgrade

OpenCloud 6.2.0 → 7.0.0

  • Ziel war die Annäherung an den 7.0.1-Zweig; das Image 7.0.0 wurde als Tag angewendet und validiert (7.0.1 wurde nicht deployt, da nicht verfügbar oder nicht validiert).
  • Variable OC_DOCKER_TAG=7.0.0 in /opt/opencloud/opencloud-compose/.env.
  • Korrektur in opencloud.yaml Runtime: Eintrag sharing.service_account in OpenCloud 7.x erforderlich.
  • Kontrollierter Neustart: docker compose pull && docker compose up -d.
  • Log-Review auf fatal/error; Dienst in Betrieb gelassen.

OIDC

Multi-Provider mit Dex (Google + Apple)

Das ad-hoc-Experiment mit Keycloak (Nginx-Vorlagen unter keycloak*.conf nicht aktiviert) wurde zugunsten eines schlanken Dex-Brokers unter /opt/opencloud/dex/ verworfen:

  • docker-compose.yml: Dex-Dienst, Volume dex_dex-data, Veröffentlichung nur auf Loopback :5556.
  • config.yaml: Issuer, SQLite, OAuth2-Clients, Connectors.
  • web/themes/km0/: Login-UI mit KM0-Branding (Logo, CSS, i18n CA/ES/EN).
  • setup-apple.sh: erzeugt Apple-Client-JWT (~180 Tage).

OpenCloud nutzt externen Issuer (OC_OIDC_ISSUER/dex, Client opencloud-web). alwaysShowLoginScreen: true erzwingt die Auswahl Google vs. Apple.

Öffentliche Einstiege

Zugangs-URLs

Redirect-URI in der Google Cloud Console: https://cloud.km0digital.com/dex/callback. Apple-Credentials unter /opt/ — keine Secrets hier.

Nginx

Integration im OpenCloud-vhost

  • location /dex/:http://127.0.0.1:5556/dex/ mit weitergeleiteten Headern für OIDC.
  • location = /login.html: statische Datei unter /var/www/opencloud-auth/login.html.
  • location /: OpenCloud auf :9200 mit SSE, TUS und WebSockets von Tag 1.

Mit INSECURE=false und stabilem FQDN verlässt der Stack den gelockerten Labor-Modus.

Compose

DNS-Auflösung im Container

In external-proxy/opencloud.yml wurde extra_hosts: ${OC_DOMAIN}:host-gateway ergänzt, damit der Container den öffentlichen Hostnamen wie der Host auflöst. Ohne das können Login-Fehler nach Google-OAuth auftreten (access-denied oder inkonsistente Sitzungen).

Backup

Erste vollständige Kopie der Installation

Skript: /opt/opencloud/scripts/backup-opencloud-installation.sh. Erste Ausführung: 2026-05-22 19:51 → /opt/backup_opencloud_installation/20260522-195106/ mit Link latest.

  • opt-opencloud/: vollständiger Baum /opt/opencloud/.
  • host-nginx/: aktiver vhost + Repo-Vorlagen.
  • letsencrypt/: TLS des Cloud-Hostnames.
  • docker-volumes/: Tarballs opencloud-data, opencloud-config, dex-data.
  • manifest/: Runtime-Snapshot und Backup-Log.
Enthält nicht den vhost der KM0-Unternehmenswebsite noch andere Stacks außerhalb von OpenCloud.

Vorfälle

Dokumentierte Symptome und Abhilfe

  • GET .../photo/$value 404: kein Avatar hochgeladen — harmloses Konsolen-Rauschen.
  • 502 auf alte URLs /signin/: veraltete Sitzung vor dem Dex-Schnitt — Site-Daten löschen oder privates Fenster.
  • access-denied nach Google-Login: Whitelist in role_assignment oder DNS — driver: default oder extra_hosts nutzen.
  • Dex in Neustart-Schleife: docker logs prüfen; Provider-JSON unter /opt/ validieren.

Recherche

Heute nicht deployt

  • Collabora / WOPI: Review von Office-Bearbeitung im Browser — vorerst nur Core; mögliches Addon später.
  • Apache HTTP Server: bestätigt ungenutzt (nur Nginx). Apache Tika in Upstream-Docs nicht deployt.
  • OpenCloud-Web-Branding: KM0-Overlay am 21. Mai zurückgenommen; KM0-Branding im Dex-Login bleibt.

Offen

Nächste Schritte

OpenCloud 7.0.1 prüfen, sobald das Image validiert ist, Apple Sign In abschließen falls nötig, Cron für das vollständige Backup einrichten und Rotation des administrativen Zugangs überdenken. Erkunden Sie die Services oder nehmen Sie Kontakt auf, wenn Sie mitarbeiten möchten.