From 620f27559568b7e09538109d1634e7ebec02f93b Mon Sep 17 00:00:00 2001 From: Erik Thiele Date: Sun, 19 Jul 2026 19:14:58 +0200 Subject: [PATCH] Document Proxmox LXC installation in README Add usage instructions, raw-link one-liner, config table, and post-install steps for the helper script. Co-Authored-By: Claude Sonnet 5 --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5c630bb..94bc169 100644 --- a/README.md +++ b/README.md @@ -63,16 +63,80 @@ app/ ## Proxmox -Für den Betrieb in einem Proxmox-VE-LXC-Container gibt es ein Helper-Script, -das einen Debian-12-Container anlegt und LinkVault darin als systemd-Service -einrichtet. Auf dem Proxmox-Host ausführen: +Für den Betrieb in einem Proxmox-VE-LXC-Container gibt es ein Helper-Script +(`scripts/proxmox/install-linkvault.sh`). Es legt automatisch einen +Debian-12-Container an und richtet LinkVault darin als systemd-Service ein. + +### Installation + +Auf dem **Proxmox-Host** (als root) ausführen: + +```bash +bash <(curl -fsSL https://gitea.teamthiele.de/ethiele/linkvault/raw/branch/main/scripts/proxmox/install-linkvault.sh) +``` + +Alternativ, falls das Repo bereits lokal ausgecheckt ist: ```bash bash scripts/proxmox/install-linkvault.sh ``` -Konfiguration (Container-ID, IP, Ressourcen, ...) über Umgebungsvariablen, -siehe Kommentare im Script. +Das Script: +1. lädt bei Bedarf das Debian-12-LXC-Template herunter, +2. erstellt einen unprivilegierten LXC-Container, +3. installiert darin Python, klont das Repo nach `/opt/linkvault`, +4. legt ein venv an und installiert die Abhängigkeiten, +5. erzeugt eine `.env` mit zufälligem `SECRET_KEY`, +6. richtet LinkVault als systemd-Service (`linkvault.service`) ein und startet ihn. + +Am Ende gibt das Script die URL des Containers sowie das generierte +root-Passwort aus. + +### Konfiguration + +Alle Einstellungen lassen sich per Umgebungsvariable vor dem Aufruf setzen +(Defaults siehe Kopf des Scripts): + +| Variable | Bedeutung | Default | +|-------------------|-----------------------------------------|---------------------------------| +| `CTID` | Container-ID | nächste freie ID | +| `CT_HOSTNAME` | Hostname des Containers | `linkvault` | +| `CT_DISK_GB` | Größe der Root-Disk in GB | `8` | +| `CT_MEMORY_MB` | RAM in MB | `1024` | +| `CT_SWAP_MB` | Swap in MB | `512` | +| `CT_CORES` | CPU-Kerne | `2` | +| `CT_BRIDGE` | Netzwerk-Bridge | `vmbr0` | +| `CT_IP` | Statische IP (`192.168.1.50/24`) oder `dhcp` | `dhcp` | +| `CT_GW` | Gateway (nur bei statischer IP nötig) | – | +| `CT_STORAGE` | Storage für die Root-Disk | `local-lvm` | +| `TEMPLATE_STORAGE`| Storage für das LXC-Template | `local` | +| `CT_PASSWORD` | root-Passwort des Containers | zufällig generiert | +| `REPO_URL` | Git-Repo, das geklont wird | `.../ethiele/linkvault.git` | +| `APP_PORT` | Port, auf dem uvicorn lauscht | `8000` | + +Beispiel mit statischer IP und fester Container-ID: + +```bash +CTID=150 CT_HOSTNAME=linkvault CT_IP=192.168.1.50/24 CT_GW=192.168.1.1 \ + bash <(curl -fsSL https://gitea.teamthiele.de/ethiele/linkvault/raw/branch/main/scripts/proxmox/install-linkvault.sh) +``` + +### Nach der Installation + +In `/opt/linkvault/.env` **innerhalb des Containers** den `OPENAI_API_KEY` +eintragen (siehe [Schnellstart](#schnellstart) für weitere `.env`-Optionen), +danach den Dienst neu starten: + +```bash +pct exec -- systemctl restart linkvault +``` + +Nützliche Befehle: + +```bash +pct exec -- systemctl status linkvault # Status prüfen +pct exec -- journalctl -u linkvault -f # Logs verfolgen +``` ## Hinweise für den Produktivbetrieb