Deployment-Doku auf den neuen Stand gebracht
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>
This commit is contained in:
Oliver 2026-07-27 09:19:37 +02:00
parent 4376918e73
commit 94d3a2bae5
No known key found for this signature in database
2 changed files with 68 additions and 58 deletions

View file

@ -18,47 +18,34 @@ In `index.html` sind ein paar **Platzhalter-Links** (z.B. GitHub Repo / App-Stor
**🚀 Automatisches Deployment aktiv!** Bei jedem Push auf `main` wird die Seite automatisch auf https://go.vanityontour.de deployed.
# Deployment via GitHub Actions (SSH + rsync)
# Deployment via Forgejo Actions
Die Workflow-Datei liegt hier:
`.github/workflows/deploy.yml`
Die Workflow-Datei liegt hier: `.forgejo/workflows/deploy.yml`
## Voraussetzungen auf dem Server
- SSH-Zugriff
- Zielverzeichnis existiert (z.B. CloudPanel):
- `/home/cloudpanel/htdocs/go.vanityontour.de/` (häufig)
- oder dein eigener Pfad
Der Runner (`act_runner` auf dem Hostinger-VPS) steht bereits auf dem Zielhost.
Der Job mountet das Zielverzeichnis direkt in seinen Container und schreibt per
`rsync` hinein **kein SSH, kein Deploy-Key, keine Secrets**.
- `rsync` installiert:
- Debian/Ubuntu: `sudo apt-get update && sudo apt-get install -y rsync`
## GitHub Secrets anlegen (Repo → Settings → Secrets and variables → Actions)
- `SSH_HOST` (z.B. `your-server.example`)
- `SSH_USER` (z.B. `root` oder `cloudpanel`)
- `SSH_PORT` (z.B. `22`)
- `SSH_PRIVATE_KEY` (private key für den Deploy-User)
- `DEPLOY_PATH` (z.B. `/home/cloudpanel/htdocs/go.vanityontour.de/`)
## DNS (go.vanityontour.de)
Setze einen **A-Record** (oder AAAA) auf die Server-IP.
Alternativ ein CNAME auf eine passende Ziel-Subdomain, wenn du das so betreibst.
## Nginx (Beispiel)
Wenn du Nginx selbst konfigurierst:
```nginx
server {
server_name go.vanityontour.de;
root /home/cloudpanel/htdocs/go.vanityontour.de;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
```
Push auf main -> git.giertz.biz -> act_runner -> /docker/shlink/landingpage
-> Smoke-Test gegen die Live-URL
```
Danach:
```bash
sudo nginx -t && sudo systemctl reload nginx
```
Ausgeliefert wird das Verzeichnis vom Container `shlink-landingpage`
(nginx, read-only gemountet) hinter Traefik.
Details, inklusive der Pfad-Aufteilung zwischen Landingpage und Shlink:
siehe `CODEX_NOTES.md`.
## Wichtig
- **`.github/workflows/` nicht wieder anlegen.** Forgejo Actions wertet dieses
Verzeichnis ebenfalls aus der Job würde doppelt laufen.
- **Neue Dateien im Root** werden nur ausgeliefert, wenn ihr Pfad in der
Traefik-Regel steht (`/`, `/assets/*`, `/robots.txt`, `/favicon.*`,
`/sitemap.xml`, `/CNAME`). Andernfalls greift Shlink und leitet auf `/` um.
## DNS
`go.vanityontour.de` → A-Record auf `72.62.158.29`, kein AAAA.
Das Zertifikat stellt Traefik per Let's Encrypt aus.