Document deployment milestone: Hello world running on Unraid

Update roadmap in plan.md: steps 1/3/6 done, deployment (step 6)
pulled ahead of the content pipeline to prove the build->registry->
Unraid chain early. Record the evening 2026-09-20 status and the
deliberate test-time deviations to unwind later (port mapping, latest
-only tag, plaintext token).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
tleiningerandClaude Opus 4.8 committed 2026-09-21 00:13:08 +02:00
1 parent 467c7a3eb9
commit 99dd052929
1 file changed
+28 -3
+28 -3
View File
@@ -415,12 +415,12 @@ Kein Rechtsrat — aber die Punkte, an denen Schulseiten regelmäßig auffallen:
| # | Schritt | Abhängig von | | # | Schritt | Abhängig von |
|---|---|---| |---|---|---|
| 1 | Strato-Formulare einreichen, Domainumzug anstoßen | — | | 1 | Strato-Formulare einreichen, Domainumzug anstoßen | ✅ beauftragt (2026-09-20) |
| 2 | Inhaltslage klären (Abschnitt 9) | — | | 2 | Inhaltslage klären (Abschnitt 9) | — |
| 3 | Blazor-Projekt in Rider anlegen ✅ (2026-09-20) → nach Gitea pushen | — | | 3 | Blazor-Projekt in Rider anlegen ✅ (2026-09-20) → nach Gitea pushen ✅ | — |
| 6 | Dockerfile, compose.yaml → als Container auf Unraid ✅ (2026-09-20) | 3 |
| 4 | Content-Pipeline: Markdig, YamlDotNet, Services, ICS-Endpoint | 3 | | 4 | Content-Pipeline: Markdig, YamlDotNet, Services, ICS-Endpoint | 3 |
| 5 | Layout, Navigation, Seiten mit Platzhaltern | 4 | | 5 | Layout, Navigation, Seiten mit Platzhaltern | 4 |
| 6 | Dockerfile, compose.yaml, lokal gegen NPM testen | 5 |
| 7 | Echte Inhalte einpflegen | 2, 5 | | 7 | Echte Inhalte einpflegen | 2, 5 |
| 8 | Impressum und Datenschutzerklärung | 7 | | 8 | Impressum und Datenschutzerklärung | 7 |
| 9 | DNS umstellen, NPM Proxy Host, Let's Encrypt | 1, 6 | | 9 | DNS umstellen, NPM Proxy Host, Let's Encrypt | 1, 6 |
@@ -428,3 +428,28 @@ Kein Rechtsrat — aber die Punkte, an denen Schulseiten regelmäßig auffallen:
Schritte 1 und 2 laufen unabhängig vom Code und sollten sofort starten — Schritte 1 und 2 laufen unabhängig vom Code und sollten sofort starten —
Schritt 2 ist der einzige, bei dem Warten echten Schaden anrichtet. Schritt 2 ist der einzige, bei dem Warten echten Schaden anrichtet.
**Abweichung von der ursprünglichen Reihenfolge:** Schritt 6 (Deployment) wurde
bewusst **vor** die Content-Pipeline (4/5) gezogen. Grund: die riskanteste Kette
— Image bauen → Gitea-Registry → auf Unraid ziehen → Container läuft — früh
beweisen, statt sie erst kurz vor dem Livegang zu entdecken. Details in
`docs/deployment.md`.
### Stand 2026-09-20 (abends)
Erreicht: Das rohe „Hello world" der Blazor-App läuft als Container auf Unraid
(`Cube`), erreichbar im LAN unter `http://cube:5000`. Bewiesen ist damit die
komplette Deploy-Kette inkl. privater Gitea-Registry.
Bewusste **Test-Abweichungen** vom Produktivziel (Abschnitt 8), später
zurückzubauen:
- `compose.yaml` hat ein Port-Mapping `5000:8080`. Produktiv: kein Mapping, nur
über das externe `npm`-Netz (NPM ist noch nicht testbar, Domain zieht erst um).
- Image-Tag nur `:latest`, noch kein SHA-Tag (→ Schritt 10, Rollback).
- Registry-Token liegt auf Unraid im Klartext (`/root/.docker/config.json`).
Credential-Helper ist als späterer Punkt in `docs/deployment.md` notiert.
**Nächster Schritt:** Content-Pipeline (Schritt 4) — Markdig + YamlDotNet,
Services für Seiten/Termine, ICS-Endpoint. Parallel offen und unabhängig vom
Code: Inhaltslage klären (Schritt 2, zeitkritisch).