Files
RAPPORT-SERVER-PROXMOX-LXC/README.md
T

131 lines
4.4 KiB
Markdown

# RAPPORT-SERVER-PROXMOX-LXC
> ⚠️ **Status: Alpha.** Baut auf [SERVER-CONTAINER](https://git.kgva.ch/karim/rapport-server) auf, das selbst noch nicht end-to-end läuft (siehe dortige „Bekannte offene Punkte"). Erst zum Testen gedacht, nicht für Produktion.
Ein-Befehl-Installer, der den Rapport-Self-Hosting-Stack in einen **Proxmox-LXC-Container** deployt. Für Leute, die einen Proxmox-Host haben und Rapport nicht auf dem Mac (SERVER-APP), sondern auf dem Server laufen lassen wollen.
Der vierte Deployment-Pfad der Rapport-Familie:
| Repo | Zielgruppe |
|---|---|
| `APP` | Endnutzer (Desktop-Client) |
| `SERVER-APP` | Mac-Mini-Selfhost per Doppelklick (Tauri) |
| `SERVER-CONTAINER` | Docker-Compose von Hand (Tech-affin) |
| **`SERVER-PROXMOX-LXC`** | **Proxmox-Homelab — ein Befehl, fertiger Container** |
---
## Was das Script macht
Läuft auf der **Proxmox-VE-Host-Shell** und:
1. Lädt das Debian-12-Template (falls nicht vorhanden)
2. Erstellt einen **unprivilegierten** LXC mit `nesting=1,keyctl=1` (nötig für Docker)
3. Installiert Docker + Node im Container
4. Klont [SERVER-CONTAINER](https://git.kgva.ch/karim/rapport-server) nach `/opt/rapport`
5. Generiert zufällige `POSTGRES_PASSWORD` + `JWT_SECRET` und daraus passende `ANON_KEY` / `SERVICE_ROLE_KEY`
6. Setzt `SITE_URL` / `API_EXTERNAL_URL` auf die LAN-IP des Containers
7. Holt die DB-Migrations (`sync-migrations.sh`)
8. Startet den Stack mit `docker compose up -d`
---
## Benutzung
### A) Local-Deploy vom Mac (zum Testen, ohne Gitea) ← empfohlen für jetzt
Schiebt die **lokalen** Working-Copies von `SERVER-CONTAINER` + den APP-Migrations
per scp/`pct push` in den Container — nichts muss vorher auf Gitea gepusht sein.
Auf deinem **Mac**, im Repo-Verzeichnis:
```bash
PVE_HOST=root@<proxmox-ip> bash deploy-local.sh
```
Mit Parametern:
```bash
PVE_HOST=root@192.168.1.10 RAM_MB=8192 NET_IP=192.168.1.50/24 NET_GW=192.168.1.1 \
bash deploy-local.sh
```
Voraussetzung: SSH-Zugang als root auf den Proxmox-Host. `deploy-local.sh` erwartet
die Schwester-Repos unter `~/RAPPORT/SERVER-CONTAINER` und `~/RAPPORT/APP`
(überschreibbar via `STACK_DIR` / `APP_DIR`).
### B) Ein-Befehl vom Gitea (wenn dieses Repo gepusht ist)
Auf der **Proxmox-Host-Shell** (als root):
```bash
bash -c "$(curl -fsSL http://git.kgva.ch/karim/RAPPORT-SERVER-PROXMOX-LXC/raw/branch/main/rapport-lxc.sh)"
```
Es erscheint ein **whiptail-Menü** (Standard / Erweitert) zum Setzen von ID,
CPU, RAM, Disk und Netzwerk — wie bei den Proxmox-Community-Scripts. Danach
erreichbar unter `http://<container-ip>:8080`.
> Das Menü erscheint nur auf einem echten Terminal. Über SSH/Pipe (Variante A)
> läuft alles non-interaktiv über die Env-Vars. Mit `NONINTERACTIVE=1` lässt
> sich das Menü auch interaktiv abschalten.
### Parameter (per Env-Var)
Alle Defaults lassen sich überschreiben:
```bash
RAM_MB=8192 DISK_GB=30 CT_HOSTNAME=rapport \
NET_IP=192.168.1.50/24 NET_GW=192.168.1.1 \
bash -c "$(curl -fsSL http://git.kgva.ch/karim/RAPPORT-SERVER-PROXMOX-LXC/raw/branch/main/rapport-lxc.sh)"
```
| Var | Default | Bedeutung |
|---|---|---|
| `CTID` | nächste freie ID | Container-ID |
| `CT_HOSTNAME` | `rapport-server` | Hostname |
| `CORES` | `2` | CPU-Kerne |
| `RAM_MB` | `6144` | RAM (min. 4096 empfohlen) |
| `SWAP_MB` | `2048` | Swap |
| `DISK_GB` | `20` | Disk (Supabase-Images sind gross) |
| `BRIDGE` | `vmbr0` | Netzwerk-Bridge |
| `STORAGE` | `local-lvm` | Storage für rootfs |
| `TMPL_STORAGE` | `local` | Storage für Template-Cache |
| `NET_IP` | `dhcp` | `dhcp` oder z.B. `192.168.1.50/24` |
| `NET_GW` | — | Gateway (Pflicht bei statischer IP) |
| `PASSWORD` | — | root-Passwort im Container (leer = kein Login) |
| `REPO_URL` | `…/rapport-server.git` | Quelle des Compose-Stacks |
| `REPO_REF` | `main` | Branch/Tag |
---
## Voraussetzungen
- Proxmox VE 8.x
- ~20 GB freier Storage, ≥4 GB RAM für den Container
- Internet-Zugang im Container (Docker-Images + Repos pullen)
---
## Verwaltung
```bash
pct exec <CTID> -- bash -c 'cd /opt/rapport && docker compose ps' # Status
pct exec <CTID> -- bash -c 'cd /opt/rapport && docker compose logs -f' # Logs
pct enter <CTID> # Shell
```
Backup (Postgres):
```bash
pct exec <CTID> -- bash -c 'cd /opt/rapport && docker compose exec -T db pg_dumpall -U postgres' > backup.sql
```
Oder einfach den ganzen LXC per Proxmox-Backup (vzdump) sichern.
---
## Lizenz
GNU AGPL-3.0-or-later — identisch zur Rapport-Familie.