ioBroker läuft nicht mehr

Es kommt oft im Forum, dass ioBroker nicht mehr läuft. Das ist aber eine Aussage, die genau so viel Information trägt, wie: mein Auto fährt nicht. 🙂

Dabei denkt man nicht, das es 1000 Gründe sein können, warum ein Auto nicht fährt: kein Kraftstoff, Batterie lehr, Reifen platt und, und, und…

ioBroker ist sehr modular aufgebaut und man kann jedes Teil ziemlich einfach reparieren. Die Konfigurationsdateien sind aus dem Verzeichnis mit Node.js Paketen raus genommen und so lange, dass diese Konfigurations-Verzeichnis noch ganz ist, ist mit der ioBroker installation nichts ernsthaftes passiert.

Als erstes merkt man, dass ioBroker nicht läuft, wenn „admin“ nicht läuft. Es gibt aber mehr oder weniger klarer Algorithmus, wie man checken kann, was kaputt ist.

Prüfen ob js-controller läuft:

  • linux: ps -A | grep iobroker
  • windows: Prüfen ob node.exe Prozess da ist in Prozess Explorer (alle Prozesse anzeigen)

Unter linux muss so was sichtbar sein:
pi@pi:~$ ps -A | grep iobroker
1807 ? 13:59:22 iobroker.js-con

Falls nicht läuft, dann versuchen ioBroker zu starten mit

cd /opt/iobroker
iobroker start

oder
cd C:\ioBroker
iobroker start

unter windows.

Falls immer noch nicht läuft oder es kommen Fehlermeldungen, dann kann man versuchen controller manuell zu starten.

cd /opt/iobroker
node node_modules/iobroker.js-controller/controller.js --logs

Falls Fehlermeldungen kommen, dann kann man versuchen „js-controller“ zu updaten. Sehe „Ein Adapter oder js-controller neu installieren„.

Wenn js-controller läuft, dann müssen die TCP Ports 9000 und 9001 belegt sein. Das kann man mit dem Kommando prüfen:
netstat -n -a -p TCP

Es muss folgende Zeilen sichtbar sein:
TCP 0.0.0.0:9000 0.0.0.0:0 LISTENING
TCP 0.0.0.0:9001 0.0.0.0:0 LISTENING

Falls nichts zu sehen ist (oder nur eine), dann sind vermutlich die Ports von anderen Programmen belegt. Man kann die Ports in /opt/iobroker/iobroker-data/iobroker.json ändern. Oder ein anderes Programm umkonfigurieren.

Ein Adapter oder js-controller neu installieren

Falls ein Adapter oder js-controller lief und nach dem Update nicht mehr, dann ist hoch wahrscheinlich bei dem Update was schiff gelaufen. Man kann aber sehr einfach ein Adapter noch mal installieren. Dafür muss man nur in der Konsole schreiben:
cd /opt/iobroker
iobroker stop adapterName
npm install iobroker.adapterName
iobroker upload adapterName
iobroker start adapterName

Oder für js-controller:

cd /opt/iobroker
iobroker stop
npm install iobroker.js-controller
iobroker start

Prüfen oder node.js und npm richtig installiert sind

Falls js-controller nicht läuft, dann konnte es auch sein, dass node.js gar nicht installiert ist.
Es wird empfohlen eine 4.x Version von node.js zu verwenden, aber auch ab 0.10.x müssen funktionieren.
Die Node.js Version 5.x oder 6.x sind noch nicht geprüft (stand 16.05.2016) und da gibt es keine Garantie, dass es funktionieren wird.

Die Befehle
node -v
npm -v

müssen die Versionsnummer anzeigen. Falls es nicht der Fall ist, dann sollte man node.js deinstallieren und neu installieren. Oder Suchpfad prüfen.

Falls node.js neu installiert werden muss, dann muss man den erst deinstallieren:
apt-get purge nodejs
apt-get purge node
apt-get autoremove
reboot

Und dann installieren (für RasPI):
wget http://node-arm.herokuapp.com/node_archive_armhf.deb
sudo dpkg -i node_archive_armhf.deb
sudo apt-get install build-essential
reboot

Oder hier schauen für andere Systeme.

Prüfen ob Admin-Adapter läuft

Erst anschauen, ob admin aktiviert ist:
cd /opt/iobroker
iobroker list instances

es muss so eine Zeile zu sehen sein:
system.adapter.admin.0 : admin - enabled, port: 8081, bind: 0.0.0.0, run as: admin

Falls da „disabled“ statt „enabled“ steht, man kann Adapter so aktivieren:
iobroker start admin

Falls IP Adresse nicht stimmt, dann schreiben:
iobroker set admin.0 --bind 0.0.0.0

um an allen IP Adressen erlauben.

Man kann auch port ändern:
iobroker set admin.0 --port 8081

oder SSL ausschalten:
Man kann auch port ändern:
iobroker set admin.0 --ssl false

Dann muss die Instanz am port (default 8081) zu sehen sein.
Mit
netstat -n -a -p TCP

kann man prüfen ob die Zeile zu finden ist:
TCP 0.0.0.0:8081 0.0.0.0:0 LISTENING

Falls immer noch nicht läuft, dann kann man manuell starten und schauen, ob es irgendwelche Fehler zu sehen sind:
cd /opt/iobroker
node node_modules/iobroker.admin/admin.js --logs

Es kann auch was im Log sein. Die Log-Datei konnte unter /opt/iobroker/log/iobroker.JJJJ-MM-TT.log gefunden werden.
Man konnte mit dem Kommando
cd /opt/iobroker
cat log/iobroker.JJJJ-MM-TT.log

Die Datei anzeigen. Natürlich JJJJ-MM-TT muss mit aktuellem Datum ersetzt werden. („cat“ ist nur unter Linux möglich)

Andere Instanz vom Admin installieren

Falls die Einstellungen von der Admin-Konsole verstellt sind und man nicht mehr auf Admin-Seite zugreifen kann, gibt es noch die Möglichkeit eine zweite Admin-Instanz zu installieren.

Dafür:
iobroker add admin --port 8089

ausführen.

Wo 8089 ein Port, welche sicherlich frei ist. Danach kann man Admin unter http://ip:8089 erreichen.
Nach dem als die Einstellungen wieder in Ordnung sind, sollte man die neue (zweite auf dem port 8089) Instanz deinstallieren, um die Ressourcen zu sparen.