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

61 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
okf: "0.1"
type: runbook
visibility: private
status: active
updated: 2026-07-09
links:
- ../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:
```bash
# 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).