Files
boti/README.md
T
root 6bb3a1d137 Update README to reflect current project state
Fixes outdated project structure (removed non-existent files, added
PostgREST, delete_nginx_proxy.sh, templates/, sql/, credentials/,
logs/). Expands automated steps to cover all 13 installer phases.
Removes links to documentation files that do not exist in the repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-07 19:43:44 +01:00

137 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Customer Installer Proxmox LXC n8n Stack
## Überblick
Dieses Projekt automatisiert die Bereitstellung **DSGVOkonformer KundenLXCs** auf einem **ProxmoxCluster**.
Pro Kunde wird **eine eigene LXC** erstellt, inklusive:
- Debian 12
- Docker + Docker Compose Plugin
- PostgreSQL + pgvector
- n8n (mit automatisch importiertem RAG-Workflow)
- PostgREST (Supabase-kompatible REST API)
- Vorbereitung für Reverse Proxy (OPNsense / NGINX)
- VLANAnbindung
- APT & DockerProxy (AptCacher NG)
Ziel: **reproduzierbare, schnelle und saubere KundenSetups**, vollständig skriptgesteuert.
---
## Architektur
```
Internet
OPNsense (os-nginx, TLS, Wildcard-Zertifikat)
VLAN 90
Proxmox LXC (Debian 12)
├── Docker
│ ├── n8n
│ ├── PostgreSQL (pgvector)
│ └── PostgREST
└── Kunden-Daten (isoliert)
```
---
## Voraussetzungen
### Proxmox Host
- Proxmox VE (Clusterfähig)
- Zugriff auf: `pct`, `pvesm`, `pveam`, `pvesh`
- Storage für LXCs (z. B. `local-zfs`)
- Bridge (z. B. `vmbr0`)
- VLANfähiges Netzwerk
### Netzwerk / Infrastruktur
- OPNsense Firewall (API auf Port 4444)
- VLAN (Standard: **VLAN 90**)
- WildcardZertifikat auf OPNsense
- osnginx Plugin aktiv
- Ollama: `http://192.168.45.3:11434`
- AptCacher NG (optional): `http://192.168.45.2:3142`
- Docker Registry Mirror: `http://192.168.45.2:5000`
---
## Projektstruktur
```
installer/
├── install.sh # Haupt-Installer
├── libsupabase.sh # Gemeinsame Bibliothek (Proxmox, n8n API, Generatoren)
├── delete_nginx_proxy.sh # OPNsense NGINX-Proxy löschen
├── RAGKI-BotPGVector.json # Standard n8n RAG-Workflow-Template
├── templates/
│ ├── docker-compose.yml # Referenz-Template
│ ├── reload-workflow.sh # Wird in CT deployed; lädt Workflow bei Neustart neu
│ └── n8n-workflow-reload.service # Systemd-Unit für Auto-Reload
├── sql/
│ ├── init_pgvector.sql # pgvector-Extension, documents-Tabelle, PostgREST-Rollen
│ └── botkonzept_schema.sql
├── credentials/ # Generierte Zugangsdaten pro Kunde (<hostname>.json)
└── logs/ # Install-Logs pro Kunde (<hostname>.log)
```
---
## Installation
```bash
# Minimal
bash install.sh --storage local-zfs --bridge vmbr0 --ip dhcp --vlan 90
# Mit allen Optionen
bash install.sh \
--storage local-zfs \
--bridge vmbr0 \
--ip dhcp \
--vlan 90 \
--base-domain userman.de \
--n8n-owner-email admin@userman.de \
--workflow-file RAGKI-BotPGVector.json \
--debug
# NGINX-Proxy für eine Instanz löschen
bash delete_nginx_proxy.sh --ctid <ctid> [--dry-run] [--debug]
```
### Ausgabe
Im Normalbetrieb (`DEBUG=0`) gibt `install.sh` ein kompaktes JSON auf stdout aus und schreibt alle Logs in `logs/<hostname>.log`. Mit `--debug` erscheinen Logs auf stderr und das JSON wird formatiert ausgegeben.
---
## Automatisierte Schritte
1. Preflight-Prüfung (Proxmox-Tools, Storage, Bridge)
2. Debian-12-Template herunterladen (falls nicht vorhanden)
3. CTID-Generierung: `unix_timestamp - 1.000.000.000` → Hostname: `sb-<unix_timestamp>`
4. LXC erstellen + starten + IP ermitteln
5. Docker + Compose Plugin installieren, Locales setzen
6. Secrets generieren (Passwörter, JWT, Encryption Key)
7. `.env`, `docker-compose.yml` und SQL-Init-Skripte in CT schreiben
8. Stack starten (`postgres` + `postgrest` + `n8n`)
9. n8n Owner-Account anlegen
10. n8n-Credentials + RAG-Workflow importieren und aktivieren
11. Workflow-Auto-Reload via systemd einrichten
12. OPNsense NGINX Reverse Proxy konfigurieren (falls `setup_nginx_proxy.sh` vorhanden)
13. JSON-Ausgabe + Zugangsdaten in `credentials/<hostname>.json` speichern
---
## Status
✅ produktiv einsetzbar
✅ RAG-Workflow (Chat + PDF-Upload) automatisch deployed
✅ Workflow-Auto-Reload bei LXC-Neustart
🟡 Reverse Proxy Automatisierung (setup_nginx_proxy.sh) separat
---
## Lizenz / Hinweis
Internes Projekt kein Public Release.