c17aab3d0a
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
131 lines
4.4 KiB
Markdown
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.
|