homelab-codex-ws/kb/runbooks/nextcloud-cutover.md
oskar 96d5c814f2 feat(kb): SPLIT nextcloud -> service + decision + runbook
kb/services/nextcloud.md (Stack, WebDAV dla ingestu, Storage i backup)
kb/decisions/nextcloud-host-piha.md (decyzja: host = PIHA)
kb/runbooks/nextcloud-cutover.md (OIDC przez Forgejo + cutover checklist)

Tresc sekcji nietknieta; kontrola multizbioru linii == oryginal.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:58:46 +02:00

2.5 KiB
Raw Permalink Blame History

okf type visibility status updated links
0.1 runbook private active 2026-07-09
../services/nextcloud.md
../decisions/nextcloud-host-piha.md

Nextcloud — OIDC i cutover checklist

OIDC przez Forgejo (krok po-deployowy, occ)

Mechanizm: oficjalna appka user_oidc (utrzymywana przez Nextcloud GmbH — wybieramy ją zamiast community sociallogin). Konfiguruje się ją przez occ po pierwszym starcie — NIE przez env, stąd kroki w checkliście:

# w kontenerze nextcloud, jako www-data:
docker exec -u www-data nextcloud php occ app:install user_oidc
docker exec -u www-data nextcloud php occ user_oidc:provider forgejo \
  --clientid="<CLIENT_ID>" \
  --clientsecret="<CLIENT_SECRET>" \
  --discoveryuri="https://forgejo.kapala.org/.well-known/openid-configuration" \
  --scope="openid profile email" \
  --unique-uid=0 \
  --mapping-display-name=name --mapping-email=email --mapping-uid=preferred_username

Rejestracja w Forgejo (Settings → Applications, wzorzec jak Vikunja):

  • Redirect URI: https://cloud.kapala.org/apps/user_oidc/code
  • Confidential client; scope openid profile email

forgejo.kapala.org jest przypięte w compose przez extra_hosts do 192.168.31.5 (npm@PIHA) — OIDC discovery po LAN, lekcja z Vikunji. --unique-uid=0 + mapping preferred_username daje czytelne loginy (np. oskar) zamiast hashowanych ID — istotne dla WebDAV-owych URL-i.

Cutover checklist (przy deployu — NIE teraz)

  1. Host = PIHA (decyzja podjęta); LAN_BIND_IP/TRUSTED_PROXIES w .env już pod nią — TRUSTED_PROXIES doprecyzować przez docker network inspect na żywym hoście (patrz komentarz w env.example).
  2. Port wolny na żywym hoście: ss -tlnp | grep 8220.
  3. mkdir -p /opt/homelab/data/nextcloud/{html,db} na PIHA.
  4. .env z env.example.
  5. DNS: rekord A cloud.kapala.org w Cloudflare → 100.108.208.3 (Tailscale PIHA, DNS Only) — ten sam wzorzec co ha.kapala.org / immich.kapala.org (docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md); wildcard *.kapala.org już pokrywa tę subdomenę, nowy cert niepotrzebny. Plus vhost w npm@PIHA (HTTPS → 192.168.31.5:8220, Advanced puste).
  6. docker compose up -d; pierwszy start instaluje NC (23 min), potem ./healthcheck.sh.
  7. Kroki occ dla user_oidc (wyżej) + rejestracja appki w Forgejo + testowy login OIDC.
  8. Test sync klientem (telefon) + test WebDAV (curl -u user:app-password).
  9. Wpis w hosts/<node>/services.yaml + topology (dopiero przy deployu).