73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
# 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:
|
||
```bash
|
||
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:
|
||
```json
|
||
{
|
||
"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 |