When a new user logs in via Authentik OIDC for the first time, Forgejo tries to fetch the 'picture' claim as an avatar — but Authentik delivers a 'data:image/svg+xml;base64,...' URL that Forgejo can't store. Result: DB has an avatar hash but no file, so /avatars/<hash> returns 404, the <img> is in broken state, and the activity page's canvas renderer crashes with 'drawImage on broken state'. Fix (per user, after first login): UPDATE "user" SET avatar = '', use_custom_avatar = false WHERE lower_name = '<name>'; Triggers Forgejo's default identicon generation, which works. This commit: - Adds ADR-0007 with full root cause + three rejected alternatives - Updates docs/adr/README.md index - Extends stacks/forgejo/Agent.md 'Known Gotchas' with the fix - Appends the fix to docs/runbooks/forgejo-admin-recovery.md Applied for user 'bw' already on 2026-04-12. Refs OP#1119 |
||
|---|---|---|
| .. | ||
| forgejo-admin-recovery.md | ||
| forgejo-backup-restore.md | ||
| README.md | ||
Runbooks
Runbooks sind Schritt-für-Schritt-Anleitungen für wiederkehrende operative Situationen — meist Notfälle oder seltene Wartungs-Aufgaben.
Warum Runbooks?
- Für dich selbst in 3 Monaten: Wenn der Loco-Sync wieder kaputt ist und du dich nicht mehr an die Debug-Schritte erinnerst.
- Für die AI: Eine AI-Session kann ein Runbook lesen und ausführen, ohne dass du jede Zeile diktieren musst.
- Für den Vertretungsfall: Wenn du im Urlaub bist und jemand anderes dringend muss.
Format
Jedes Runbook beschreibt:
- Wann anwenden — Symptome, Trigger
- Voraussetzungen — Zugänge, Tools, Secrets
- Schritte — nummeriert, kopierbar (Bash-Blöcke)
- Verification — wie man erkennt dass der Fix greift
- Was NIE machen — typische Fallen
Aktuelle Runbooks
Forgejo
- forgejo-admin-recovery.md — Was tun wenn Authentik down ist und niemand mehr ins Forgejo kommt. Nutzt den lokalen
admin-localFallback-User. - forgejo-backup-restore.md — Backup-Format, Restore-Szenarien (komplett / nur DB / einzelne Datei), Disaster-Recovery auf neuem Server.
Convention
- Dateiname:
<stack>-<action>.md, z.B.forgejo-backup-restore.md,loco-sync-debug.md - Immer Bash-Blöcke mit echten Kommandos, nicht Pseudo-Code
- Erwartete Outputs hinschreiben, damit man weiß wann's geklappt hat
- Destruktive Aktionen fett markieren ("⚠️ löscht ALLE Daten!")
Neue Runbooks hinzufügen
Wenn du ein Problem zum zweiten Mal hast, wird es ein Runbook. Die AI kann dir das im Moment des Fixes schreiben — du reviewst im Commit.