Skip to main content

🚀 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/

Bildschirmfoto_ioBroker_Welcome.png

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 fix nicht 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/iobroker samt Inhalt sowie das Home-Verzeichnis des Benutzers iobroker, 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.