Automatischer und regelmässiger Neustart für die Homebridge auf Synology

  • Auf der Synology möchte ich eine automatische regelmässige Reboot-Routine für die Homebridge einrichten. Dazu habe ich ein benutzerdefinertes Skrypt unter den Aufgebenplaner in der DSM mit dem Befehl "sudo /usr/local/bin/docker container restart homebridge" erstellt. Dieser Befehl rebootet jedoch den gesamten Container. Ich möchte aber, dass nur die Homebridge neu gestartet wird. Kann mir jemand behilflich sein, wie der Befehl dafür lauten muss?

  • Welches Problem hast Du damit, dass der Container rebootet wird? Ich habe das ebenfalls integriert via Synology Aufgabenplaner. Jede Nacht wird das Docker-Image einmal neu gestartet.

  • Moin!

    Ich hab die Homebridge auf nem Raspi, aber der Befehl sollte ja so ziemlich der Gleiche sein:

    Plugin homebridge-cmdtrigger v0.3.4

    Code
    {
                "accessory": "CmdTrigger",
                "name": "Neustart Homebridge",
                "command": "sudo systemctl restart homebridge"
    },

    Das erzeig einen Schalter in Home den ich manuell und/oder zeitgesteuert auslöse.


    Grüße,

    Jo

  • Ich würde das Thema gern aufgreifen:

    Wie übergibst du das PW für den Sudo-Befehl? Ich scheitere leider grade daran.

    Der Ton macht die Musik.


    Plugins


    Konfiguration

  • Wie übergibst du das PW für den Sudo-Befehl? Ich scheitere leider grade daran.

    Das kann man nicht übergeben. Man kann nur den sudo-Befehl so konfigurieren, dass er für bestimmte Befehle von einem bestimmten User ausgeführt werden darf. Dann wird kein Passwort abgefragt.


    Die Standard-Homebridge sollte so konfiguriert sein. Wie ist dein Setup?

  • Welche Konfig meinst du genau?

    Die hier?


    hab's jetzt mit sudo visudo -f /etc/sudoers.d/ probiert und hier eine "shutdown" und "restart" Datei erzeugt (ohne Inhalt). Da kommt leider aber nur ein Fehler beim Ausführen des Schalters "Neustart Homebridge".


    Inhalt des sudoers.d - Verzeichnisses:

    Inhalt der Dateo "010_pi-nopasswd":

    Hab den Schalter wie folgt konfiguriert:

    Code
    "accessories": [
            {
                "accessory": "CmdTrigger",
                "name": "Neustart Homebridge",
                "command": "sudo shutdown -r 0",
                "_bridge": {
                    "username": "[xyz]",
                    "port": 36308



    mit deinem o.g. Befehl "sudo systemctl restart homebridge" in den Schalter-Einstellungen klappt es auch nicht.

    Da kommt zwar ein

    [15/04/2023, 11:39:08] [Neustart Homebridge] Command executed: 'sudo systemctl restart homebridge'

    zurück, aber es passiert nichts.

    Der Ton macht die Musik.


    Plugins


    Konfiguration

    7 Mal editiert, zuletzt von scoo ()

  • Die Frage ist, unter welchem User die Homebridge läuft. Es macht ja wenig Sinn, dem User pi die erforderlichen Neustart-Rechte zu geben, wenn sie möglicherweise der User homebridge benötigt. Abhilfe schafft ein

    ps aux | grep homebridge. So sieht das bei mir aus (kann bei dir anders sein):

    Code
    pi@homepi:~ $ ps aux | grep homebridge
    homebri+ 10834  3.4  3.4 296024 135776 ?       Rl   Apr11 206:05 homebridge
    pi       15376  0.0  0.0   7476   548 pts/0    S+   12:54   0:00 grep --color=auto homeb
    pi@homepi:~ $

    Hier steht, dass der Prozess homebridge mit der Prozess-Id 10834 vom User homebri+ ausgeführt wird (homebri+ ist an dieser Stelle die Abkürzung für homebridge). Ein Restart-Befehl, wie du ihn umsetzen willst, würde dann auch vom User homebridge ausgeführt, also muss der User homebridge die sudo-Rechte haben.


    Ich habe die Rechte für meine Homebridge in der sudoers-Datei sehr eng gesetzt. Die sieht so aus:


    sudo visudo /etc/sudoers.d/homebridge

    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdown

    Der User homebridge darf sudo also nur auf ganz bestimmte Programme ansetzen. Das kann man etwas freier machen, indem man dem User homebridge erlaubt, alle Programme auf dem Raspi mit sudo auszuführen. Das macht das Ganze deutlich frustfreier:

    Code
    homebridge ALL=(ALL) NOPASSWD: ALL


    Vielleicht so? Ich weiß es für deinen Raspi nicht.

  • Cool, vielen lieben Dank.

    Anscheinend ist auch bei mir der User „homebridge“ (?)

    Kann grad nur nen Screenshot posten:


    Den ersten Eintrag kann ich nicht deuten - stellt der nur das Webinterface?


    Hab ich es richtig verstanden, dass ich dann

    a) die Datei „homebridge“ mit Visudo erzeugen und dann

    b) deinen oberen Code dort reinschreiben muss und

    c) der Schalter dann mit „sudo shutdown -r 0“ befüllt werden muss?


    (Ich möchte dem User homebridge nicht pauschal alles ohne PW-Abfrage erlauben)




    Andere Frage dazu -evtl. etwas offtopic:

    Was ich nicht verstehe ist Folgendes:

    „Scoo“ ist eine gid - also eine Gruppe (?) im der imho auch der User Pi enthalten ist.

    Dann müsste ich im Terminal als Pi doch eigentlich alles ohne Passwort Abfrage tun können, oder?

    Geht aber nicht.

    Der Ton macht die Musik.


    Plugins


    Konfiguration

    4 Mal editiert, zuletzt von scoo ()

  • Anscheinend ist auch bei mir der User „homebridge“ (?)

    Nein, der User heißt bei dir pi.

    Hab ich es richtig verstanden, dass ich dann

    a) die Datei „homebridge“ mit Visudo erzeugen und dann

    b) deinen oberen Code dort reinschreiben muss und

    c) der Schalter dann mit „sudo shutdown -r 0“ befüllt werden muss?

    Nein, nicht mehr. Das ist nur nötig, wenn der User homebridge geheißen hätte, was ja nicht der Fall ist.

    Dann müsste ich im Terminal als Pi doch eigentlich alles ohne Passwort Abfrage tun können, oder?

    Geht aber nicht.

    Weil die Gruppe scoo in deiner suoders-Datei falsch eingetragen ist. Es muss dort lauten:

    %scoo ALL=(ALL) NOPASSWD: ALL


    oder (meiner Meinung nach besser):

    pi ALL=(ALL) NOPASSWD: ALL


    oder einfach zwei Zeilen

    scoo ALL=(ALL) NOPASSWD: ALL

    pi ALL=(ALL) NOPASSWD: ALL

  • Hmm, seltsam.

    Wie kommt die Gruppe Scoo denn in die Sudoers-Datei rein- zumal die ja schreibgeschützt ist und ich bis Dato noch nichts mit Visudo respektive der Gruppe gemacht habe.


    Kann / muss ich dann nach wie vor auch einfach eine Datei „pi“ in visudoers.d mit Inhalt

    Code
    pi ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdown

    generieren?

    (Wo muss ggf. noch „pi“ statt „homebridge“ stehen?




    Edit:



    pi@homebridge:/etc/sudoers.d $ sudo cat 010_pi-nopasswd

    scoo ALL=(ALL) NOPASSWD: ALL

    Nochmal eine Frage zu obigem Dateiinhalt aus der 010_pi-nopasswd:


    Könnte ich da dann den Code

    Code
    pi ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdown

    einsetzen?


    oder muss ich erst eine Date "pi" erzeugen und das dann dort reinschreiben ?



    mit "pi ALL=(ALL) NOPASSWD: ALL" in beiden Dateien (pi und 010_pi-nopasswd klappt es jetzt schonmal)

    Der Ton macht die Musik.


    Plugins


    Konfiguration

    7 Mal editiert, zuletzt von scoo () aus folgendem Grund: Ein Beitrag von scoo mit diesem Beitrag zusammengefügt.

  • mit "pi ALL=(ALL) NOPASSWD: ALL" in beiden Dateien (pi und 010_pi-nopasswd klappt es jetzt schonmal)

    Super. Dann ist das Thema damit erledigt. Viel Spaß weiterhin.

  • Nee eigentlich nicht:


    Wollte die Rechte gern wieder etwas einschränken mit


    pi ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdown


    Würde das auch gehen?

    Der Ton macht die Musik.


    Plugins


    Konfiguration

  • Wollte die Rechte gern wieder etwas einschränken mit

    Das würde ich auf keinen Fall machen. Der User pi sollte die Möglichkeit haben, alle Programme auf dem Raspi mit sudo starten zu dürfen und nicht nur die paar. Wenn du das speicherst, dann kannst du es als User pi nicht einmal mehr rückgängig machen, weil nur die angegebenen Programme noch als root ausführbar sind:

    • ein Editor ist nicht in dieser Liste. Du könntest dann die sudoers-Datei zwar verändern, aber nie wieder speichern
    • das Programm su ist nicht dabei. Du kannst dich also auch nicht zum User root machen, um deine Einschränkungen wieder aufzuheben
    • du müsstest Tastatur und Monitor anschließen, um dich als root einzuloggen, kennst aber das Passwort von root nicht

    Kurz: danach kannst du deinen Raspi neu aufsetzen.

  • Uff dass will ich natürlich nicht.

    Bisher kam allerdings für Pi halt einfach immer die PW Abfrage - auch ohne die Einträge im sudooers.d.

    Ich hätte jetzt erwartet, dass das dann eben auch wieder abgefragt würde, wenn ich nichts bzw. nur deinen anderen Code da eintragen würde.

    Der Ton macht die Musik.


    Plugins


    Konfiguration

  • Ich würde das Thema gerne nochmal aufgreifen, da es hier eher Richtung Raspberry Pi ging. Wie kann ich es hinkriegen, dass die Homebridge einmal täglich (z.B.) auf einem Synology NAS neugestartet wird?


    Muss ich einfach den Befehl:

    sudo /usr/local/bin/docker container restart homebridge“ unter benutzerdefiniertes Skript im Aufgabenplaner hinterlegen?


    Oder hat das irgendwelche Nachteile? Lansing hat ja nach einer anderen Methode gefragt.