Customer Installer – Proxmox LXC n8n Stack
Dieses Projekt automatisiert die Bereitstellung isolierter Kunden-Instanzen mit n8n, PostgreSQL und pgvector in Proxmox LXC Containern.
Projektstruktur
customer-installer/
├── install.sh # Hauptskript auf dem Proxmox-Host
├── setupowner.sh # Setup-Skript, das innerhalb des LXC ausgeführt wird
├── libsupabase.sh # Helper für Datenbank-Operationen (Mockup/Basis)
├── templates/
│ └── docker-compose.yml # n8n + PostgreSQL + pgvector Stack
└── README.md
Funktionen
install.sh (Host-Ebene)
- Verarbeitet Argumente: --storage, --bridge, --ip, --vlan
- Generiert eine CTID basierend auf dem aktuellen Zeitstempel
- Lädt das Debian 12 Template herunter
- Erstellt den LXC Container mit:
- Unprivilegierten Einstellungen
- Aktiviertem Nesting
- VLAN Tag Konfiguration
- Konfiguriert APT-Proxy im LXC
- Überträgt setupowner.sh und docker-compose.yml in den LXC
- Startet den LXC und führt setupowner.sh aus
setupowner.sh (LXC-Ebene)
- Installiert Docker & Docker Compose Plugin (verwendet den Docker-Proxy)
- Erstellt Verzeichnisse für Daten-Persistenz
- Generiert sichere Zufallspasswörter für PostgreSQL und n8n-Encryption
- Startet den Docker-Stack
- Wartet, bis n8n bereit ist
- Gibt alle Zugangsdaten als JSON-Objekt aus
docker-compose.yml
- Services: db (ankane/pgvector:latest), n8n (docker.n8n.io/n8nio/n8n:latest)
- Volumes für Datenpersistenz
- Umgebungsvariablen für DB-Anbindung und Zeitzone (Europe/Berlin)
Ausführung
Auf dem Proxmox-Host:
chmod +x install.sh
./install.sh --storage local --bridge vmbr0 --vlan 90
Parameter:
--storage: Speicherort für den Container (Standard: local)--bridge: Netzwerkbrücke (Standard: vmbr0)--ip: Statische IP (optional)--vlan: VLAN Tag (optional)
Output (JSON)
Das Skript gibt ein JSON-Objekt mit folgenden Informationen aus:
{
"ctid": "100",
"ip": "192.168.45.100",
"postgres_password": "a1b2c3d4e5f67890",
"n8n_encryption_key": "09f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4"
}
Sicherheit & Compliance
- Alle Instanzen sind isoliert
- Fehlerbehandlung mit set -e
- Verwendung sicherer Zufallspasswörter
- VLAN Integration für Netzwerksicherheit
Description
Languages
Shell
88.3%
PLpgSQL
11.7%