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.