NEWS
ioBroker unter Windows - Eine Anleitung und ein Rückblick
-
Vorbemerkung:
An die Windows-Kritiker: Ich bitte euch, diesen Thtread nicht mit Windows-Kritik zu fluten. Ja, Linux mag die bessere Wahl sein, um ioBroker zu betreiben. Wer aber Windows nutzen will, und sei es nur, um ioBroker eben mal auszuprobieren, soll das doch tun (können).
Wen mein Gesabbel nicht interessiert, der liest hier weiter.
ioBroker unter Windows hat einen schlechten Ruf. Das finde ich schade, denn gerade Einsteiger würden ioBroker gerne einfach mal schnell unter Windows ausprobieren, ohne sich gleich mit Linux auseinander zu setzen.
Der schlechte Ruf kommt vor allem daher, dass es für Windows lange keine einfache Installationsmethode gab. Dann wurde ein genialer Installer entwickelt, der leider ein großes Problem hat: Die vorliegende Version enthält eine fehlerhafte Controller Version und der zuständige Entwickler fiel leider aus, so dass keine neue Version mit korrigiertem Controller veröffentlicht werden konnte.
Inzwischen ist einige Zeit ins Land gegangen und es gibt dadurch noch weitere Fallstricke bei Verwendung dieses Installers. Man kann ihn noch verwenden, muss aber einige Schritte genau einhalten, damit das Ergebnis rund funktioniert. Dazu später mehr.Inzwischen wird an einer neuen Installationsroutine gearbeitet und fleißig getestet. Sie besteht im Kern aus einem Node.js Programm, das man per npx ausführen kann. Dafür muss allerdings bereits Node.js installiert sein, weshalb es auch einen Windows EXE Installer geben wird, der diese beiden Aufgaben übernimmt: Node.js installieren und anschließend den npx Aufruf durchführen. Für den EXE Installer gibt es bereits einige Korrekturen, die aber bisher leider nicht veröffentlicht werden konnten. Es wird aber daran gearbeitet.
Ich möchte im Folgenden kurz die derzeit mir bekannten Installationsmöglichkeiten unter Windows kurz beschreiben.
Npx Installationsroutine - Für Puristen
Der "neue" EXE Windows Installer - Dicke Empfehlung, vor allem für Einsteiger
Der "alte" Windows Installer - Nur noch für Cracks
ioBroker unter WSL - Evtl. ein Kompromiss aus beiden Welten? -
Npx Installationsroutine
Die Installation besteht aus wenigen Schritten:
Am Einfachsten ist derzeit die folgende Variante:- Node.js per msi installieren (Standardeinstellungen verwenden):
Download (Stand 25.04.2023):
https://nodejs.org/dist/v18.16.0/node-v18.16.0-x64.msi für 64 Bit Windows
https://nodejs.org/dist/v18.16.0/node-v16.19.0-x86.msi für 32 Bit Windows
Im Startmenü findet man jetzt einen Shortcut "node.js command prompt"
Darauf rechts mit der Maus klicken und "Als Administraoor ausführen" wählen - Es erscheint ein Cmd Fenster
- darin gibt man nacheinander diese 5 Kommandos ein:
mkdir C:\iobroker cd C:\iobroker npx detect-port 9000 npx detect-port 9001 npx detect-port 8081
Beim ersten der drei npx Aufrufe muss ggfs. noch einmal mit y bestätigt werden.
WICHTIG: Nach jedem der Aufrufe MUSS genau die gleiche Nummer auftauchen wie angegeben. Sollte das nicht der Fall sein, ist ein wichtiger ioBroker Port belegt und die Installation wird nicht klappen. In dem Fall müsst ihr ermitteln, wer die Ports belegt. Wenn ihr nicht selbst dahinter kommt, findet sich bestimmt hier im Forum jemand, der helfen kann.
Es sollte also so aussehen:C:\ioBroker>npx detect-port 9000 9000 C:\ioBroker>npx detect-port 9001 9001 C:\ioBroker>npx detect-port 8081 8081
Wenn das der Fall ist, startet man die eigentliche ioBroker Installion mit
npx @iobroker/install
- es wird dann eine Weile dauern und am Ende läuft ioBroker bereits und der Admin ist per Port 8081 erreichbar
- Dann in einem Webbrowser http://localhost:8081 eingeben und dem Wizard folgen
Fertig.
Damit laufen fast alle Adapter ohne Probleme. Lediglich ein paar seltene Exemplare, die Python oder C/C++ Compiler bei der Installation brauchen, werden nicht auf Anhieb nutzbar sein. Das lässt sich aber einrichten, würde hier aber zu weit führen.
Update ioBroker Installtion 4.3.1 seit 28.02.2023
- Es werden jetzt auch Windows Startmenü-Einträge erzeugt:
-- Start ioBroker Service
-- Restart ioBroker Service
-- Stop ioBroker Service
-- ioBroker Admin
-- ioBroker Command line
Der letzte Eintrag "ioBroker Cmd line" startet ein Cmd Fenster mit Admin Rechten, in dem ioBroker Wartungsarbeiten gemacht werden können. - Vorbereitungen für das neue interaktive Windows Setup.
- Ein paar kleine Optimierungen in der Anzeige
Exkurs: Mehrere ioBroker Installationen auf einem PC
Mit der neuesten Version 4.3.1 der ioBroker Installationsscripts, können mehrere parallele Installationen auf einem Windows Computer gemacht werden. Jede Installation braucht dafür einen eigenen Servicenamen.
Zunächst starten wir wieder ein Cmd Fenster als Administrator und legen ein neues Verzeichnis für die ioBroker Installtion an:mkdir c:\ioBroker1
Achtung: die Standard ioBroker Ports dürfen nicht belegt sein, ggfs. müsst ihr also eine vorhandene ioBroker Installation erst einmal stoppen. Geprüft wird dann wie oben beschrieben mit
npx detect-port 9000 npx detect-port 9001 npx detect-port 8081
WICHTIG: Nach jedem der Aufrufe MUSS genau die gleiche Nummer auftauchen wie angegeben. Sollte das nicht der Fall sein, ist ein wichtiger ioBroker Port belegt und die Installation wird nicht klappen. s.o.
Dann prüfen wir, ob unser gewünschter Servicename auch noch nicht verwendet wird mitsc query ioBroker1.exe
Sollte so aussehen:
c:\ioBroker1>sc query ioBroker1.exe [SC] EnumQueryServicesStatus:OpenService FEHLER 1060: Der angegebene Dienst ist kein installierter Dienst.
Sollte da KEIN Fehler ausgegeben werden, sondern etwas wie ..
c:\ioBroker1>sc query ioBroker.exe SERVICE_NAME: ioBroker.exe TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
… dann ist der Name bereits belegt und ihr müsst einen neuen aussuchen.
Als nächstes wird dann eine Datei mit dem Namen .env angelegt, die den gewünschten Servicenamen enthält, z.B. so:
echo iobServiceName=ioBroker1 > .env
Damit wird die Datei .env mit folgendem Inhalt angelegt:
iobServiceName=ioBroker1
Als nächstes starten wir die Installation (mit @latest am Ende, damit auch wirklich die neueste Version benutzt wird):
npx @iobroker/install@latest
Jetzt warten, bis die Installation durchgelaufen ist.
Als Ergebnis habt ihr eine ioBroker Installation, die als Servicenamen ioBroker1 verwendet, aber die ioBroker Standard Ports nutzt.Ihr habt jetzt zwei Möglichkeiten:
- Ihr lasst die Ports so und startet immer nur eine ioBroker Installtion zur gleichen Zeit
In dem Fall empfehle ich, den Service von automatischem Start auf manuellen zu ändern:
c:\ioBroker1>sc config ioBroker1.exe start=demand [SC] ChangeServiceConfig ERFOLG
- Ihr ändert die Ports entsprechend ab:
Zunächst iob beenden:
iob stop
Den Admin Port ändert man mit:
iobroker set admin.0 --port wxyz
also z.B.
iobroker set admin.0 --port 8081
Und die internen Ports 9000 und 9001 ändert man mit:
iobroker setup custom
Und dann ioBroker wieder starten:
iob start
Somit kann man auf einfache Art und Weise mit der neuen npx Installation mehrere ioBroker Instanzen gleichzeitig betreiben. Lediglich Node.js wird von allen geteilt. Das kann man dafür aber per Standard-Installer Updaten.
- Node.js per msi installieren (Standardeinstellungen verwenden):
-
Der"neue" EXE Windows Installer:
der "neue" Installer ist inzwischen auf der offiziellen Download Seite vorhanden: Download Windows Installer
Da die ersten Tests positiv verlaufen sind, ist dieser jetzt meine aktuelle Empfehlung, besonders für Anwender, die einfach nur ioBroker auf Windows installieren wollen und keine Zusatzanforderungen wie Mehrfachinstallationen, etc. haben (aber wer weiß, evtl. kommt für diesen Anwenderkreis auch noch was ).
Der Installer ist so konzipiert, dass er die aktuelle Nodes.js Version ermittelt, bei Bedarf herunterlädt und installiert. Das geht auch bei einer vorhandenen Installation: Einfach den Installer nochmal starten und den Anweisungen folgen.
Bei Bedarf kann auch der neue ioBroker Fixer gestartet werden und entsprechende Ausnahmen für die Windows Firewall gesetzt werden.
Bei Problemen mit diesem Installer könnt ihr gerne den aktuellen Test Thread verwenden: Test ioBroker unter Windows installieren - 2023 Edition
Ich freue mich dort auch über positives Feedback, denn im Moment kann ich nicht so richtig einschätzen, wie oft der neue Installer bereits genutzt wird.
-
Der "alte" Windows Installer iobroker-latest-windows-installer.exe:
Ich selbst nutze für meine Windows Neuinstallationen den oben beschriebenen neuen Installer und würde das auch jedem empfehlen, der mich danach fragt. Wer aber dennoch den alten Installer nutzen möchte, findet hier eine Anleitung.
Ich habe mich bemüht, die manuellen Schritte möglichst einfach mit wenig Potential für Missverständnisse zu beschreiben. Deshalb nutze ich bevorzugt Kommandos, die in der ioBroker Kommandozeile einzutippen sind.
Diese Anleitung geht davon aus, dass ein aktuelles Windows 10 System verwendet wird. Bei (sehr viel) älteren Windows 10 Versionen oder gar Windows 7 werden die unten verwendeten Tools tar und curl nicht funktionieren. Diese Schritte müsstet ihr dann "per Hand" ausführen. Aber wie gesagt, auf einem aktuellen System ist alles an Bord, was man für diese Anleitung braucht.
Zunächst laden wir den "alten" Installer herunter, führen ihn aus und folgen den Anweisungen.
Bei den Optionen wählen wir "Eine neue ioBroker-Serverinstanz installieren" aus, der Rest kann auf Standardeinstellungen bleiben. Allerdings würde ich es sicherheitshalber vermeiden, einen Pfad, der Leerzeichen enthält, zu verwenden.
In meinem Beispiel habe ich als Pfad F:\iobroker und als Instanz Namen den Vorgabewert "SmartHome" verwendet. Die werde ich im folgenden Text als Beispiel verwenden.Im abschließenden Dialog des Installers wählen wir am besten "ioBroker-Weboberfläche starten" ab.
Und noch ein Hinweis: Sollte ein Fehler gemeldet werden, dass es bei der Installation MS Build Tools ein Fehler aufgetreten ist, kann man das ignorieren.
Wichtig:
Jetzt erst einmal nichts weiter mit ioBroker machen, bevor diese Anleitung zu Ende ausgeführt wurde. Insbesondere keine Adapter installieren oder aktualisieren!Im Startmenü gibt es jetzt einen neuen Eintrag im Ordner ioBroker mit dem Namen "ioBroker(<Name der Instanz>) Kommandozeile". In meinem Fall heißt der Eintrag also "ioBroker (SmartHome) Kommandozeile".
Diesen Startmenü-Eintrag starten wir jetzt, es erscheint ein Cmd Fenster (evtl. müssen wir zunächst das Administrator Passwort des PCs eingeben, da die ioBroker Kommandozeile als Administrator ausgeführt wird).********************************************************** *** Welcome to ioBroker. *** *** *** *** Type 'iobroker help' for list of instructions. *** *** For more help see *** *** https://github.com/ioBroker/ioBroker.docs *** ********************************************************** Your environment has been set up for using Node.js 10.17.0 (x64) and npm. F:\iobroker\SmartHome>
Zunächst stoppen wir ioBroker:
iob stop
Da sich seit Node.js 18.0 etwas in den Berechtigungen geändert hat, müssen wir dem Windows Dienst jetzt einmalig LocalSystem als Konto zuweisen, das machen wir mit
sc config iobroker(<Name der Instanz >) obj=LocalSystem
In meinem Beispiel also mit
F:\iobroker\SmartHome>sc config iobroker(SmartHome) obj=LocalSystem [SC] ChangeServiceConfig ERFOLG
Wichtig ist die Erfolgsmeldung, ansonsten habt ihr euch wahrscheinlich vertippt.
Jetzt aktualisieren wir Node.js, dazu benennen wir zunächst die alte Version umrename nodejs nodejs_org
Und laden die aktuell empfohlene Node.js Version herunter (derzeit 18.15.0, Stand 21.02.2023)
Für 64 Bit Systeme (und das sollten die allermeisten sein) geht das mitcurl --output .\nodejs.zip --url https://nodejs.org/dist/v18.15.0/node-v18.15.0-win-x64.zip
Für 32 Bit Systeme die URL https://nodejs.org/dist/v16.19.0/node-v18.18.0-win-x86.zip verwenden.
Jetzt packen wir das Zip File aus und benennen den nodejs Ordner passend um (Bei Verwendung der 32 Bit Variante bitte den Pfad im rename Kommando selbst anpassen):
tar xf nodejs.zip rename node-v18.15.0-win-x64 nodejs
Und schließlich müssen wir noch die angepasste Datei nodevars.bat übernehmen:
copy /Y nodejs_org\nodevars.bat nodejs\nodevars.bat
Jetzt aktualisieren wir ioBroker auf die aktuelle Version (das muss nur dieses eine Mal auf diese Art gemacht werden):
npm i iobroker.js-controller@stable
Das dauert jetzt ein paar Minuten.
Anmerkung: Es gibt auch die Empfehlung zusätzlich den Parameter –ignoreScripts anzugeben, mit der aktuellen ioBroker Version scheint das aber eher zu schaden als zu nutzen.
Und noch eine Anmerkung: meist erscheint ein Hinweis, man solle "npm audit fix" eingeben. Das AUF KEINEN FALL MACHEN!
Jetzt aktualisieren wir noch alle Adapter (und ggfs. auch den Controller):
iob update iob upgrade iob upgrade self
Beim zweiten Befehl muss noch ein paar Mal mit Y bestätigt werden.
Anschließend starten wir ioBroker wieder mit
iob start
Jetzt kann die gerade installierte ioBroker Instanz unter dem bei der Installation angegebenem Port in einem Webbrowser verwendet werden, also im Standardfall unter htts://localhost:8081
Sollte das wider Erwarten nicht möglich sein, bitte nicht planlos rumprobieren, sondern im Forum fragen. Oft hilft auch ein Blick ins Log Verzeichnis der ioBroker Instanz weiter.
Ich habe das gerade eben, währen ich diese Anleitung geschrieben habe, nochmal durchgeführt und kann somit bestätigen, dass diese Variante Stand heute, 21.01.2023, funktioniert.
-
ioBroker unter WSL
Für die, die mit der Abkürzung WSL nix anfangen können: In Wikipedia ist das viel besser erklärt, als ich es jeh könnte:
Windows-Subsystem_für_LinuxAlso meiner Meinung nach braucht man die WSL Variante inzwischen nicht mehr wirklich. Seit @Bluefox und @apollon77 die Installationsscripte für Windows flott gemacht haben, sehe ich keinen echten Anwendungsfall für WSL und ioBroker mehr.
Da bisher auch niemand danach gefragt hat und das Schreiben einer Anleitung doch mit Arbeit verbunden wäre, setze ich das Thema erst einmal auf "hold".
-
@gaspode sagte in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
ioBroker unter WSL - Evtl. ein Kompromiss aus beiden Welten?
Mann sollte erklären was WSL ist.
-
@sigi234
Ja, das kommt natürlich noch.
Edit: Hab's schonmal vorab ergänzt, eigentlich wollte ich das zusammen mit der Anleitung erklären, aber du hast Recht. Gleich ist besser. -
Der Alte war der Beste, er erkannte die belegten Ports und lies mehrere Systeme zu, und entfernte die auch bei Bedarf.
-
@sigi234 said in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Der Alte war der Beste
So sehe ich das auch. Leider müssen wir mit dem auskommen, was wir haben. Die belegten Ports werden auch bald von dem neuen Installer erkannt, das hat @codierknecht schon eingebaut. Das und ein paar weitere Fixes werden hoffentlich in Kürze veröffentlicht. Ob man die Multi-Instanzen wieder reinbringen kann/will, wird sich noch zeigen. Das ist zwar eine tolle Sache, macht die Sache für Einsteiger aber unnötig kompliziert.
Mal sehen, ob man beides unter einen Hut bringen kann. -
@gaspode sagte in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Ob man die Multi-Instanzen wieder reinbringen kann/will, wird sich noch zeigen.
Sehr Wichtig finde ich. Vor allem zum testen. Eventuell als Option/Experten Modus?
Ich hatte 3 Systeme:Test - Produktiv - VIS
-
@sigi234 said in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Sehr Wichtig finde ich. Vor allem zum testen. Eventuell als Option/Experten Modus?
Kommt Zeit kommt Rat. Jetzt lass die Entwickler erst mal die Basis stabil hinbekommen.
@sigi234 said in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Test - Produktiv - VIS
Sofern die nicht gleichzeitig laufen müssen, geht das per npx jetzt schon. Einfach die oben beschriebene Installation mehrfach in verschiedenen Verzeichnisen ausführen und dafür sorgen, dass dabei keine andere Instanz läuft.
Allerdings gibt es dabei nur noch ein Node.js Installation, d.h. unterschiedliche Node.js Versionen kann man so nicht gleichzeitig verwenden.
Wer sich auskennt, kann bestimmt auch die entsprechenden Ports umkonfigurieren, so dass sogar gleichzeitiger Betrieb mehrerer Instanzen möglich wäre. Dazu kann ich mangels Ahnung aber leider nix beitragen. Evtl. könnte @apollon77 einen Tipp geben...?Anleitung entsprechend angepasst.
-
@sigi234 sagte in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Der Alte war der Beste, er erkannte die belegten Ports und lies mehrere Systeme zu, und entfernte die auch bei Bedarf.
die Ports kommen (hoffentlich]) auch beim neuen noch.
Aber wenn ich daran denke, wie lange @Stabilostick an "seinem" Installer gefrickelt hat um das so hinzubekommen...Was eigentlich nur als proof of concept gedacht war und dann beim nächsten Windows Update nicht mehr lief, ist das für einen Hobbyprogrammierer nicht mehr zu schaffen gewesen.
Ich habe zwar keinsterlei Ahnung von WIN-Programmierung, aber der jetzige Ansatz scheint mir (erst einmal??) eher auf Stabilität und Aktualisierbarkeit zu legen, als alle möglichen Schmankerl implementieren zu wollen.
-
@homoran sagte in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
die Ports kommen (hoffentlich]) auch beim neuen noch.
Wie @Gaspode schon schrieb: Das ist schon drin. Die in der Zwischenzeit von uns durchgeführten Änderungen müssen aber noch vom ioB-Team reviewed werden, bevor daraus ein neuer Installer gebaut wird.
Neben den belegten Ports wird dann auch eine ggf. bereits installierte Node-Version erkannt und dann auch verwendet. Auch den Aufruf der eigentlichen ioBroker-Installation hat @Gaspode gefixt. Die hat schon mal Ärger gemacht.
Warten wir mal ab ... -
@gaspode said in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
Wer sich auskennt, kann bestimmt auch die entsprechenden Ports umkonfigurieren, so dass sogar gleichzeitiger Betrieb mehrerer Instanzen möglich wäre. Dazu kann ich mangels Ahnung aber leider nix beitragen. Evtl. könnte @apollon77 einen Tipp geben...?
Hi, ich hab nochmal ein wenig gegraben. Die Ports kann man so ändern:
Admin Port:
iobroker set admin.0 --port wxyz
also z.B.
iobroker set admin.0 --port 8081
Und die internen Ports 9000 und 9001 mit
iobroker setup custom
Somit kann man auf einfache Art und Weise mit der neuen npx Installation mehrere ioBroker Instanzen gleichzeitig betreiben. Lediglich Node.js wird von allen geteilt. Das kann man dafür aber per Standard-Installer Updaten.
-
Ich habe die Anleitung für den "alten" Installer oben zugefügt und bei der npx Installation noch einen Abschnitt hinzugefügt, wie man damit mehrere Instanzen auf einem Rechner parallel betreiben kann.
Edit: Leider fehlt in der Anleitung noch ein Schritt zu den Multi-Instanzen. Sorry für den Schnellschuss. Ich aktualisiere das oben, sobald ich dazu komme.
Frage:
Besteht Interesse an der Beschreibung zu WSL?
Da ich meine Anleitungen immer nochmal from Scratch teste, muss ich mir dafür nämlich erst einmal ein WSL freies System aufsetzen, was eine Weile dauern könnte. -
iobroker NIE mit sudo anpacken. Unter Windows wäre mir es eh neu das man da per sudo in die root-Rolle wechselt.
-
@thomas-braun said in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
iobroker NIE mit sudo anpacken. Unter Windows wäre mir es eh neu das man da per sudo in die root-Rolle wechselt.
Edit: Ach jetzt, ja. Sorry. Das sudo hatte da nix verloren. Das hab ich versehentlich irgendwoher mitkopiert unnd vergessen zu ändern. Macht unter Windows natürlich keinen Sinn.
Ich korrigiere es oben. Danke für den Hinweis!
-
Herzlichen Dank, daß es da jetzt unter Win weitergeht!
Als langjähriger ioBroker unter Windows Nutzer kann ich bestätigen, daß ioBroker unter Win auch dauerhaft stabil läuft. Auch als Produktivsystem
Schneller Einstieg und man kann auch dabei bleiben.
Laut Statista https://de.statista.com/statistik/daten/studie/158102/umfrage/marktanteile-von-betriebssystemen-in-deutschland-seit-2009/ hatte Win im November 22 in D 77% Marktanteil. Linux unter 3% und ich möchte das gar nicht auf das empfohlene Debian runterbrechen.
ioBroker wird ohnehin immer häufiger auf leistungsfähiger Mainstream HW (i3 Klasse aufwärts 8GB+ RAM, SSD) betrieben.
Es liegt also nahe mit einem alten Win Gerät einzusteigen. -
@klassisch sagte in ioBroker unter Windows - Eine Anleitung und ein Rückblick:
hatte Win im November 22 in 75% Marktanteil. Linux unter 3% und ich möchte das gar nicht auf das empfohlene Debian runterbrechen.
das bezieht sich nicht auf Serversysteme!
Da sieht die Welt ganz anders aus. -
ioBroker-Installationen:
90% Linux
9%WindowsWenn schon schiefe Statistiken über die Verbreitung herangezogen werden. Im Serverbereich sieht das nämlich komplett anders aus als bei Klicki-bunti-Desktop.