Files
Auto-Outline-Doku-Proxmox-I…/README.md
T

62 lines
3.7 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.
# Auto Outline Doku Proxmox Inventory
Automatischer Abgleich zwischen Proxmox-Inventar und der Homelab-Dokumentation in Outline.
## Inhalt
- `scripts/proxmox-inventory.sh` Text-Ausgabe des Proxmox-Inventars (VMID, Status, Ressourcen, Netzwerk inkl. Subnetzmaske/Gateway), zum manuellen Ausführen und Copy-Paste.
- `scripts/proxmox-inventory-json.sh` Baut dieselben Daten als JSON und sendet sie per `curl` an einen n8n-Webhook. Unterstützt `--dry-run`, `--print-only` und `--vmids=101,102,...` zum gezielten Testen einzelner Container/VMs.
- `n8n-workflows/auto-outline-doku-proxmox-inventory.json` Exportierter n8n-Workflow, der die vom Script gesendeten Daten mit Outline abgleicht: Fakten (RAM, CPU, Swap, Disk, IP, Gateway, Subnetz, MAC) patchen, neue VMIDs automatisch als Outline-Seite anlegen, und eine ntfy-Benachrichtigung mit Zusammenfassung senden.
## Setup
1. **Script konfigurieren:** In `scripts/proxmox-inventory-json.sh` die Variable `N8N_WEBHOOK_URL` auf die echte n8n-Webhook-URL setzen (aktuell ein Platzhalter, da diese pro Installation individuell ist). Wichtig: **Produktions-Pfad** (`/webhook/...`) verwenden, nicht `/webhook-test/...` der Test-Pfad funktioniert nur, während der Workflow im n8n-Editor auf "Listen for test event" steht.
2. **n8n-Workflow importieren:** JSON-Datei in n8n importieren und **aktivieren/publishen** (der Webhook reagiert sonst nicht auf den Produktions-Pfad). Folgende Credentials werden benötigt (nicht im Export enthalten, aus Sicherheitsgründen):
- **Outline Bearer Auth** (Header Auth, `Authorization: Bearer <Outline-API-Token>`) für alle `outline.vogt.de.com/api/...`-Requests
- **NTFY Bearer Auth** (Header Auth) für die ntfy-Benachrichtigung am Ende
3. **Webhook-Pfad in n8n** mit der URL im Script abgleichen.
4. Erst mit `--vmids=<einzelne-VMID> --dry-run` testen, bevor der volle Sync scharf geschaltet wird.
## Automatischer Betrieb per Cron
Auf dem Proxmox-Host `crontab -e` und folgende Zeile eintragen, um das Script stündlich zwischen 07:00 und 20:00 Uhr laufen zu lassen:
```cron
0 7-20 * * * /root/proxmox-inventory-json.sh >> /var/log/proxmox-inventory-sync.log 2>&1
```
- `7-20` = jede volle Stunde von 7 bis 20 Uhr (14 Läufe/Tag)
- Ausgabe (inkl. Fehler) landet in `/var/log/proxmox-inventory-sync.log`
Optionale Logrotate-Regel, damit das Log nicht unbegrenzt wächst:
```bash
cat > /etc/logrotate.d/proxmox-inventory-sync << 'EOF'
/var/log/proxmox-inventory-sync.log {
weekly
rotate 4
compress
missingok
notifempty
}
EOF
```
**Vor dem Scharfschalten prüfen:**
- Läuft das Script lokal auf dem Host mit der echten (nicht der Platzhalter-)Webhook-URL?
- Ist der n8n-Workflow aktiviert (`active: true`)?
- Ein manueller Testlauf (`./proxmox-inventory-json.sh --dry-run`) zeigt das gebaute JSON ohne etwas zu senden guter erster Check nach jeder Änderung.
## Funktionsweise (Kurzfassung)
- Script sammelt Proxmox-Daten (LXC + VM) → sendet JSON an n8n
- n8n sucht pro VMID die passende Outline-Seite (`documents.search`), lädt den aktuellen Inhalt separat nach (`documents.info`, um Suchindex-Verzögerungen zu vermeiden)
- Bei Abweichungen: gezielter Patch nur der betroffenen Felder (`documents.update`, editMode `patch`)
- Bei keinem Treffer: neue Seite wird automatisch aus den bekannten Fakten angelegt (`documents.create`), unbekannte Felder wie Zweck/Ports bleiben als Platzhalter
- Am Ende: Zusammenfassung aller Änderungen/Auffälligkeiten per ntfy
## Bewusst nicht automatisiert
- Kategorisierung, Zweck-Beschreibung, Ports/URLs in der zentralen Übersichtstabelle (nicht aus Proxmox ableitbar)
- Umbenennen/Archivieren bei VMID-Wiederverwendung (z. B. wenn eine VMID gelöscht und für einen neuen Container wiederverwendet wird) das bleibt manuelle Review-Arbeit