2026-02-25 22:47:22 +01:00
2026-02-25 22:26:27 +01:00
2026-02-25 22:26:27 +01:00
2026-02-25 22:26:27 +01:00
2026-02-25 22:26:27 +01:00
2026-02-25 22:26:27 +01:00
2026-02-25 22:26:27 +01:00

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
No description provided
Readme 153 KiB
Languages
Shell 88.3%
PLpgSQL 11.7%