docs+deploy: production status, lessons learned (9 bugs), deploy compose, e2e test tools
This commit is contained in:
@@ -146,8 +146,32 @@ docker build -t refboard-ayon:latest .
|
||||
Der E2E (Ticket-Ausstellung → Exchange → Board-Zugriff → Single-Use →
|
||||
2. Nutzer am selben Board) ist mit dem Mock grün getestet.
|
||||
|
||||
## Status: PRODUKTIV (seit 05.09.2026)
|
||||
|
||||
- DNS + Let's-Encrypt-Zertifikat aktiv (`refboard.niklashmotion.art`)
|
||||
- Launcher-Klick → eingeloggt im Task-Board — produktiv im Einsatz
|
||||
|
||||
## Fehler & Lektionen (Session 04.–05.09.2026)
|
||||
|
||||
| # | Fehler | Ursache | Fix/Lektion |
|
||||
|---|---|---|---|
|
||||
| 1 | Launcher zeigte fast keine Actions mehr (`KeyError: 'url'` in `_get_webactions`) | `SimpleActionManifest(icon=…)` erzeugte `{"type":"url"}` **ohne** `url`-Feld; eine einzige kaputte Action kippte **alle** Webactions im Client (try/except um den ganzen Fetch) | Icon-Feld weggelassen; Lektion: Action-Icons brauchen `{"type":"material-symbols","name":…}` oder vollständige URL |
|
||||
| 2 | `/session` → 500 `AttributeError: 'UserAttribModel' object has no attribute 'name'` | AYON-User-attrib heißt `fullName`, nicht `name` | `user.attrib.fullName` |
|
||||
| 3 | Exchange → 500 `uuidv4 is not defined` | Import im neuen db.js-Code vergessen | Lektion: py_compile fängt undefined names nicht — Smoke-Test im Container statt nur Syntax-Check |
|
||||
| 4 | RefBoard konnte AYON nicht erreichen nach `compose up` | Externes Docker-Netz nur top-level deklariert, Service nicht attached; manuelles `docker network connect` überlebt kein Recreate | Netz **im Service-Block** als `external: true` deklarieren |
|
||||
| 5 | Exchange → 403 trotz „richtigem" Secret | `REFBOARD_API_KEY`-Wert enthält `=`; Extraktion mit `cut -d= -f2` bricht am ersten `=` → falscher (gekürzter) Wert in AYON-Secret | Werte mit `sed "s/^KEY=//"` extrahieren; Lektion: Secret-Sync immer per Längen-/Hash-Vergleich verifizieren |
|
||||
| 6 | Settings-POST (204) änderte die DB **nicht** | AYON speichert Settings als Ganzes, filtert aber „identity"-Felder (Werte == Defaults) heraus — ein Feld, das dem Default entspricht, ist nie speicherbar | Lektion: Settings-API ist Full-Replace + Identity-Filter; gezielte Feld-Fixe über die API sind nicht immer möglich |
|
||||
| 7 | App-Kacheln fehlten in jeder Task (Launcher leer bis auf 3 Actions) | **Ynput-Bug in applications 1.4.4:** Runtime liest Pydantic-Defaults (`profiles=[]`), nicht `DEFAULT_VALUES` (mit `all_applications`-Profil); das UI zeigt die Defaults trotzdem — Diskrepanz UI/Runtime | Umgehend: Profil per API explizit setzen (Full-Replace aus Backup + Profil-Feld); langfristig: Ynput-Issue |
|
||||
| 8 | Ticket-Wiederverwendung zeigte 502 statt 401 | RefBoard behandelte 401/403 vom Addon als Infrastruktur-Fehler | 401/403 aus `/exchange` → sauberes 401 „Invalid or expired ticket" |
|
||||
| 9 | Nach Secret-Löschung + Neuanlage Exchange-Fehler | AYON-Secret-Wert ≠ Container-Env (Container läuft mit altem Env bis Recreate) | Nach Secret-Änderungen: `docker compose up -d --force-recreate` |
|
||||
|
||||
## Noch offen
|
||||
|
||||
- A-Record `refboard` → `89.57.47.213` (IONOS-Panel, einzeln anlegen)
|
||||
- danach: `certbot --nginx -d refboard.niklashmotion.art`
|
||||
- Addon v0.2.0 installieren + Bundle (siehe oben)
|
||||
- ~~A-Record~~ ✓ erledigt (05.09.)
|
||||
- ~~Zertifikat~~ ✓ erledigt (05.09.)
|
||||
- Nuke-17.0-Pfad-Mismatch in den Applications-Settings
|
||||
(`/usr/local/Nuke17.0v1` erwartet, installiert ist `/opt/Nuke17.0v3`) — Fix im
|
||||
Studio-Settings-WebUI: Executable auf `/usr/local/bin/nuke-ayon` setzen
|
||||
- Alt-Container `refboard` (:8002, standalone) stilllegen, sobald Bestands-
|
||||
Boards nicht mehr gebraucht werden
|
||||
- Ynput-Issue zu #7 (applications 1.4.4 Runtime-Defaults) optional melden
|
||||
|
||||
Reference in New Issue
Block a user