1.**Volume-Mount auf `/data`**, NICHT `/var/lib/gitea`. Forgejo schreibt alles nach `/data`. Siehe ADR-0005.
2.**SSH-Port-Kollision:** Forgejo-Image hat system-sshd auf 22, deshalb Forgejos eigener Server auf Container-Port 2222 → Host-Port 222.
3.**OIDC-Config lebt in der Postgres-DB** (Tabelle `login_source`), NICHT in `app.ini`. Zum Ändern: `docker exec -u git forgejo sh -c 'cd / && forgejo admin auth update-oauth --id 1 ...'`
4.**`forgejo admin` CLI** braucht `-u git` und `cd /`: `docker exec -u git forgejo sh -c 'cd / && forgejo admin user list'`
5.**User-Promotion zum Admin** via SQL am saubersten: `UPDATE "user" SET is_admin = true WHERE lower_name = 'NAME';`
## Ops-Kommandos
```bash
ssh ai-apps
cd /opt/ai-apps/forgejo
# Status
docker compose ps
docker logs forgejo --tail 50
# Restart
docker compose restart forgejo
# Update (Major-Version manuell, Tag auf :10 gepinnt)
docker compose pull
docker compose up -d
# Backup manuell
bash backup.sh
# User-Verwaltung
docker exec -u git forgejo sh -c 'cd / && forgejo admin user list'