Forgejo für Sveltia CMS unter mt-rad.de anpassen (OAuth / CORS) #16

Open
opened 2026-07-07 10:06:12 +02:00 by kreativmonkey · 1 comment

Damit das Sveltia-Panel unter https://mt-rad.de/admin/ mit dem Forgejo-Backend funktioniert, muss die Forgejo-Seite passend konfiguriert sein.

Ziel

  • Forgejo-OAuth2-App (PKCE) für Sveltia: Redirect-URI auf die neue Domain (https://mt-rad.de/admin/… bzw. die von Sveltia erwartete Callback-URL) ergänzen/anlegen; app_id in static/admin/config.yml aktualisieren, falls neue App.
  • Prüfen, ob Forgejo CORS/Cross-Origin für den API-Zugriff von mt-rad.de erlaubt (Sveltia spricht git.f4mily.net/api/v1 aus dem Browser der mt-rad.de-Origin) — ggf. Forgejo-Config ([cors]) additiv anpassen.
  • Login-Flow von mt-rad.de aus Ende-zu-Ende testen (nach Deploy #14/#15).

Rahmen / Vorsicht

  • Forgejo läuft produktiv (git.f4mily.net) — Änderungen additiv und reversibel, bestehende OAuth-Apps/Nutzer nicht brechen.
  • Aktuelle App-ID im Repo: 1ce71474-4bd0-4a17-9500-c2663ba46840 (PKCE, base_url https://git.f4mily.net).

Ergebnis in diesem Issue festhalten: was an Forgejo geändert werden muss (genaue Settings/Config-Snippets), ob neue OAuth-App nötig, Testprotokoll.

Bearbeitung: Subagent (Deploy-Epic 1–3, Opus), Entwurf/Plan — Forgejo-Settings erst nach Review ändern.

Damit das Sveltia-Panel unter `https://mt-rad.de/admin/` mit dem Forgejo-Backend funktioniert, muss die Forgejo-Seite passend konfiguriert sein. **Ziel** - Forgejo-OAuth2-App (PKCE) für Sveltia: **Redirect-URI** auf die neue Domain (`https://mt-rad.de/admin/…` bzw. die von Sveltia erwartete Callback-URL) ergänzen/anlegen; `app_id` in `static/admin/config.yml` aktualisieren, falls neue App. - Prüfen, ob Forgejo CORS/Cross-Origin für den API-Zugriff von mt-rad.de erlaubt (Sveltia spricht `git.f4mily.net/api/v1` aus dem Browser der mt-rad.de-Origin) — ggf. Forgejo-Config (`[cors]`) additiv anpassen. - Login-Flow von mt-rad.de aus Ende-zu-Ende testen (nach Deploy #14/#15). **Rahmen / Vorsicht** - Forgejo läuft produktiv (git.f4mily.net) — Änderungen additiv und reversibel, bestehende OAuth-Apps/Nutzer nicht brechen. - Aktuelle App-ID im Repo: `1ce71474-4bd0-4a17-9500-c2663ba46840` (PKCE, `base_url https://git.f4mily.net`). **Ergebnis in diesem Issue festhalten:** was an Forgejo geändert werden muss (genaue Settings/Config-Snippets), ob neue OAuth-App nötig, Testprotokoll. _Bearbeitung: Subagent (Deploy-Epic 1–3, Opus), Entwurf/Plan — Forgejo-Settings erst nach Review ändern._
Author
Owner

Entwurf fertig (nur Analyse + Plan, keine Forgejo-Settings geändert)

Forgejo-Version der Instanz: 15.0.3+gitea-1.22.0.

Empfehlung OAuth: bestehende App erweitern (KEINE neue App)

Die PKCE-App 1ce71474-4bd0-4a17-9500-c2663ba46840 behalten und ihr eine zusätzliche Redirect-URI für die neue Domain geben. Forgejo-OAuth2-Apps unterstützen mehrere Redirect-URIs.

Begründung: additiv + reversibel, app_id bleibt → static/admin/config.yml muss am backend-Block nicht angefasst werden (nur site_url ändert sich, das steckt bereits im #14-Branch). Eine zweite App würde eine zweite Identität schaffen, ohne Mehrwert für einen Soft-Launch.

Konkret (Forgejo → Einstellungen → Anwendungen → die Sveltia-App): Redirect-URI ergänzen:

https://mt-rad.de/admin/

Die bestehende https://poc.mta-r.de/admin/-URI stehen lassen (bricht nichts). Sveltia (Gitea-Backend, PKCE) sendet als redirect_uri die Panel-URL — beim E2E-Test in den DevTools den echten redirect_uri-Query-Parameter der Authorize-Anfrage gegenprüfen und exakt diesen Wert eintragen (falls Sveltia ohne trailing slash oder auf / zeigt, entsprechend https://mt-rad.de/ ergänzen).

CORS

Sveltia läuft im Browser mit Origin https://mt-rad.de und ruft https://git.f4mily.net/api/v1/... (+ Token-Endpoint) cross-origin per XHR auf → Forgejo muss CORS-Header senden.

Da poc.mta-r.de heute funktioniert, ist CORS bereits konfiguriert. Nötig ist nur: sicherstellen, dass mt-rad.de in der erlaubten Domain-Liste steht. In app.ini (auf dem Forgejo-Host, nicht in diesem Repo), Abschnitt [cors] prüfen:

  • Ist ALLOW_DOMAIN eine feste Liste → mt-rad.de ergänzen.
  • Ist es bereits * bzw. permissiv → nichts zu tun.

Additiver Referenz-Snippet, falls angepasst werden muss:

[cors]
ENABLED = true
ALLOW_DOMAIN = mt-rad.de, poc.mta-r.de
ALLOW_CREDENTIALS = true
METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS
HEADERS = Content-Type,Authorization,User-Agent

Änderung an app.ini erfordert einen Forgejo-Neustart (produktiv → erst nach Review).

Testplan (E2E, NACH Deploy #14/#15 + DNS-Cutover)

  1. https://mt-rad.de/admin/ öffnen → „Login with Gitea".
  2. Redirect zu git.f4mily.net/login/oauth/authorize → autorisieren.
  3. Rück-Redirect nach mt-rad.de/admin/ → Panel lädt die Collections (Artikel/Autor:innen/Seiten).
  4. Testeintrag speichern → ein Commit erscheint in MT-R/poc-hugo-sveltia auf main.
  5. DevTools/Network: keine CORS-Fehler gegen git.f4mily.net (API + /login/oauth/access_token).

Offene Fragen / Risiken

  • Exakte redirect_uri erst im Test verifizieren (s. o.) — häufigste Fehlerquelle bei Sveltia-OAuth.
  • [cors]-Ist-Zustand ist nur auf dem Forgejo-Host einsehbar (Zugriff nötig) — kann von hier aus nicht gelesen werden.
  • Alle Änderungen sind an der produktiven Instanz git.f4mily.net → additiv/reversibel halten, bestehende poc.mta-r.de-Nutzung nicht brechen.
## Entwurf fertig (nur Analyse + Plan, keine Forgejo-Settings geändert) Forgejo-Version der Instanz: **15.0.3+gitea-1.22.0**. ### Empfehlung OAuth: bestehende App erweitern (KEINE neue App) Die PKCE-App `1ce71474-4bd0-4a17-9500-c2663ba46840` behalten und ihr **eine zusätzliche Redirect-URI für die neue Domain** geben. Forgejo-OAuth2-Apps unterstützen mehrere Redirect-URIs. **Begründung:** additiv + reversibel, `app_id` bleibt → `static/admin/config.yml` muss am `backend`-Block **nicht** angefasst werden (nur `site_url` ändert sich, das steckt bereits im #14-Branch). Eine zweite App würde eine zweite Identität schaffen, ohne Mehrwert für einen Soft-Launch. **Konkret (Forgejo → Einstellungen → Anwendungen → die Sveltia-App):** Redirect-URI ergänzen: ``` https://mt-rad.de/admin/ ``` Die bestehende `https://poc.mta-r.de/admin/`-URI stehen lassen (bricht nichts). Sveltia (Gitea-Backend, PKCE) sendet als `redirect_uri` die Panel-URL — **beim E2E-Test in den DevTools den echten `redirect_uri`-Query-Parameter der Authorize-Anfrage gegenprüfen** und exakt diesen Wert eintragen (falls Sveltia ohne trailing slash oder auf `/` zeigt, entsprechend `https://mt-rad.de/` ergänzen). ### CORS Sveltia läuft im Browser mit Origin `https://mt-rad.de` und ruft `https://git.f4mily.net/api/v1/...` (+ Token-Endpoint) **cross-origin** per XHR auf → Forgejo muss CORS-Header senden. **Da poc.mta-r.de heute funktioniert, ist CORS bereits konfiguriert.** Nötig ist nur: sicherstellen, dass `mt-rad.de` in der erlaubten Domain-Liste steht. In `app.ini` (auf dem Forgejo-Host, **nicht in diesem Repo**), Abschnitt `[cors]` prüfen: - Ist `ALLOW_DOMAIN` eine feste Liste → `mt-rad.de` **ergänzen**. - Ist es bereits `*` bzw. permissiv → **nichts zu tun**. Additiver Referenz-Snippet, falls angepasst werden muss: ```ini [cors] ENABLED = true ALLOW_DOMAIN = mt-rad.de, poc.mta-r.de ALLOW_CREDENTIALS = true METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS HEADERS = Content-Type,Authorization,User-Agent ``` Änderung an `app.ini` erfordert einen **Forgejo-Neustart** (produktiv → erst nach Review). ### Testplan (E2E, NACH Deploy #14/#15 + DNS-Cutover) 1. `https://mt-rad.de/admin/` öffnen → „Login with Gitea". 2. Redirect zu `git.f4mily.net/login/oauth/authorize` → autorisieren. 3. Rück-Redirect nach `mt-rad.de/admin/` → Panel lädt die Collections (Artikel/Autor:innen/Seiten). 4. Testeintrag speichern → ein Commit erscheint in `MT-R/poc-hugo-sveltia` auf `main`. 5. DevTools/Network: **keine CORS-Fehler** gegen `git.f4mily.net` (API + `/login/oauth/access_token`). ### Offene Fragen / Risiken - Exakte `redirect_uri` erst im Test verifizieren (s. o.) — häufigste Fehlerquelle bei Sveltia-OAuth. - `[cors]`-Ist-Zustand ist nur auf dem Forgejo-Host einsehbar (Zugriff nötig) — kann von hier aus nicht gelesen werden. - Alle Änderungen sind an der **produktiven** Instanz git.f4mily.net → additiv/reversibel halten, bestehende `poc.mta-r.de`-Nutzung nicht brechen.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MT-R/PoC-mt-r#16
No description provided.