karim 90fb096ae5 feat: rapport-stack-lxc.sh — All-in-One-Stack auf Proxmox
Deployt RAPPORT-STACK (Supabase + Rapport-Frontend + Marketing-Website +
RAPPORT-HOST + Admin-Cockpit) in einen LXC. Klont alle 4 Repos nach
/opt/rapport (private HOST/STACK via GITEA_TOKEN), generiert Secrets +
ANON/SERVICE-Keys, setzt LAN-URLs, baut + startet den Stack.

Workflow wie openbureau: /opt/rapport/update.sh = git pull (alle Repos) +
sync-migrations + docker compose up -d --build → Änderungen live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:34:48 +02:00

RAPPORT-SERVER-PROXMOX-LXC

⚠️ Status: Alpha. Baut auf SERVER-CONTAINER 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.

Zwei Scripts

Script Was es deployt
rapport-lxc.sh Nur der Rapport-Self-Hosting-Stack (SERVER-CONTAINER: Supabase + Rapport-Frontend)
rapport-stack-lxc.sh Die ganze Hosting-Plattform (RAPPORT-STACK: Supabase + Rapport-Frontend + Marketing-Website + RAPPORT-HOST Hosting-/Abo-Plattform + Admin-Cockpit)

Hosting-Plattform deployen (RAPPORT-STACK)

Auf der Proxmox-Host-Shell (RAPPORT-HOST/RAPPORT-STACK sind privat → Gitea-Token nötig):

GITEA_TOKEN=dein_token bash -c "$(curl -fsSL http://git.kgva.ch/karim/RAPPORT-SERVER-PROXMOX-LXC/raw/branch/main/rapport-stack-lxc.sh)"

Token erstellen: Gitea → Einstellungen → Anwendungen → Token generieren (Scope read:repository).

Danach erreichbar:

  • Hosting-Plattform http://<ip>:8787 (Marketing/Login/Konto)
  • Admin-Cockpit http://<ip>:8787/admin/ (Passwort wird generiert, am Ende ausgegeben)
  • Rapport-App http://<ip>:8080 · API http://<ip>:8000

Arbeits-Workflow wie bei openbureau — Änderungen live holen:

pct exec <CTID> -- bash -c 'cd /opt/rapport && ./update.sh'

update.sh macht git pull in allen vier Repos, synct Migrations und docker compose up -d --build → deine Änderungen sind live.


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 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. Holt das Frontend-Image aus der Gitea-Registry (rapport-app:main); falls die Registry nicht erreichbar ist, baut es als Fallback aus Dockerfile.app
  9. 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:

PVE_HOST=root@<proxmox-ip> bash deploy-local.sh

Mit Parametern:

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 -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:

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

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):

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.

S
Description
Ein-Befehl-Installer: Rapport-Server-Stack in einen Proxmox-LXC deployen
Readme 79 KiB
Languages
Shell 100%