From e688eaa2652325ac65d6cf7024acbc2f7e140536 Mon Sep 17 00:00:00 2001 From: Pascal Scholz Date: Sat, 12 Sep 2026 03:32:49 +0200 Subject: [PATCH] Add ready-to-run copy-paste blocks for server deployment (Teil B) Documents that Teil A is verified (build tested locally) and provides exact commands for deploy key, docker-compose service, Caddyfile block, and DNS steps so the server-side rollout needs no improvisation. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01T8eccP4XnXFJvpSYMm26as --- DEPLOYMENT.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 271d878..e94b4a6 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -203,6 +203,78 @@ cd ~/stack && docker compose build website && docker compose up -d website --- +--- + +## Status + +**Teil A ist erledigt und geprüft:** +- `astro.config.mjs` → `site: 'https://larpaso.de'`, statischer Output (Standard, kein Adapter). +- `Dockerfile`, `nginx.conf`, `.dockerignore` liegen im Repo, entsprechen exakt der Vorlage oben. +- Lokaler `npm run build` läuft fehlerfrei durch (4 statische Seiten, `dist/` wird erzeugt). +- Alles committet und nach `https://git.larpaso.de/pascal/larpaso-website` gepusht. + +**Teil B steht noch aus** – das macht Pascal selbst auf dem Server. Fertige Copy-Paste-Blöcke dafür: + +### B1 – Deploy-Key erzeugen (als `deploy` auf dem Server) +```bash +ssh-keygen -t ed25519 -C "server-deploy@larpaso" -f ~/.ssh/id_ed25519_larpaso-website -N "" +cat ~/.ssh/id_ed25519_larpaso-website.pub +``` +Den ausgegebenen Public Key in Forgejo eintragen: `https://git.larpaso.de/pascal/larpaso-website/settings/keys` +→ **Deploy-Schlüssel hinzufügen**, einfügen, **schreibgeschützt** lassen. + +### B2 – Repo klonen +```bash +mkdir -p ~/sites +GIT_SSH_COMMAND="ssh -i ~/.ssh/id_ed25519_larpaso-website" \ + git clone ssh://git@git.larpaso.de:2222/pascal/larpaso-website.git ~/sites/larpaso-website +``` + +### B3 – Service in `~/stack/docker-compose.yml` ergänzen +Unter `services:` einfügen (Einrückung an bestehende Datei anpassen): +```yaml + website: + build: + context: /home/deploy/sites/larpaso-website + restart: unless-stopped + networks: [web] +``` + +### B4 – Caddy-Block in `~/stack/caddy/Caddyfile` ergänzen +```caddyfile +larpaso.de { + reverse_proxy website:80 +} + +www.larpaso.de { + redir https://larpaso.de{uri} permanent +} +``` +(Den `www`-Block nur, wenn auch ein DNS-A-Eintrag für `www` existiert.) + +### B5 – DNS bei IONOS +- A-Eintrag `@` → Server-IPv4 (bestehenden `@`-Eintrag ersetzen). +- Optional A-Eintrag `www` → Server-IPv4. +- Prüfen: `nslookup larpaso.de` muss die Server-IP liefern, bevor B6 läuft. + +### B6 – Bauen & starten +```bash +cd ~/stack +docker compose build website +docker compose up -d website +docker compose restart caddy +docker compose logs -f caddy # auf "certificate obtained successfully" für larpaso.de warten +``` +Danach `https://larpaso.de` im Browser prüfen. + +### B7 – Künftige Updates +```bash +cd ~/sites/larpaso-website && git pull +cd ~/stack && docker compose build website && docker compose up -d website +``` + +--- + ## Sicherheits-Leitplanken (Zusammenfassung) - Keine Secrets ins Repo/Dockerfile/Logs. - Kein zweiter Reverse Proxy, keine Belegung von 80/443 durch den Website-Dienst.