homebridge-config-ui-x standalone

  • Die neue Version 4 von homebridge-config-ui-x macht es möglich, das Plugin auch ohne Homebridge zu betreiben. Das bedeutet, dass die Weboberfläche immer noch gesteuert werden kann, auch wenn homebridge gecrasht oder gestoppt ist. Bislang riss das auch homebridge-config-ui-x in die Tiefe.


    So geht man vor:

    sudo nano /var/homebridge/config.json


    In der Konfiguration für homebridge-config-ui-x tragt ihr einen neuen Parameter ein, und zwar "standalone": true.


    Abspeichern und homebridge neu starten. Ab jetzt wird homebridge das Plugin nicht mehr laden.


    Jetzt brauch ihr ein Startskript für den systemd, um das Plugin außerhalb der Homebridge zu starten. Dazu könnt ihr das vorhandene Skript für die Homebridge kopieren und dann einige Änderungen vornehmen:


    sudo cp /etc/systemd/system/homebridge.service /etc/systemd/system/homebridge-config-ui-x.service


    Dann:

    sudo nano /etc/systemd/system/homebridge-config-ui-x.service


    Hier verändert ihr nur zwei Zeilen, und zwar ExecStart und RestartSec:

    Abspeichern. Dann:


    sudo systemctl daemon-reload

    sudo systemctl enable homebridge-config-ui-x

    sudo systemctl start homebridge-config-ui-x


    Das wars, ab jetzt läuft homebridge-config-ui-x losgelöst von der Homebridge und ihr könnt auch bei einer gescrashten oder gestoppten Homebridge Plugins deinstallieren oder konfigurieren, ohne die Shell aufrufen zu müssen.


    Stefan

    Einmal editiert, zuletzt von sschuste ()

  • Hab auch schon 4.0.1 installiert und finde diesen Modus echt angenehm! Was jetzt noch GEIL waere, waenn config-ui-x es erlauben wuerde beim Installieren eines plugins dies in eine neue Instanz zu schieben.


    Kombi von config-ui-x mit Instanzen und dem instances Plugin von SeydX wuerde es endgueltig fuer Laien ermoeglichen, schnell und sicher config Dateien zu befuellen und Instanzen neu zu starten falls notwendig.


    Vielleicht koennte man das ja beim Entwickler noch nachfragen, ob das implementierbar ist. <3

  • Anstatt der vielen Instanzen sollte man lieber Docker-Container nehmen.

  • Habe das mal schnell ausprobiert


    dann bekomme ich von Telegram (Reporter.sh) eine nachricht

    wenn ich nun 192.168.178.25:8080 aufrufe kommt keine Config-ui-x seite mehr

    Homebridge scheint zu laufen.Kann alles steuern via Home app.


    was könnte der fehler sein?


    EDIT

    Treu dem motto Reboot tut gut

    Nach dem Neustart geht alles wieder

    Einmal editiert, zuletzt von FettesB ()

  • Hi, merci für ausprobieren :)


    Verstehe ich das richtig: Ich benötige für jede Instanz dann ZWEI Services?

    Also HB und UI? Und die kennen sich durch das EnvironmentFile?


    Und wo platziere ich da am besten das InstancesPlugin? Ich nehme an, in einer eigenen Instanz, da es ja doof wäre, die zu stoppen ?.


    Ist es eigentlich problematisch, Plugins in andere Instanzen umzuziehen? Oder muss man dann die ganzen Szenen und Automationen wieder neu bauen?

  • Ich benutze nur eine Instanz für alles. Die braucht zwar fast eine Minute zum Starten, aber ich restarte sie nur bei Updates, und meinen Raspi reboote ich auch nur sehr selten. Das letze Mal vor 42 Tagen, meint uptime.


    Die Standalone-Version von homebridge-config-ui-x liest config.json. Das EnvironmentFile wird von systemd gelesen, und da die Parameter für homebridge-config-ui-x die gleichen sind, habe ich kein neues angelegt.


    Stefan

  • FettesB: Error: listen EADDRINUSE bedeutet nur, dass bereits ein homebridge-config-ui-x läuft: einmal homebridge restarten.

  • Wow, das ist echt eine geniale Sache! Vielen Dank für die Klasse Anleitung!


    ...etwas später

    Anleitung befolgt, läuft.


    Ein kleiner Fehler hat sich noch in der Beschreibung eingeschlichen. Beim Befehl zum Kopieren der services-Datei steht am Anfang zweimal "sudo" hintereinander. :)

    Einmal editiert, zuletzt von carsten_h ()

  • Ein kleiner Fehler hat sich noch in der Beschreibung eingeschlichen. Beim Befehl zum Kopieren der services-Datei steht am Anfang zweimal "sudo" hintereinander.

    Jetzt nicht mehr. Danke für den Hinweis :thumbup:

  • Ich hatte die Zugriffsrechte meiner config.jason über Terminal geändert, so dass ich über Filezilla Dateien ändern/lösche kann. Leider werden diese Rechte wieder auf Leserechte gesetzt wenn ich mal wieder Änderungen direkt über das UI eingebe. Ich denke ist ein Konflikt zwischen User "pi" (über Terminal) und user "admin" (über UI).


    Kann ich das irgendwie ändern so dass ich permanent Schreibrechte habe?


    Danke

  • Interessant, das wusste ich noch nicht. Du hast recht: homebridge-config-ui-x setzt die Rechte zurück auf den User, unter dem homebridge läuft.


    Wer seine Homebridge nach der Forenanleitung installiert hat, findet die config.json in /var/homebridge:


    ls -l /var/homebridge/config.json

    -rw-r--r-- 1 homebridge homebridge 13092 Apr 19 20:21 config.json


    Hier kann man sehen, dass die Datei dem User homebridge gehört, und ganz links sieht man die Zugriffsrechte:

    - rw- r-- r--. Das Minus ganz links bedeutet, dass hier eine Datei zu sehen ist (bei einem Verzeichnis stünde dort ein d). Die Dreiergruppe danach (rw-) bedeutet, dass der User homebridge die Datei lesen (r) und schreiben (w) darf, aber nicht ausführen (was man mit einer Datei ja eh nicht machen kann, aber ansonsten stünde dort anstatt des Minuszeichens ein x). Die nächste Dreiergruppe (r--) besagt, dass Mitglieder der Gruppe homebridge die Datei lesen, aber nicht schreiben und nicht ausführen können (normalerweise wurscht, weil die Gruppe homebridge hat nur ein Mitglied, und das ist der User homebridge). Die letzte Dreiergruppe rechts (r--) sagt, dass alle anderen User auf dem Computer die Datei lesen, aber nicht schreiben und nicht ausführen können.


    So. Der User pi darf daher die Datei /var/homebridge/config.json nur lesen, aber nicht schreiben. Wenn er das will, muss er das mit Rootrechten tun, auf der Shell also ein sudo vor den Schreibbefehl setzen. Das geht mit FileZilla leider nicht.


    Ändert man den Besitzer der Datei von User homebridge auf pi, dann kann man mit FileZilla schreiben, aber leider setzt homebridge-config-ui-x alles wieder zurück, was ich außerordentlich löblich finde. Guter Programmierstil, aber schlecht für dich.


    Ich würde jetzt den User pi der Gruppe homebridge hinzuzufügen und die Schreibrechte von /var/homebridge/config.json so ändern, dass die Gruppe homebridge auch dahin schreiben darf, also auf von -rw-r--r-- auf -rw-rw-r--. Ja, sieht aus wie ein Morsecode.


    Den User pi der Gruppe homebridge hinzufügen:

    sudo usermod -a -G homebridge pi


    Die Datei /var/homebridge/config.json für die Gruppe homebridge schreibbar machen:

    sudo chmod g+w /var/homebridge/config.json


    ls -l /var/homebridge/config.json

    -rw-rw-r-- 1 homebridge homebridge 13092 Apr 19 20:22 config.json


    Jetzt sollte funktionieren, was du gern machen möchtest. Theoretisch, ich hab's nicht ausprobiert. Zumindest habe ich beim Testen gesehen, dass homebridge-config-ui-x diese Änderung nicht rückgängig macht.


    Stefan

    Einmal editiert, zuletzt von sschuste ()

  • Das tut beim ersten Mal ein bisschen weh!

    Wird dann aber immer angenehmer und auf Dauer auch entspannter.

  • Eine kleine Frage habe ich noch. Über die standalone Variante kann man ja config-ui-x auch updaten. Aber wie bekommt man dann diese Instanz neu gestartet, damit die Änderungen wirksam werden?


    Danke!

  • Gute Frage. Das geht wohl augenblicklich nur über die Shell mit sudo systemctl restart homebridge-config-ui-x.


    Stefan

  • sschuste Verstehe ich das richtig, kenne mich damit nicht so aus, aber wenn ich bereits eine Datei habe /etc/systemd/system/homebridge.service die derzeit bei einem Pi Reboot automatisch startet, dann brauche ich die doch eigentlich nur anzupassen, oder?

    Im Moment sieht die so aus...

    Und wenn ich die mit Deinem Beispiel vergleiche müsste ich dort doch einfach nur zusätzlich die Zeile hinzufügen.

    ExecStart=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS


    Macht das Probleme, dass bei mir User=Pi ist und kann ich einfach so mit der Änderung des homebridge.service vorgehen? :/

  • Du kannst in homebridge.service nicht zweimal ExecStart angeben. Aber du kannst mit ExecStartPre oder ExecStartPost arbeiten. Das würde dann so aussehen:


    ExecStartPre=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS

    ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS


    Damit würde dann die GUI gestartet werden und - wenn das klappt - danach die Homebridge. Oder anders herum, erst die Homebridge und dann die GUI:


    ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS

    ExecStartPost=/usr/local/bin/homebridge-config-ui-x $HOMEBRIDGE_OPTS


    Da du Restart=on-failure gesetzt hast, würden bei einem Absturz der Homebridge beide Bestandteile automatisch wieder gestartet werden - also GUI und Homebridge. Das wird eine Fehlermeldung auslösen, nämlich EADDRINUSE, weil ja homebridge-config-ui-x noch läuft und nun nochmal gestartet werden soll. Beim Start wird dann festgestellt, dass die Adresse und der Port schon belegt sind und zwar vom noch laufenden homebridge-config-ui-x. Ich habe keine Ahnung, was das für Auswirkungen hat. Ich würde annehmen, das bei ExecStartPre auch homebridge nicht mehr gestartet wird, aber um ehrlich zu sein: ich habe keine Ahnung.


    Das du pi als User benutzt, sollte keine Auswirkungen haben.


    Stefan

  • ? Na herzlichen Dank! Jetzt bin ich noch mehr verwirrt. ;)

    Ich kann ja nicht der Einzige sein, der Homebridge so startet und jetzt noch zusätzlich das config-ui-x als Service starten will, oder? :/

    Dann glaube ich gerade, ich lass alles mal so wie es ist. Hab einen Pi auf dem alles läuft mit meinen 31 Plugins und der läuft. Hab seit Monaten keinen Absturz mehr, wenn ich nicht gerade irgendwas verrücktes mache an dem ich selbst Schuld bin. Also wohl auch nicht so den Bedarf für das Feature standalone": true 8)