Einleitung
Wer sein Smart Home lokal und ohne Cloud betreiben will, kommt an Zigbee2MQTT kaum vorbei. Statt proprietärer Gateways bekommst du damit die volle Kontrolle über deine Zigbee-Geräte – komplett über MQTT integrierbar in Systeme wie ioBroker oder Home Assistant.
In diesem Beitrag zeige ich dir Schritt für Schritt, wie du zigbee2mqtt unter Proxmox LXC installieren kannst – bewusst ohne Community Script, dafür sauber und nachvollziehbar nach offizieller Doku.
Referenzen: Zigbee2MQTT Installation (Linux), Proxmox VE, MQTT.
Schnellnavigation
- Voraussetzungen
- LXC Container erstellen
- USB-Stick durchreichen
- Zigbee2MQTT manuell installieren
- Konfiguration verstehen
- Autostart als Service
- Webinterface
- Vergleich: Manuell vs Community Script
- Bonus: Typische Fehler
- Fazit
Voraussetzungen
- Proxmox VE
- Debian LXC Container (empfohlen)
- Zigbee USB Stick (z. B. CC2652 / EFR32)
- MQTT Broker (z. B. Eclipse Mosquitto)
Wichtig: Zigbee2MQTT spricht nicht „direkt“ mit ioBroker oder Home Assistant, sondern veröffentlicht alles über MQTT. Wenn du MQTT einmal verstanden hast, wird Zigbee2MQTT plötzlich sehr logisch. Eine gute Einstiegserklärung ist die offizielle Seite mqtt.org.
LXC Container erstellen
Empfohlene Einstellungen für Zigbee2MQTT (praxisnah und ausreichend):
- Template: Debian
- RAM: mindestens 512 MB (besser 1 GB)
- CPU: 1–2 Kerne
- Netzwerk: DHCP oder statisch
Warum LXC? Es ist deutlich schlanker als eine VM und für Dienste wie Zigbee2MQTT völlig ausreichend. Außerdem lassen sich Container sehr gut sichern, klonen und bei Bedarf neu aufsetzen.
USB-Stick in den Container durchreichen
Zuerst lassen wir uns stabile Gerätepfade anzeigen. Das ist besser als blind mit /dev/ttyUSB0 zu arbeiten (das kann sich nach Reboots ändern):
ls -l /dev/serial/by-id/
Was macht der Befehl? Er listet symbolische Links auf, die eindeutig auf deine seriellen Geräte zeigen. Perfekt, um Zigbee- und Z-Wave-Sticks auseinanderzuhalten.
Beispielausgabe (zwei Zigbee-Sticks und ein Z-Wave-Stick):
lrwxrwxrwx 1 root root 13 Mar 20 20:20 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0019...-if00-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root 13 Mar 5 13:55 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_9286...-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Mar 19 21:11 usb-SONOFF_SONOFF_ZWave_Dongle-PZG23_b841...-if00-port0 -> ../../ttyUSB1
Privileged vs Unprivileged
Ein privileged LXC hat es oft leichter beim Hardwarezugriff – aber das ist weniger sauber isoliert. Ein unprivileged LXC ist die bessere Standardwahl, kann aber je nach Setup etwas mehr Arbeit beim Durchreichen bedeuten.
Stick durchreichen per Proxmox GUI
Die bequemste Lösung: in Proxmox den Stick in der GUI auswählen und an den Container durchreichen. Das ist meist auch am wenigsten fehleranfällig. Dies geht einfach unter „Resources“.

Stick durchreichen per CLI
Alternativ (nerdig) per CLI auf dem Proxmox Host:
pct set <CTID> --dev0 path=/dev/ttyUSB2
Erklärung:
pct set: ändert die Konfiguration eines Containers<CTID>: die Container-ID (z. B. 105)--dev0: erstes durchgereichtes Gerätpath=/dev/ttyUSB2: Gerät, das durchgereicht wird
Zigbee2MQTT manuell installieren
Jetzt im LXC Container arbeiten. Ich teile die Installation bewusst in mehrere Blöcke, damit klar ist, was du da gerade tust.
1) System aktualisieren
apt update
apt upgrade -y
apt update aktualisiert die Paketlisten. apt upgrade -y installiert Updates automatisch (ohne Rückfragen).
2) Tools und Abhängigkeiten installieren
apt install -y curl git make g++ gcc libsystemd-dev
curl lädt Skripte/Dateien, git holt das Repository, make/gcc/g++ werden für native Abhängigkeiten benötigt. Details zu APT findest du in der offiziellen Debian-Doku: Debian Reference (APT).
3) Node.js LTS installieren
Zigbee2MQTT läuft auf Node.js. Wir installieren die LTS-Version (Langzeit-Support). Hintergrund zu LTS: Node.js Releases.
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt install -y nodejs
Der erste Befehl bindet das NodeSource-Repo ein (für aktuelle LTS-Pakete), der zweite installiert Node.js.
4) pnpm aktivieren
Die Zigbee2MQTT-Doku nutzt mittlerweile pnpm. Das kommt über corepack (gehört zu Node.js). Referenz: Node.js Corepack.
corepack enable
corepack prepare pnpm@latest --activate
Damit steht pnpm als Paketmanager bereit.
5) Zigbee2MQTT herunterladen
Wir klonen das offizielle Repository. Projektseite: Koenkk/zigbee2mqtt.
mkdir -p /opt/zigbee2mqtt
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
--depth 1 lädt nur den aktuellen Stand (spart Zeit und Platz).
6) Abhängigkeiten installieren und Teststart
cd /opt/zigbee2mqtt
pnpm install --frozen-lockfile
pnpm install --frozen-lockfile installiert exakt die Versionen aus dem Lockfile – reproduzierbar und stabil.
pnpm start
Das startet Zigbee2MQTT im Vordergrund. Ideal zum ersten Test, bevor du einen Service draus machst.
Konfiguration verstehen
Die zentrale Datei ist:
nano /opt/zigbee2mqtt/data/configuration.yaml
Minimalbeispiel (bewusst klein, aber funktional):
homeassistant:
enabled: false
mqtt:
base_topic: zigbee2mqtt
server: mqtt://localhost:1883
serial:
port: /dev/ttyUSB0
frontend:
enabled: true
port: 8080
Wichtig: Bei mqtt.server muss das Schema stimmen. Also z. B. mqtt://192.168.0.86:1883 – ohne mqtt:// wird Zigbee2MQTT gerne mal „kreativ“ und verbindet nicht. (Der Klassiker.)
Noch robuster als /dev/ttyUSB0 ist ein Pfad aus /dev/serial/by-id. Beispiel:
serial:
port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0019...-if00-port0
Die komplette Konfig-Referenz findest du in der offiziellen Doku: Zigbee2MQTT Konfiguration.
Autostart als Service einrichten
Jetzt machen wir aus dem Teststart einen systemd-Service, damit Zigbee2MQTT automatisch beim Boot startet. Hintergrund zu systemd: freedesktop.org (systemd).
Optional: eigenen User anlegen (sauberer)
Statt als root laufen zu lassen, ist ein eigener Service-User die bessere Praxis:
adduser --system --group --home /opt/zigbee2mqtt zigbee2mqtt
chown -R zigbee2mqtt:zigbee2mqtt /opt/zigbee2mqtt
Das legt einen Systemuser an und setzt die passenden Rechte auf das Installationsverzeichnis.
Service-Datei erstellen
Zuerst prüfen, wo pnpm liegt (damit ExecStart garantiert stimmt):
which pnpm
Jetzt Service-Datei anlegen:
nano /etc/systemd/system/zigbee2mqtt.service
Inhalt (ersetze /usr/bin/pnpm ggf. durch das Ergebnis von which pnpm):
Service aktivieren und starten
systemctl daemon-reload
systemctl enable zigbee2mqtt
systemctl start zigbee2mqtt
daemon-reload lädt die neue Service-Datei ein, enable aktiviert Autostart, start startet sofort.
Status/Logs prüfen:
systemctl status zigbee2mqtt
journalctl -u zigbee2mqtt -n 200 --no-pager
Webinterface aufrufen
Wenn alles läuft, erreichst du Zigbee2MQTT unter:
http://<IP>:8080
- Geräte anlernen
- Logs einsehen
- Konfiguration testen
Vergleich: Manuelle Installation vs Community Script
Community Script
Vorteile:
- extrem schnell
- wenig Setup-Aufwand
- gut für „soll einfach laufen“
Nachteile:
- weniger Kontrolle
- schwerer zu debuggen, wenn’s klemmt
- Updates können je nach Script/Struktur nerven
Manuell
Vorteile:
- volle Kontrolle
- besseres Verständnis
- nah an der offiziellen Doku
Nachteile:
- mehr Aufwand
- Fehler durch Tippfehler möglich
Bonus: Typische Fehler
„not a git repository“
Passiert, wenn im Zielordner kein echtes Git-Repo liegt (z. B. Ordner manuell erstellt, aber nicht geklont). Lösung: sauber neu klonen statt mit halben Update-Skripten zu kämpfen.
Webinterface nicht erreichbar
Meist läuft der Service nicht oder der Port stimmt nicht. Prüfe systemctl status und die Logs via journalctl.
MQTT verbindet nicht
Klassiker: im mqtt.server fehlt das mqtt:// vor der IP/Hostname – oder Broker/Port sind falsch. Das sieht man sehr schnell im Log.
Fazit
Wenn du einfach nur „es soll laufen“ willst, reicht ein Community Script oft aus. Wenn du aber langfristig ein stabiles Setup willst, das du verstehst und sauber debuggen kannst, ist die manuelle Installation klar im Vorteil – gerade in Proxmox-Umgebungen mit mehreren Diensten.
Weiterlesen auf prokrastinerd.de
Wenn du gerade sowieso in Proxmox versackst: Als Einstieg lohnt sich meine Proxmox Anleitung. Für typische Stolperfallen gibt’s außerdem Proxmox und der OOM-Killer, Proxmox Backup failed – was tun? und meinen Erfahrungsbericht Proxmox Backup Server im Homelab. Wenn du eher am Bastel-/Homelab-Teil hängst: Proxmox NAS mit LXC einrichten, Proxmox VMs und Container auf ein ZFS Mirror Storage verschieben sowie Proxmox auf IPv6 umstellen. Und ja: Teamspeak Server unter Proxmox installieren existiert auch noch – Nostalgie darf sein.
GrayTheZebra ist Entwickler und Betreiber von prokrastinerd.de mit Fokus auf Smart Home ohne Cloud, ESP32 und MQTT-basierte Systeme. Alle Projekte basieren auf praktischer Umsetzung und eigener Hardwareentwicklung.
Autorprofil und Hintergrund:
Über GrayTheZebra

