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:
@@ -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
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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`).
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
@@ -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 |
|
||||
Reference in New Issue
Block a user