docs: krisenvorrat -> bollwerk in allen Skill- und Doku-Dateien

/opt/krisenvorrat/ ist veraltet. Korrekt: /opt/bollwerk/
Regel jetzt auch in copilot-instructions.md festgehalten.
This commit is contained in:
Jens Reinemann 2026-05-18 00:28:40 +02:00
parent 8c0db56223
commit 09777238c9
4 changed files with 31 additions and 21 deletions

View file

@ -28,3 +28,13 @@
- `git push` **muss vor der Ausführung kurz angekündigt werden** (geänderte Dateien + Commit-Message anzeigen). Kein explizites „Ja" nötig aber der User muss die Möglichkeit haben, es abzubrechen.
- **Weiterhin verboten ohne explizite User-Bestätigung:** `git reset --hard`, `git rebase`, `git push --force`, `git revert` auf bereits gepushte Commits, Branch-Löschungen.
- Diese Regel gilt für alle Agenten, Prompts und direkte Chat-Interaktionen in diesem Workspace.
---
## VPS-Verzeichnis (PFLICHT)
**Das App-Verzeichnis auf dem VPS heißt `/opt/bollwerk/` niemals `/opt/krisenvorrat/`.**
- Der String `krisenvorrat` ist vollständig veraltet und darf **nirgendwo** verwendet werden: nicht in Pfaden, nicht in Namen, nicht in Kommentaren, nicht in Befehlen.
- Korrekt: `/opt/bollwerk/`, `bollwerk-server`, `bollwerk.online`
- Falsch: `/opt/krisenvorrat/`, `krisenvorrat`

View file

@ -17,13 +17,13 @@ Dieser Skill deckt den vollständigen Workflow ab, um eine neue App-Version auf
```
App (lokal) VPS (bollwerk.online)
───────────── ─────────────────────
app/build.gradle.kts /opt/krisenvorrat/
app/build.gradle.kts /opt/bollwerk/
versionCode / versionName ├── docker-compose.yml (BOLLWERK_APP_VERSION_CODE/NAME)
├── data/app-latest.apk (statisch ausgeliefert)
./gradlew assembleDebug └── Server-Container (Ktor)
→ app-debug.apk ├── GET / → Homepage mit QR-Code
├── GET /api/version → JSON {versionCode, versionName, apkUrl}
scp → /opt/krisenvorrat/data/ └── GET /static/* → Dateien aus data/
scp → /opt/bollwerk/data/ └── GET /static/* → Dateien aus data/
```
### Wie die Update-Prüfung funktioniert
@ -59,7 +59,7 @@ Die APK liegt danach unter: `app/build/outputs/apk/debug/app-debug.apk`
### Schritt 3 APK auf VPS hochladen
```powershell
scp app/build/outputs/apk/debug/app-debug.apk root@195.246.231.210:/opt/krisenvorrat/data/app-latest.apk
scp app/build/outputs/apk/debug/app-debug.apk root@195.246.231.210:/opt/bollwerk/data/app-latest.apk
```
**Voraussetzung:** SSH-Agent muss laufen und Key geladen sein (siehe vps-deploy Skill).
@ -70,19 +70,19 @@ Die Version wird über Environment-Variablen in der `docker-compose.yml` auf dem
```powershell
# Neue Werte per sed in docker-compose.yml eintragen
ssh root@195.246.231.210 "cd /opt/krisenvorrat && sed -i 's/BOLLWERK_APP_VERSION_CODE=.*/BOLLWERK_APP_VERSION_CODE=<neuer_code>/' docker-compose.yml && sed -i 's/BOLLWERK_APP_VERSION_NAME=.*/BOLLWERK_APP_VERSION_NAME=<neuer_name>/' docker-compose.yml"
ssh root@195.246.231.210 "cd /opt/bollwerk && sed -i 's/BOLLWERK_APP_VERSION_CODE=.*/BOLLWERK_APP_VERSION_CODE=<neuer_code>/' docker-compose.yml && sed -i 's/BOLLWERK_APP_VERSION_NAME=.*/BOLLWERK_APP_VERSION_NAME=<neuer_name>/' docker-compose.yml"
```
Falls die Env-Vars noch nicht in der docker-compose.yml stehen, müssen sie einmalig hinzugefügt werden:
```powershell
ssh root@195.246.231.210 "cd /opt/krisenvorrat && sed -i '/BOLLWERK_JWT_SECRET/a\ - BOLLWERK_APP_VERSION_CODE=<code>\n - BOLLWERK_APP_VERSION_NAME=<name>' docker-compose.yml"
ssh root@195.246.231.210 "cd /opt/bollwerk && sed -i '/BOLLWERK_JWT_SECRET/a\ - BOLLWERK_APP_VERSION_CODE=<code>\n - BOLLWERK_APP_VERSION_NAME=<name>' docker-compose.yml"
```
### Schritt 5 Server neustarten
```powershell
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose up -d"
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose up -d"
```
### Schritt 6 Verifizieren

View file

@ -23,7 +23,7 @@ Deployt den Bollwerk Ktor-Server auf den 1984 Hosting VPS in Island.
| Disk | 50 GB SSD (Upgrade Mai 2026) |
| Transfer | 1 TB/Monat |
| Docker | Docker CE 29.x + docker-compose-plugin |
| App-Verzeichnis | `/opt/krisenvorrat/` |
| App-Verzeichnis | `/opt/bollwerk/` |
---
@ -73,23 +73,23 @@ cd x:\bollwerk
.\gradlew.bat :server:buildFatJar
# 2. JAR auf VPS kopieren
scp x:\bollwerk\server\build\libs\server.jar root@195.246.231.210:/opt/krisenvorrat/server.jar
scp x:\bollwerk\server\build\libs\server.jar root@195.246.231.210:/opt/bollwerk/server.jar
# 3. Container neu bauen und starten
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose up -d --build"
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose up -d --build"
```
### Nur Container neustarten (ohne neues JAR)
```powershell
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose restart"
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose restart"
```
---
## Docker-Konfiguration auf dem VPS
### Dockerfile (`/opt/krisenvorrat/Dockerfile`)
### Dockerfile (`/opt/bollwerk/Dockerfile`)
```dockerfile
FROM eclipse-temurin:21-jre-alpine
@ -101,7 +101,7 @@ ENTRYPOINT ["java", "-Xmx768m", "-jar", "server.jar"]
**Hinweis:** `-Xmx768m` begrenzt den JVM-Heap (VPS hat 2 GB RAM seit Upgrade Mai 2026).
### docker-compose.yml (`/opt/krisenvorrat/docker-compose.yml`)
### docker-compose.yml (`/opt/bollwerk/docker-compose.yml`)
```yaml
services:
@ -192,9 +192,9 @@ ssh root@195.246.231.210 "curl -s http://localhost:8080/api/health"
### Container stoppen/starten
```powershell
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose stop"
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose start"
ssh root@195.246.231.210 "cd /opt/krisenvorrat && docker compose down" # Container entfernen
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose stop"
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose start"
ssh root@195.246.231.210 "cd /opt/bollwerk && docker compose down" # Container entfernen
```
### RAM-Nutzung prüfen
@ -205,7 +205,7 @@ ssh root@195.246.231.210 "free -h && echo '---' && docker stats --no-stream"
### Daten-Persistenz
Die SQLite-Datenbank wird unter `/opt/krisenvorrat/data/` auf dem Host gemountet und überlebt Container-Neustarts.
Die SQLite-Datenbank wird unter `/opt/bollwerk/data/` auf dem Host gemountet und überlebt Container-Neustarts.
---
@ -214,5 +214,5 @@ Die SQLite-Datenbank wird unter `/opt/krisenvorrat/data/` auf dem Host gemountet
- **1 GB RAM:** JVM-Heap auf 384 MB begrenzt. Kein Spielraum für weitere Dienste.
- **Kein HTTPS:** Server läuft aktuell nur auf HTTP Port 8080. Für HTTPS → Caddy als Reverse Proxy einrichten.
- **Kein CI/CD:** Deployment ist manuell (JAR bauen → scp → docker compose up). Ggf. GitHub Actions Pipeline ergänzen.
- **Dockerfile lokal:** Das Dockerfile auf dem VPS (`/opt/krisenvorrat/Dockerfile`) ist ein schlankes Runtime-Only-Image. Das Multi-Stage-Dockerfile im Repo-Root ist für lokale Builds gedacht.
- **Dockerfile lokal:** Das Dockerfile auf dem VPS (`/opt/bollwerk/Dockerfile`) ist ein schlankes Runtime-Only-Image. Das Multi-Stage-Dockerfile im Repo-Root ist für lokale Builds gedacht.
- **SSH-Escape-Problem:** Beim Schreiben von Dateien via SSH-Heredoc werden JSON-Quotes zerstört. Dateien immer lokal erstellen und per `scp` hochladen.

View file

@ -70,7 +70,7 @@ apt-get install -y caddy
```
/opt/
├── krisenvorrat/ # Bollwerk App-Stack
├── bollwerk/ # Bollwerk App-Stack
│ ├── Dockerfile # Bollwerk-Server Image
│ ├── docker-compose.yml # App + DB + Backup
│ ├── server.jar # Aktuelles Server-JAR
@ -92,7 +92,7 @@ apt-get install -y caddy
---
## App-Stack: `/opt/krisenvorrat/`
## App-Stack: `/opt/bollwerk/`
### docker-compose.yml
@ -288,11 +288,11 @@ ssh root@195.246.231.210
```
9. **App-Verzeichnis anlegen:**
```bash
mkdir -p /opt/krisenvorrat/backup /opt/krisenvorrat/data
mkdir -p /opt/bollwerk/backup /opt/bollwerk/data
```
10. **Dateien hochladen:** `Dockerfile`, `docker-compose.yml`, `backup/Dockerfile`, `backup/backup.sh`, `server.jar`
11. **Secrets in `docker-compose.yml` eintragen** (`BOLLWERK_JWT_SECRET`, Passwörter)
12. **App-Stack starten:** `cd /opt/krisenvorrat && docker compose up -d --build`
12. **App-Stack starten:** `cd /opt/bollwerk && docker compose up -d --build`
13. **Mail-Verzeichnis anlegen:** `mkdir -p /opt/mail`
14. **Mail `docker-compose.yml` hochladen** und starten: `cd /opt/mail && docker compose up -d`
15. **Backup aus altem Server wiederherstellen** (falls vorhanden):