landingpage-go/CODEX_NOTES.md
Oliver Giertz 94d3a2bae5
All checks were successful
Deploy go.vanityontour.de / deploy (push) Successful in 6s
Deployment-Doku auf den neuen Stand gebracht
README und CODEX_NOTES beschrieben noch GitHub Actions, CloudPanel und den
Hetzner-Server. Nichts davon trifft nach dem Umzug auf den VPS noch zu.

Zwei Fallstricke sind jetzt dokumentiert: .github/workflows/ darf nicht wieder
angelegt werden, weil Forgejo Actions es mitliest, und neue Dateien im Root
werden nur ausgeliefert, wenn ihr Pfad in der Traefik-Regel steht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 09:19:37 +02:00

61 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CODEX_NOTES.md Deploy & Betrieb (Copy/Paste für Codex)
## Ziel
Statische Landingpage soll automatisch bei jedem Push auf `main` nach `go.vanityontour.de` deployed werden.
## Repo-Struktur
- `index.html`
- `assets/css/style.css`
- `assets/img/*`
- `robots.txt`
- `.forgejo/workflows/deploy.yml`
## Wo die Seite liegt
Seit Juli 2026 auf dem **Hostinger-VPS** (72.62.158.29), nicht mehr auf dem
Hetzner-Server. Ausgeliefert von einem nginx-Container aus dem Shlink-Stack:
- Zielverzeichnis auf dem Host: `/docker/shlink/landingpage`
- Container `shlink-landingpage` mountet es read-only
- Davor Traefik mit Let's-Encrypt-Zertifikat
`go.vanityontour.de` teilt sich die Domain mit Shlink. Traefik entscheidet nach
Pfad, die Landingpage hat die höhere Priorität:
| Pfad | Ziel |
| --- | --- |
| `/`, `/assets/*`, `/robots.txt`, `/favicon.*`, `/sitemap.xml`, `/CNAME` | diese Seite |
| alles andere | Shlink-Kurzlink |
**Wichtig:** Eine neue Datei im Repo-Root wird nur ausgeliefert, wenn ihr Pfad
in der Traefik-Regel steht. Sonst landet der Aufruf bei Shlink und wird auf `/`
umgeleitet. Die Regel steht in der `docker-compose.yml` des Shlink-Projekts.
## Deployment-Mechanik
Forgejo Actions. Der Runner `vps-runner` läuft als Container `act_runner` auf
demselben VPS:
1. Job startet in einem `node:20-alpine`-Container
2. `/docker/shlink/landingpage` wird als `/target` in den Job gemountet
3. `rsync -a --delete` vom Checkout nach `/target`
4. Smoke-Test gegen die Live-URL
Kein SSH, kein Deploy-Key, keine Secrets nötig der Runner steht bereits auf
dem Zielhost. Das Mounten ist in `/docker/act_runner/config.yaml` unter
`container.valid_volumes` freigegeben.
## Kein GitHub Actions mehr
Der frühere Workflow `.github/workflows/deploy.yml` deployte per rsync auf den
Hetzner-Server und ist entfernt. `.github/workflows/` darf hier nicht wieder
angelegt werden Forgejo Actions wertet dieses Verzeichnis ebenfalls aus und
würde den Job doppelt starten.
## DNS
- `go.vanityontour.de` → A-Record auf `72.62.158.29`
- **Kein AAAA-Record.** Ein alter AAAA auf den Hetzner-Server hat die
Let's-Encrypt-Validierung blockiert, weil IPv6 Vorrang hat.
- Zertifikat kommt von Traefik, nicht mehr von CloudPanel
## Hinweise
- OpenGraph Bild: ersetze `assets/img/og.jpg` (1200x630)
- Links in `index.html` aktualisieren (App Store, GitHub Repo URLs, Social URLs)
- Runner-Logs: `ssh hostingervps 'docker logs act_runner'`