Initiale Infrastruktur-Dokumentation pve1 und pve2.

Enthält Host-Doku, MQTT/HA, Git-Setup, Power-Monitoring und GPU-Idle (pve2).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
root
2026-06-27 19:53:55 +02:00
commit 6f52d46267
24 changed files with 1549 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
# pve1 — Dokumentation
**Host:** pve1 · **IP:** 192.168.10.3 · **Rolle:** Primärer Proxmox, Fallback-Router (OPNsense)
## Inhaltsverzeichnis
| Nr. | Datei | Thema |
|-----|-------|-------|
| — | [00_README.md](00_README.md) | Diese Übersicht |
| — | [infrastructure-host.md](infrastructure-host.md) | Hardware, CT/VM, Storage |
| — | [power-mqtt-agent.md](power-mqtt-agent.md) | CPU-Power → MQTT/HA |
| 01 | [01_uebersicht.md](01_uebersicht.md) | System-Übersicht |
| 02 | [02_netzwerk.md](02_netzwerk.md) | Bridges, VLANs |
| 03 | [03_backup_restore.md](03_backup_restore.md) | Backup & Restore |
| 04 | [04_fallback_aktivierung.md](04_fallback_aktivierung.md) | OPNsense-Fallback |
| 05 | [05_speicher_wartung.md](05_speicher_wartung.md) | Speicher & Wartung |
## Shared
- [MQTT & HA](../shared/mqtt-homeassistant.md)
- [Git & Repos](../shared/git-und-repos.md)
- [Netzwerk](../shared/infrastruktur-netzwerk.md)
## Besonderheiten pve1
- **Keine NVIDIA-GPU** → Power-Agent nur CPU (Intel RAPL)
- **Fallback-OPNsense** VM 104 (Klon von pve2) — nur bei Ausfall pve2 starten
- CT **100** (files) — Datei-Server
## Schnellbefehle
```bash
systemctl status pve-power-mqtt
qm list && pct list
cd /root/docu-repo && git pull
```
Stand: Juni 2026
+20
View File
@@ -0,0 +1,20 @@
# Übersicht
## Infrastruktur
| Host | IP | Rolle |
|------|-----|-------|
| pve1 | 192.168.10.3 | Primärer Proxmox-Host, Fallback-Router |
| pve2 | 192.168.10.4 | Produktions-Proxmox-Host, aktiver Router |
## Fallback-Router
- **VMID:** 104
- **Name:** `opnsense-fallback`
- **Quelle:** OPNsense (VM 104) von pve2
- **Status:** Gestoppt, `onboot: 0`
- **Zweck:** Ersatz-Router falls pve2 oder der originale OPNsense ausfällt
## Wichtig
Die Fallback-VM darf **nicht parallel** zum Original auf pve2 laufen — gleiche Konfiguration und IPs würden kollidieren.
+31
View File
@@ -0,0 +1,31 @@
# Netzwerk
## pve1 (192.168.10.3)
| Bridge | Typ | Verwendung |
|--------|-----|------------|
| vmbr0 | VLAN-aware, an `nic0` | WAN / Management (192.168.10.3/24) |
| vmbr1 | Intern, keine phys. Ports | LAN-Seite des Routers |
`vmbr1` wurde für die Fallback-VM angelegt (analog zu pve2):
```
auto vmbr1
iface vmbr1 inet manual
bridge-ports none
bridge-stp off
bridge-fd 0
```
## OPNsense-Fallback (VM 104)
| Interface | Bridge | MAC |
|-----------|--------|-----|
| net0 | vmbr0 | BC:24:11:A1:B2:C3 |
| net1 | vmbr1 | BC:24:11:D4:E5:F6 |
MAC-Adressen wurden absichtlich von pve2 abweichend gesetzt, um Konflikte zu vermeiden.
## Hinweis
pve1 hat nur **eine physische NIC**. Beim Failover ggf. Kabel umstecken oder VLAN-Konfiguration prüfen.
+35
View File
@@ -0,0 +1,35 @@
# Backup & Restore
## Durchgeführter Ablauf (2026-06-27)
### 1. Backup auf pve2
```bash
ssh root@192.168.10.4
vzdump 104 --mode snapshot --compress zstd --storage records
```
- Snapshot-Modus: OPNsense läuft während des Backups weiter
- Storage `records` (da `local` kein `backup`-Content mehr hat)
- Ergebnis: ~15 GB `.vma.zst`
### 2. Transfer nach pve1
```bash
scp root@192.168.10.4:/mnt/pve/records/dump/vzdump-qemu-104-*.vma.zst /var/lib/vz/dump/
```
### 3. Restore auf pve1
```bash
qmrestore /var/lib/vz/dump/vzdump-qemu-104-*.vma.zst 104 --storage local-lvm
```
### 4. Aufräumen
Backup-Datei nach erfolgreichem Restore gelöscht (~15 GB frei auf `/`).
## Bekannte Fallstricke
- Unterbrochener `qmrestore` hinterlässt verwaiste LVs (`vm-104-disk-*`) → manuell entfernen mit `lvremove -f`
- Vor Restore genug Platz prüfen: ~15 GB Backup + ~32 GB VM-Disk
+47
View File
@@ -0,0 +1,47 @@
# Fallback aktivieren
## Voraussetzungen
- pve2-OPNsense ist gestoppt oder pve2 ist ausgefallen
- Netzwerk-Kabel/VLANs sind für pve1 vorbereitet
## Schritte
### 1. Original stoppen (falls noch erreichbar)
```bash
ssh root@192.168.10.4 "qm stop 104"
```
### 2. Fallback starten
```bash
qm start 104
```
### 3. Konsole prüfen
```bash
qm terminal 104
```
### 4. Netzwerk testen
- Web-UI von OPNsense aufrufen (Standard: LAN-Interface)
- Gateway/DHCP/DNS prüfen
## Fallback beenden
```bash
qm stop 104
```
Danach Original auf pve2 wieder starten:
```bash
ssh root@192.168.10.4 "qm start 104"
```
## Aktualisierung der Fallback-Kopie
Bei größeren OPNsense-Änderungen Backup/Restore erneut durchführen (siehe `03_backup_restore.md`).
+36
View File
@@ -0,0 +1,36 @@
# Speicher & Wartung
## Speicher pve1 (Stand nach Setup)
| Storage | Verwendung |
|---------|------------|
| `/` (local) | ISOs, Templates, Backups |
| local-lvm | VM-Disks (opnsense-fallback: 32 GB) |
## Speicher prüfen
```bash
df -h /
pvesm status
lvs pve
```
## Verwaiste Disks entfernen
Falls ein Restore fehlschlägt:
```bash
qm destroy 104 --purge 1
lvremove -f pve/vm-104-disk-0 pve/vm-104-disk-1
```
## VM-Konfiguration anzeigen
```bash
qm config 104
qm list
```
## Thin-Pool Warnung
Beim Restore kann LVM warnen, dass die Summe der Thin-Volumes den Pool übersteigt. Bei Bedarf Thin-Pool erweitern oder ungenutzte VMs/Disks entfernen.
+66
View File
@@ -0,0 +1,66 @@
# pve1 — Host-Infrastruktur
**IP:** 192.168.10.3 · **Gateway:** 192.168.10.1 (wenn OPNsense auf pve2 läuft)
## Hardware / Storage
| Device | Größe | Nutzung |
|--------|-------|---------|
| nvme0n1 | ~477 GB | Proxmox-System, local-lvm |
| sda | variabel | records / Backups (falls konfiguriert) |
Details: [05_speicher_wartung.md](05_speicher_wartung.md)
## VMs
| VMID | Name | Status | Rolle |
|------|------|--------|-------|
| 104 | opnsense-fallback | **stopped** | OPNsense-Klon für Notfall — **nicht parallel zu pve2:104** |
Konfiguration: `/etc/pve/qemu-server/104.conf`
Netz: vmbr0 (WAN), vmbr1 (LAN) — siehe [02_netzwerk.md](02_netzwerk.md)
## Container
| CTID | Name | Status | Rolle |
|------|------|--------|-------|
| 100 | files | running | Datei-/Storage-CT |
## Dienste auf dem Host
| Dienst | Zweck |
|--------|-------|
| `pve-power-mqtt` | CPU-Leistung → MQTT (kein GPU) |
| `pveproxy`, `pvedaemon` | Proxmox Web-UI :8006 |
## Power-Monitoring
Siehe [power-mqtt-agent.md](power-mqtt-agent.md)
- Binary: `/usr/local/bin/pve-power-mqtt`
- Env: `/etc/pve-power-mqtt.env`
- Quellcode: `/root/code/pve-power-mqtt` (Repo server-power)
## Git / Doku auf diesem Host
| Pfad | Inhalt |
|------|--------|
| `/root/docu-repo` | Dieses docu-Repo (Clone) |
| `/root/code/pve-power-mqtt` | Go-Agent |
| `/root/.git-credentials-jeanavril` | Gitea HTTPS-Token |
## SSH von pve2
```bash
ssh root@192.168.10.3
```
## Failover-Checkliste (Kurz)
1. pve2 / OPNsense ausgefallen?
2. VM 104 auf **pve1** starten: `qm start 104`
3. Physische WAN-Kabel / Bridge prüfen
4. **Nicht** gleichzeitig OPNsense auf pve2 laufen lassen
Vollständig: [04_fallback_aktivierung.md](04_fallback_aktivierung.md)
+79
View File
@@ -0,0 +1,79 @@
# pve1 — Power-MQTT-Agent
CPU-Leistungsmessung (Intel RAPL) → MQTT → Home Assistant Auto-Discovery.
## Installation (Stand)
| Komponente | Pfad |
|------------|------|
| Binary | `/usr/local/bin/pve-power-mqtt` |
| systemd | `/etc/systemd/system/pve-power-mqtt.service` |
| Konfiguration | `/etc/pve-power-mqtt.env` |
| Quellcode | `/root/code/pve-power-mqtt` |
| Repo | https://git.jeanavril.com/jean/server-power.git |
## Konfiguration `/etc/pve-power-mqtt.env`
```ini
POWER_MQTT_BROKER=tcp://homeassistant.iot:1883
POWER_MQTT_USER=server
POWER_MQTT_PASSWORD="F0x84rAOW#q@LX"
POWER_MQTT_HOSTNAME=
POWER_MQTT_CLIENT_ID=
POWER_MQTT_DISCOVERY=true
```
Leere Hostname/Client-ID → automatisch **`pve1`** / **`pve-power-mqtt-pve1`**.
## MQTT-Sensoren in HA
| Entity (typisch) | Quelle |
|------------------|--------|
| sensor.pve1_cpu_power | RAPL package-0 |
| sensor.pve1_estimated_total | = CPU (kein GPU auf pve1) |
Topics: `homeassistant/sensor/pve1/cpu_power/state` usw.
Details Broker: [../shared/mqtt-homeassistant.md](../shared/mqtt-homeassistant.md)
## Build & Deploy (Update)
```bash
cd /root/code/pve-power-mqtt
git pull
export PATH="/usr/local/go/bin:$PATH"
go build -o pve-power-mqtt ./cmd/pve-power-mqtt
install -m 755 pve-power-mqtt /usr/local/bin/pve-power-mqtt
systemctl restart pve-power-mqtt
```
Oder aus Repo:
```bash
cd /root/code/pve-power-mqtt
git pull && ./deploy/install.sh
systemctl restart pve-power-mqtt
```
## Betrieb
```bash
systemctl status pve-power-mqtt
journalctl -u pve-power-mqtt -f
```
Intervall: CPU alle **5 s**.
## Unterschied zu pve2
- **Kein** `nvidia-smi` — nur RAPL
- Kein `nvidia-persistenced`
- Keine GPU-Topics
## Troubleshooting
| Problem | Lösung |
|---------|--------|
| HA „unavailable“ | MQTT neu laden; `journalctl -u pve-power-mqtt` auf Connect-Fehler |
| session taken over | Client-ID prüfen — muss `pve-power-mqtt-pve1` sein |
| RAPL fehlt | `ls /sys/class/powercap/intel-rapl/` — Intel-CPU erforderlich |