🚀 Schritt 9: ioBroker installieren
ioBroker auf EOS manuell installieren – statt des Original-Installationsskripts
Seit Oktober 2026 sind ein neuer Installer und ein neuer Fixer verfügbar.
Wichtig: Leider funktioniert die Installation seitdem nicht mehr mit EOS (Arch Linux).Zuvor konnte die Installation mit dem offiziellen ioBroker-Installationsskript durchgeführt werden. Dieses funktioniert nur noch unter Debian:
curl -sL https://iobroker.net/install.sh | bash -
Deshalb installieren wir ioBroker auf EOS manuell. Als Vorlage diente das originale install.sh-Skript (Stand 2026-11-08).
1) Der erste Befehl legt den Benutzer samt Home-Verzeichnis an, falls er noch nicht existiert. Der zweite legt unabhängig davon /opt/iobroker an:
id iobroker &>/dev/null || sudo useradd -m -s /usr/sbin/nologin iobroker
sudo install -d -o iobroker -g iobroker /opt/iobroker
Mit -s /usr/sbin/nologin bekommt iobroker eine Shell, die eine interaktive Anmeldung verweigert.
Benutzer, Gruppe und sudo-Zugriff überprüfen:
getent passwd iobroker
getent group iobroker
sudo -v
2) ioBroker-Projekt und Pakete installieren:
💡 Hinweis: Seit npm 12 werden Installationsskripte von Abhängigkeiten standardmäßig blockiert, sofern sie nicht ausdrücklich freigegeben wurden.
Erstelle eine package.json als Benutzer iobroker:
sudo nano /opt/iobroker/package.json
Mit folgenden Standardinhalt:
{
"name": "iobroker.inst",
"version": "3.0.0",
"private": true,
"description": "Automate your Life",
"engines": {
"node": ">=22.0.0"
},
"dependencies": {
"iobroker.js-controller": "stable",
"iobroker.admin": "stable",
"iobroker.discovery": "stable",
"iobroker.backitup": "stable"
}
}
Zusätzliche Adapter kannst du später bequem über das Admin-Webinterface installieren. Zu meinen zusätzlichen Hauptadaptern gehören z.B.: dwd, email, history, ical, ping, mqtt, shelly, tr-064, vis-2, yahka oder zwavews.
Installiere dann die Pakete als Benutzer iobroker:
sudo -u iobroker bash -c 'cd /opt/iobroker && npm install --no-audit'
Wenn Fehler "packages had install scripts blocked because they are not covered by allowScripts" auftreten, prüfe zuerst, welche Skripte betroffen sind:
sudo -u iobroker bash -c 'cd /opt/iobroker && npm install-scripts ls'
Prüfe die angezeigten Pakete. Wenn du ihnen vertraust, gib die Installationsskripte frei und installiere die Pakete erneut:
sudo -u iobroker bash -c 'cd /opt/iobroker && npm install-scripts approve --all'
sudo -u iobroker bash -c 'cd /opt/iobroker && npm install --no-audit'
⚠️ Das offizielle Installationsskript führt diesen Freigabebefehl nicht aus. --all genehmigt alle noch ungeprüften Installationsskripte.
3) Sicherstellen, dass /opt/iobroker einschließlich aller darin enthaltenen Dateien und Verzeichnisse dem Benutzer und der Gruppe iobroker gehört:
sudo chown -R iobroker:iobroker /opt/iobroker
4) Zugriffsrechte des Home-Verzeichnisses anpassen (optional)
Falls erforderlich, erlaube anderen Benutzern den Zugriff auf /home/iobroker:
sudo chmod -v 755 /home/iobroker
Damit werden die Rechte von 0700 auf 0755 geändert.
5) Benutzer zu den benötigten Gruppen hinzufügen
Damit dein aktueller Benutzer auf ioBroker-Verzeichnisse zugreifen kann, füge ihn zur Gruppe iobroker hinzu. Für den Zugriff von ioBroker auf Geräte und Schnittstellen kommen uucp und video hinzu:
sudo usermod -aG iobroker $USER
sudo usermod -aG uucp,video iobroker
sudo reboot
💡 Hinweis
Die neue Gruppenzugehörigkeit wird erst nach einer erneuten Anmeldung oder Reboot wirksam.
Prüfen:
groups iobroker
getent group uucp
getent group video
getent passwd iobroker
ls -l /usr/sbin/nologin /usr/bin/nologin 2>/dev/null
id $USER
6) Führe ein npm rebuild aus und fahre mit dem Setup fort:
sudo -u iobroker bash -c 'cd /opt/iobroker && npm rebuild'
sudo -u iobroker bash -c 'cd /opt/iobroker && node node_modules/iobroker.js-controller/iobroker.js setup first'
7) Erstelle eine Service-Datei nach /etc/systemd/system/ (auf EOS/Arch passend):
Das ist der richtige Ort für eine manuell angelegte Administrator-Unit.
sudo nano /etc/systemd/system/iobroker.service
Mit folgenden Inhalt:
[Unit]
Description=ioBroker Server
Documentation=http://iobroker.net
After=network.target
[Service]
Type=simple
User=iobroker
ExecStart=/usr/bin/node /opt/iobroker/node_modules/iobroker.js-controller/controller.js
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target
Dann lade systemd neu, aktiviere den Autostart und starte ioBroker:
sudo chmod 644 /etc/systemd/system/iobroker.service
sudo systemctl daemon-reload
sudo systemctl enable --now iobroker.service
Prüfe anschließend:
sudo systemctl status iobroker.service --no-pager
Prüfe, ob die ioBroker-Welcome-Seite im Browser erreichbar ist. Ersetze die IP durch die IP-Adresse deines ioBroker-Systems:
http://192.168.0.240:8081/
Wie sind noch nicht fertig 😉
8) 🔐 Sudo-Berechtigungen des ioBroker-Benutzers prüfen oder anpassen
sudo nano /etc/sudoers.d/iobroker
Bei mir liegen alle aufgeführten Befehle unter /usr/bin, nicht /usr/sbin.
iobroker ALL=(ALL) ALL
iobroker ALL=(ALL) NOPASSWD: /usr/bin/shutdown
iobroker ALL=(ALL) NOPASSWD: /usr/bin/halt
iobroker ALL=(ALL) NOPASSWD: /usr/bin/poweroff
iobroker ALL=(ALL) NOPASSWD: /usr/bin/reboot
iobroker ALL=(ALL) NOPASSWD: /usr/bin/systemctl start
iobroker ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop
iobroker ALL=(ALL) NOPASSWD: /usr/bin/mount
iobroker ALL=(ALL) NOPASSWD: /usr/bin/umount
iobroker ALL=(ALL) NOPASSWD: /usr/bin/systemd-run
iobroker ALL=(ALL) NOPASSWD: /usr/bin/make
iobroker ALL=(ALL) NOPASSWD: /usr/bin/ping
iobroker ALL=(ALL) NOPASSWD: /usr/bin/setcap
iobroker ALL=(ALL) NOPASSWD: /usr/bin/nmcli
iobroker ALL=(ALL) NOPASSWD: /usr/bin/vcgencmd
iobroker ALL=(ALL) NOPASSWD: /usr/bin/cat
iobroker ALL=(ALL) NOPASSWD: /usr/bin/df
iobroker ALL=(ALL) NOPASSWD: /usr/bin/ldconfig
ALL ALL=NOPASSWD: /usr/bin/systemctl start iobroker
ALL ALL=NOPASSWD: /usr/bin/systemctl stop iobroker
ALL ALL=NOPASSWD: /usr/bin/systemctl restart iobroker
ALL ALL=(iobroker) NOPASSWD: /usr/bin/node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js *
Der Benutzer iobroker hat ohne Passworteingabe weitreichende Berechtigungen – darunter das Herunterfahren, Neustarten, Starten von Diensten und Ausführen von Befehlen auf dem System sowie spezielle Berechtigungen für den ioBroker-Dienst.
Es ist wichtig, dass die Pfade in der sudoers-Konfiguration exakt mit den tatsächlichen Installationspfaden der Befehle auf deinem System übereinstimmen.
Noch ein Punkt: Diese Zeile gibt allen lokalen Benutzern das Recht, den ioBroker-Dienst zu starten, zu stoppen und neu zu starten: ALL ALL=NOPASSWD: /usr/bin/systemctl start iobroker
Diese Datei sollte mit restriktiven Rechten gesichert und geprüft werden:
sudo chmod 440 /etc/sudoers.d/iobroker
sudo visudo -c
Wenn du die Datei bearbeiten möchtest, kannst du die Berechtigungen kurzzeitig anpassen:
sudo chmod 644 /etc/sudoers.d/iobroker
sudo nano /etc/sudoers.d/iobroker
sudo chmod 440 /etc/sudoers.d/iobroker
sudo visudo -c
System neu starten:
sudo reboot
Prüfe ob Dienst, Adapter und Rechte funktionieren:
sudo systemctl status iobroker.service --no-pager
iob status
sudo visudo -c
9) Der Wrapper unter /opt/iobroker/iobroker nimmt ioBroker-Befehle entgegen und leitet sie an den Controller weiter.
💡 Hinweis
Der Wrapper wurde von einer anderen, funktionierenden ioBroker-Installation auf EOS übernommen (gleiche Version, Stand vom 8. November 2026). Prüfe vor der Verwendung, ob Benutzer, Pfade, Dienstname und sudo-Berechtigungen auch zu dieser Installation passen. Führe insbesondere
iob fixnicht ungeprüft aus: Das Skript kann die Installationskonfiguration und Dateien verändern.
sudo nano /opt/iobroker/iobroker
Mit folgenden Inhalt:
#!/usr/bin/bash
# --allow-root is matched as an exact argument, not as a substring: an object id
# or state name that happens to contain that text must not slip past the root guard.
# für EOS Arch-based angepasste Version 2026-11-08
iob_allow_root=false
for a in "$@"; do if [ "$a" = "--allow-root" ]; then iob_allow_root=true; break; fi; done
if (( $# == 1 )) && ([ "$1" = "start" ] || [ "$1" = "stop" ] || [ "$1" = "restart" ]); then
if [ "$(id -u)" = 0 ] && [ "$iob_allow_root" != true ]; then
echo -e "\n***For security reasons ioBroker should not be run or administrated as root.***\nBy default only a user that is member of "iobroker" group can execute ioBroker commands.\nPlease execute 'iob fix --allow-root' to create an appropriate setup!"
fi
sudo systemctl $1 iobroker
exit $?
fi
if [ "$(id -u)" = 0 ] && [ "$iob_allow_root" != true ]; then
echo -e "\n***For security reasons ioBroker should not be run or administrated as root.***\nBy default only a user that is member of "iobroker" group can execute ioBroker commands.\nPlease read the Documentation on how to set up such a user, if not done yet.\nOnly in very special cases you can run iobroker commands by adding the "--allow-root" option at the end of the command line.\nPlease note that this option may be disabled in the future, so please change your setup accordingly now."
exit 1;
elif [ "$(id -u)" -gt 0 ] && [ "$iob_allow_root" = true ]; then
echo "Ignoring --allow-root: it only has an effect when running as root." >&2;
fi
if [ "$1" = "fix" ]; then
shift
sudo -u iobroker curl -sLf https://iobroker.net/fix.sh --output /home/iobroker/.fix.sh && bash /home/iobroker/.fix.sh "$@"
elif [ "$1" = "nodejs-update" ]; then
# EOS is Arch-based; the ioBroker nodejs-update script is not supported here.
echo "nodejs-update wird unter EOS (Arch Linux) nicht unterstützt." >&2
echo "Verwalte Node.js unter EOS über die Arch-Paketverwaltung." >&2
exit 1
elif [ "$1" = "docker" ]; then
shift
sudo -u iobroker curl -sLf https://iobroker.net/docker.sh --output /home/iobroker/.docker.sh && bash /home/iobroker/.docker.sh "$@"
elif [ "$1" = "diag" ]; then
shift
sudo -u iobroker curl -sLf https://iobroker.net/diag.sh --output /home/iobroker/.diag.sh && bash /home/iobroker/.diag.sh "$@" | sudo -u iobroker tee /home/iobroker/iob_diag.log
else
sudo -H -u iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@"
fi
sudo chmod 755 /opt/iobroker/iobroker
sudo ln -sfn /opt/iobroker/iobroker /usr/bin/iobroker
sudo ln -sfn /opt/iobroker/iobroker /usr/bin/iob
sudo ln -sfn /opt/iobroker/iobroker /opt/iobroker/iob
sudo chown -R iobroker:iobroker /opt/iobroker
Prüfen, ob die Datei wirklich ein Bash-Skript ist:
head -n 3 /opt/iobroker/iobroker
ls -l /usr/bin/iob /usr/bin/iobroker /opt/iobroker/iob
ls -l /opt/iobroker/iobroker
bash -n /opt/iobroker/iobroker && echo "Shell-Syntax OK"
Der Wrapper erkennt --allow-root als eigenes Argument. Er behandelt start/stop/restart und fix gesondert und leitet die übrigen Controller-Befehle an den ioBroker-Controller weiter. docker und diag werden an separate Skripte weitergeleitet. Der Aufruf von nodejs-update wird abgewiesen und als nicht unterstützt gemeldet.
Öffne die ioBroker-Welcome-Seite im Browser. Ersetze die Beispiel-IP durch die IP-Adresse deines ioBroker-Systems und folge den Anweisungen zur Einrichtung.
http://192.168.0.240:8081/
Habe fertig 👍
🔧 ioBroker aktualisieren, Fehlerdiagnose und Wartung
⚠️ ACHTUNG: EOS wird NICHT offiziell von ioBroker unterstützt! Die Nutzung erfolgt auf eigene Gefahr!
Führe insbesondere iob fix nicht ungeprüft oder ohne Backup aus: Es kann die Installationskonfiguration und Dateien verändern. iob diag ist zur Diagnose gedacht und soll keine Dateien verändern.
Status von ioBroker und Adaptern anzeigen:
iob status
sudo systemctl status iobroker.service --no-pager
ioBroker aktualisieren:
iob stop
iob update
iob upgrade self
iob upgrade
iob start
oder sudo reboot
Rechte reparieren:
sudo chown -R iobroker:iobroker /opt/iobroker
Diagnoseskript starten:
iob diag
ioBroker-Fixer:
iob stop && iob fix
Oder direkt aus dem Internet (optional mit --classic):
iob stop && curl -fsSL https://iobroker.net/fix.sh | bash - --classic
💡 Hinweis
Warnungen wie „sudo: apt-get: Befehl nicht gefunden“ kannst du ignorieren.
Diese gelten nur für Debian-basierte Systeme.
🗑️ ioBroker vollständig entfernen
⚠️ Achtung
Das löscht
/opt/iobrokersamt Inhalt sowie das Home-Verzeichnis des Benutzersiobroker, falls vorhanden.
sudo systemctl stop iobroker.service 2>/dev/null || true
sudo systemctl disable iobroker.service 2>/dev/null || true
sudo rm -f /etc/sudoers.d/iobroker
sudo rm -rf /opt/iobroker
sudo userdel -r iobroker
sudo groupdel iobroker 2>/dev/null || true
sudo rm -f /etc/systemd/system/iobroker.service
sudo systemctl daemon-reload
sudo reboot
Ein Neustart ist normalerweise nicht nötig, kann aber nichts schaden.
