Zigbee2mqtt auf Proxmox

du solltest beim Erstellen des Containers darauf achten, dass du einen privilegierten Container erzeugst, damit du direkten Zugriff auf den USB-Stick erhältst. Das erspart einiges an Arbeit und wird in einem Heimnetz, dass nicht nach außen geöffnet ist, denke ich vom Sicherheitsaspekt locker zu verkraften sein. Auch macht es die Fehlersuche einfacher, wenn du dich mit Linux nicht richtig auskennst.

Wenn es zwingend ein unprivilegierter Container sein, so musst du den USB-Stick über den Proxmox-Host durchreichen.

Ansonsten habe ich Zigbee2MQTT in einem Proxmox-Container laufen und nach dem Update auf die aktuelle Modul-Version keinerlei Probleme.

Er hat einen LAN Coordinator…
Michael

1 „Gefällt mir“

na dann ist es ja noch einfacher :wink:
Dann ist sogar die Art des Containers völlig egal.

… nicht, wenn das erforderliche „Proxmox/Linux“ Wissen fehlt :frowning:

Also, ich habe mit einem Helperscript ZigBee2Mqtt heruntergeladen und jetzt einen laufenden Container. Der Container hat eine statische IP.

Mit der Konsole habe ich ein data-Verzeichnis erstellt und eine für mich passende configuration.yaml erzeugt.

Das IP-Symconmodul habe ich noch nicht installiert und den vorhandenen LAN-Konfigurator auch noch nicht eingeschaltet.

Trotzdem habe ich gehofft, durch „restart“ des Containers und IP:8080 im Browser auf die Zigbee2MQTT Oberfläche zu kommen.

Ging nicht - vielleicht etwas naiv, zumal ich mit den restlichen Docker/Portainer-Einstellungen aus dem YT-Video nichts adäquates in Proxmox anzufangen wusste.

Kann mir jemand einen Hinweis geben?

Das geht nicht. Z2M läuft nur wenn es einen Coordinator hat!
Außerdem solltest du einen MQTT Broker wie Symcon schon gleich mit in der configuration.yaml eintragen.
Michael

du musst wie Michael bereits geschrieben hat direkt den Coordinator (den Stick) mit hinterlegen, sonst bootet Z2M nicht.
Sobald der Stick korrekt hinterlegt ist solltest du dann aber auf die Weboberfläche kommen.
Ich habe es damals mit folgender Anleitung gemacht und dem Helper-Skript für die initiale Einrichtung des Containers:

Du musst dann nur unter 1.2 den LAN-Adapter einrichten. Den Punkt mit der Docker-Config kannst du erstmal ignorieren.
unter 2.2 kannst du dir dann eine passende configuration.yaml generieren lassen.

Ansonsten gerne melden, dann versuchen wir das Problem zu lösen.

Ohne dem fährt Z2M ebenfalls nicht hoch. Er ist zwingend ntwendig.

LG
Burkhard

klappt immer noch nicht, das hier habe ich gemacht:

  1. LAN-Gateway (IP=xx.xx.xx.25)
  • angeschlossen
  • Mqtt aktiviert, Home Assistant deaktiviert
  • Im Bereich Broker habe ich die IP den LCX Containers (IP=xx.xx.xx.27) eingegeben
  • Port 1883
  • Nutzername und Passwort habe ich von Proxmox angegeben. Bei der Generierung des Containers mit dem Helperscript wurde kein Name/Passwort verlangt und ich habe vermutet, dass dann Name/Passwort von Proxmox verwendet wird.
  • Topic: CZC-3DBB (war original so)
  1. Zigbee2MQTT (IP=xx.xx.xx.27)
  • in der Konsole des Containers (Promt war: root@zigbee2mqtt:~# ) habe ich mit nano data/configuration.yaml die Datei angelegt und den Inhalt aus dem YT Video reinkopiert
  • Im Bereich mqtt->server: steht mqtt://ip:1024 (IP des IPS-Rechners ist xx.xx.xx.119)
  • Name und Passwort habe ich eingegeben, wie bei allen meinen Shellys auch, jedoch hat der MQTT-IPS-Server keinen Namen und Passwort
  • Bereich serial->port: tcp://ip:6638 (IP des LAN-Gateways IP=xx.xx.xx.25)

Leider lässt sich die Webseite mit xx.xx.xx.27:8080 nicht aufrufen.
Trotz reboot.

Das das Gateway Daten seinen Status per MQTT senden kann, ist zwar schön, aber aktuell uninteressant. Und wenn, dann muss es diese natürlich an deinen MQTT Broker (Symcon) senden und nicht an Z2M.

Dort gehören die Zugangsdaten des MQTT Broker rein.
Das Gateway baut keine Verbindung zu Z2M auf.

Nun zu Z2M:

Dann lass die Felder weg. Frage mich nur warum du was bei den Shellys eingetragen hast, wenn du es in Symcon gar nicht eingetragen hast.

Dann schau doch mal in die logfiles von Z2M.
Da steht meistens was den Start verhindert.
Michael

Ich habe den IPS-Rechner eingetragen und den Port des MQTT Servers. Meiner ist 1024, aber das Gateway weigert sich und verlangt mindestens 1025?? Alle Shellys sind auf 1024!

  • muss ich alles auf z.B. 1883 umstellen?
  • oder kann ich in IPS einen 2. MQTT Server definieren?
  • oder sind das keine relevanten Zigbee-Daten?
    Das Gateway zeigt unter „Status“ MQTT „Getrennt“ an.

Ich hatte zuerst gedacht: Gateway->Z2M->IPS
Vermutlich erhält jedoch Z2M die Daten über tcp://xx.xx.xx.25:6638 und sendet an den IPS Rechner mit mqtt://xx.xx.xx.119:1024.

  • Name und Passwort weggelassen, keine Veränderung
  • war ein Fehler, habe vor langer Zeit gedacht etwas definiert zu haben und mich später gewundert, dass es klappt und nichts mehr verändert.

Kann es sein, dass ich einen Fehler bei der configuration.yaml habe? Nach dem das Helperscript durchgelaufen war, habe ich mich mit der Konsole auf den Container aufgeschaltet und mich gewundert, dass „LS“ nichts anzeigt. Darauf habe ich dann „data“ und die yaml Datei im root-Verzeichnis des Containers erzeugt.

Hier das Logfile nach einem reboot. Der scheint blockiert zu sein - vielleicht will er auch nur einfach nicht oder mir fehlt das Wissen…

Mar 14 21:50:23 proxmox pvedaemon[51753]: requesting reboot of CT 101: UPID:proxmox:0000CA29:000E55C8:67D4968F:vzreboot:101:root@pam:
Mar 14 21:50:23 proxmox pvedaemon[902]: <root@pam> starting task UPID:proxmox:0000CA29:000E55C8:67D4968F:vzreboot:101:root@pam:
Mar 14 21:50:23 proxmox kernel: vmbr0: port 3(veth101i0) entered disabled state
Mar 14 21:50:23 proxmox kernel: vmbr0: port 3(veth101i0) entered disabled state
Mar 14 21:50:23 proxmox kernel: veth101i0 (unregistering): left allmulticast mode
Mar 14 21:50:23 proxmox kernel: veth101i0 (unregistering): left promiscuous mode
Mar 14 21:50:23 proxmox kernel: vmbr0: port 3(veth101i0) entered disabled state
Mar 14 21:50:24 proxmox audit[51824]: AVC apparmor="STATUS" operation="profile_remove" profile="/usr/bin/lxc-start" name="lxc-101_</var/lib/lxc>" pid=51824 comm="apparmor_parser"
Mar 14 21:50:24 proxmox kernel: audit: type=1400 audit(1741985424.095:36): apparmor="STATUS" operation="profile_remove" profile="/usr/bin/lxc-start" name="lxc-101_</var/lib/lxc>" pid=51824 comm="apparmor_parser"
Mar 14 21:50:24 proxmox pvedaemon[903]: unable to get PID for CT 101 (not running?)
Mar 14 21:50:25 proxmox kernel: EXT4-fs (dm-9): unmounting filesystem 716d7288-a1d4-465c-b382-c23831295216.
Mar 14 21:50:25 proxmox pvedaemon[902]: <root@pam> end task UPID:proxmox:0000C639:000E1AD9:67D495F8:vncproxy:101:root@pam: OK
Mar 14 21:50:25 proxmox systemd[1]: pve-container@101.service: Deactivated successfully.
Mar 14 21:50:25 proxmox systemd[1]: Started pve-container@101.service - PVE LXC Container: 101.
Mar 14 21:50:26 proxmox kernel: EXT4-fs (dm-9): mounted filesystem 716d7288-a1d4-465c-b382-c23831295216 r/w with ordered data mode. Quota mode: none.
Mar 14 21:50:26 proxmox audit[51860]: AVC apparmor="STATUS" operation="profile_load" profile="/usr/bin/lxc-start" name="lxc-101_</var/lib/lxc>" pid=51860 comm="apparmor_parser"
Mar 14 21:50:26 proxmox kernel: audit: type=1400 audit(1741985426.272:37): apparmor="STATUS" operation="profile_load" profile="/usr/bin/lxc-start" name="lxc-101_</var/lib/lxc>" pid=51860 comm="apparmor_parser"
Mar 14 21:50:26 proxmox kernel: vmbr0: port 3(veth101i0) entered blocking state
Mar 14 21:50:26 proxmox kernel: vmbr0: port 3(veth101i0) entered disabled state
Mar 14 21:50:26 proxmox kernel: veth101i0: entered allmulticast mode
Mar 14 21:50:26 proxmox kernel: veth101i0: entered promiscuous mode
Mar 14 21:50:26 proxmox kernel: eth0: renamed from vethOKQbGA
Mar 14 21:50:27 proxmox pvedaemon[902]: <root@pam> end task UPID:proxmox:0000CA29:000E55C8:67D4968F:vzreboot:101:root@pam: OK
Mar 14 21:50:27 proxmox kernel: vmbr0: port 3(veth101i0) entered blocking state
Mar 14 21:50:27 proxmox kernel: vmbr0: port 3(veth101i0) entered forwarding state
Mar 14 21:50:30 proxmox pvedaemon[52303]: starting lxc termproxy UPID:proxmox:0000CC4F:000E586F:67D49696:vncproxy:101:root@pam:
Mar 14 21:50:30 proxmox pvedaemon[904]: <root@pam> starting task UPID:proxmox:0000CC4F:000E586F:67D49696:vncproxy:101:root@pam:
Mar 14 21:50:30 proxmox pvedaemon[903]: <root@pam> successful auth for user 'root@pam'
Mar 14 21:50:35 proxmox pvedaemon[904]: <root@pam> end task UPID:proxmox:0000CC4F:000E586F:67D49696:vncproxy:101:root@pam: OK

Hallo,

Ich bin unterwegs, daher nur kurz…

Du musst in die Konsole vom LXC Container von Z2M.

Kannst du den Stick anpingen ?
Erreichst du auch den Symcon Server ?

mit
journalctl -u zigbee2mqtt.service -f
kannst du schauen, welche Fehlermeldungen kommen.

Die configuration.yaml gehört in das Verzeichnis:

/opt/zigbee2mqtt/data

die YAML-Dateien sind empfindlich, was einrücken betrifft.
Kannst du uns mal deine configuration.yaml hier einstellen…

Hier mal meine als Anhaltspunkt… zumindest der Anfang:

  • die obere IP-Adresse ist der MQTT Server, bei mir Symcon
  • die untere der POE Stick
  • die WebGui kommt per default auf Port:8080 (also IP-Adresse LCX Z2M-Container:8080), sofern die Konfiguration richtig geladen werden kann und nicht irgendwelche Fehler vorher hat…
  • ansonsten kommt die WEB GUI nicht hoch
version: 4
homeassistant:
  enabled: false
frontend:
  enabled: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.xxx.xxx:1883
  keepalive: 60
  reject_unauthorized: false
  version: 3
serial:
  port: tcp://192.168.xxx.xxx:6638
  baudrate: 115200
  adapter: zstack
  disable_led: false
availability:
  enabled: true

ping -c 3 xx.xx.xx.119 klappt, ist der IPS Rechner
ping -c 3 xx.xx.xx.25 klappt auch, ist der cod.m Stick

bring das hier:

root@zigbee2mqtt:~# journalctl -u zigbee2mqtt.service -f
Mar 15 10:04:50 zigbee2mqtt pnpm[465]:  ELIFECYCLE  Command failed with exit code 1.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Main process exited, code=exited, status=1/FAILURE
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Consumed 1.486s CPU time.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Scheduled restart job, restart counter is at 5.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: Stopped zigbee2mqtt.service - zigbee2mqtt.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Consumed 1.486s CPU time.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Start request repeated too quickly.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
Mar 15 10:04:50 zigbee2mqtt systemd[1]: Failed to start zigbee2mqtt.service - zigbee2mqtt.

In der Konsole des Containers Nr.101 - Name: „zigbee2mqtt“ sieht es so aus:

root@zigbee2mqtt:~# ls
data
root@zigbee2mqtt:~# cd data
root@zigbee2mqtt:~/data# ls
configuration.yaml
root@zigbee2mqtt:~/data# 
# configuration.yaml USB-Gateway(default) & LAN-Gateway
# Home Assistant integration (MQTT discovery)
homeassistant: false

# allow new devices to join. !! Set to false after pairung all your devices !!
permit_join: true

# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL - IP-adress:Port
  server: mqtt://xx.xx.xx.119:1024
  # MQTT server authentication (user & pasword), uncomment if required:
  # user:
  # password:

# Serial settings
serial:
  # Location USB Gateway (default) - comment out if using LAN-Gateway
  # port: /dev/ttyACM0 
  # Location LAN-Gateway (IP-adress:Socket Port) - comment out if using USB-Gateway
  port: tcp://xx.xx.xx.25:6638
advanced:
  network_key: GENERATE
frontend:
  port: 8080

Ich glaube, dass deine configuration.yaml am falschen Ort liegt.

mach mal folgendes:

cd /

dann bist du im Wurzelverzeichnis…

dann

cd /opt/zigbee2mqtt

dann ein

ls

ausführen. Dort sollte es einen Ordner „data“ geben…
wenn ja bitte ein cd data
und dann wieder mit ls schauen, ob es ein configuration.yaml gibt.

Diese ist ausschlaggebend !

Sollte sie nicht da sein, kannst du deine umkopieren.

cp /data/configuration.yaml /opt/zigbee2mqtt/data/configuration.yaml

Dann den Dienst Neustarten …

systemctl restart zigbee2mqtt

grüße

Aufgrund deines Posts:

sieht man anhand er Tilde (kleine Wellenlinie), dass du im Home-Verzeichnis bist.
Im Falle vom Nutzer „root“ ist das das Verzeichnis „/root“
Wenn man nur cd eingibt, landet man immer im Home-Verzeichnis des aktuellen Nutzers. (ist quasi eine Abkürzung. Vermutlich hast du das mit cd / verwechselt.

Bei allen anderen Nutzern landet man dann in /home/**Benutzername**

Sollt Z2M laufen, kann die den Data Ordner im root-Homeverzeichnis löschen, damit die Verwirrung nicht nochmal aufkommt…

Ansonsten noch ein Hinweis, je nach dem , ob ein privilegierter container vorhanden ist oder nicht, ist es unter Umständen nicht notwendig, das Kommando „sudo“ zu nutzen. Manche Skripte aus dem Netz funktionieren dann nicht ohne Änderung auf dem Proxmox.

Was ist eigentlich ein „helper-script“ ? woher hast du das ?

Grüße

aaah, was gelernt.
Die configuration.yaml ist jetzt hier:

root@zigbee2mqtt:/opt/zigbee2mqtt/data# ls
configuration.yaml  log

und etwas an die Vorlage von brdiver677 angepasst:

#version: 4
homeassistant:
  enabled: false
frontend:
  enabled: true
mqtt:
  base_topic: zigbee2mqtt
  # MQTT server URL - IP-adress:Port
  server: mqtt://xx.xx.xx.119:1024
  # MQTT server authentication (user & pasword), uncomment if required:
  # user:
  # password:
  keepalive: 60
  reject_unauthorized: false
  version: 3
# Serial settings
serial:
  # Location USB Gateway (default) - comment out if using LAN-Gateway
  # port: /dev/ttyACM0 
  # Location LAN-Gateway (IP-adress:Socket Port) - comment out if using USB-Gateway
  port: tcp://xx.xx.xx.25:6638
  baudrate: 115200
  adapter: zstack
  disable_led: false
advanced:
  network_key: GENERATE
frontend:
  port: 8080

Das ist von hier:

Aber … leider klappt es immer noch nicht mit http://xx.xx.xx.27:8080 (27 ist die statische IP des LXC)

hi,

du hast in deiner configuration.yaml 2x frontend drin…
Das ist im Prinzip, wie Kapitel zu verstehen… es sollten nie mehrere gleiche vorhanden sein.

Hasst du den Dienst neu gestartet ?
Was zeigt dir journalctl -u zigbee2mqtt.service -f nun an ?

ggf. einfach mal den Container neu starten.

Grüße
Björn

1x frontend raus und

oooooooh!!! Klappt, die Webseite lässt sich aufrufen!

root@zigbee2mqtt:~# journalctl -u zigbee2mqtt.service -f
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: Migration notes written in /opt/zigbee2mqtt/data/migration-2-to-3.log
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: Migration notes written in /opt/zigbee2mqtt/data/migration-3-to-4.log
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         z2m: Logging to console, file (filename: log.log)
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         z2m: Starting Zigbee2MQTT version 2.1.3 (commit #unknown)
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         z2m: Starting zigbee-herdsman (3.2.7)
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         zh:zstack:znp: Opening TCP socket with 192.168.20.25:6638
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         zh:zstack:znp: Socket connected
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         zh:zstack:znp: Socket ready
Mar 15 11:26:57 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:57] info:         zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
Mar 15 11:26:58 zigbee2mqtt pnpm[212]: [2025-03-15 11:26:58] info:         zh:zstack:znp: Skip bootloader for CC2652/CC1352
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         zh:controller: Wrote coordinator backup to '/opt/zigbee2mqtt/data/coordinator_backup.json'
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: zigbee-herdsman started (reset)
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Coordinator firmware version: '{"meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20240710,"transportrev":2},"type":"zStack3x0"}'
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Currently 0 devices are joined.
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Connecting to MQTT server at mqtt://192.168.20.119:1024
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Connected to MQTT server
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload '{"state":"online"}'
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Started frontend on port 8080
Mar 15 11:27:22 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:22] info:         z2m: Zigbee2MQTT started!
Mar 15 11:27:24 zigbee2mqtt pnpm[212]: [2025-03-15 11:27:24] info:         z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload '{"state":"online"}'

Vielen Dank!!!
Bestimmt kommen gleich die nächsten Fragen.

… oder auch nicht :slight_smile: :slight_smile: :slight_smile:!
Ich habe das Zigbee2Mqtt-Modul beta installiert, einen Bewegungsmelder und eine Steckdose.
Alles klappt - Vielen Dank - ganz besonders für die Proxmox-Nachhilfe.

2 „Gefällt mir“