All checks were successful
Deploy go.vanityontour.de / deploy (push) Successful in 6s
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>
61 lines
2.4 KiB
Markdown
61 lines
2.4 KiB
Markdown
# 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'`
|