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?
Automatischer und regelmässiger Neustart für die Homebridge auf Synology
-
-
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.
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?
"bridge": {
"name": "Homebridge 39D0",
"username": "xxxx",
"port": 51750,
"pin": "xxxx",
"advertiser": "bonjour-hap"
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".
[15/04/2023, 11:30:11] [Neustart Homebridge] Setting 'Neustart Homebridge' true
[15/04/2023, 11:30:11] [Neustart Homebridge] Command executed: 'sudo shutdown -r 0'
[15/04/2023, 11:30:12] [Neustart Homebridge] Setting 'Neustart Homebridge' false
Inhalt des sudoers.d - Verzeichnisses:
pi@homebridge:/etc/sudoers.d $ ls
010_at-export 010_pi-nopasswd 010_proxy README restart shutdown
Inhalt der Dateo "010_pi-nopasswd":
pi@homebridge:/etc/sudoers.d $ sudo cat 010_pi-nopasswd
scoo ALL=(ALL) NOPASSWD: ALL
Hab den Schalter wie folgt konfiguriert:
Code"accessories": [ { "accessory": "CmdTrigger", "name": "Neustart Homebridge", "command": "sudo shutdown -r 0", "_bridge": { "username": "[xyz]", "port": 36308mit 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.
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):
Codepi@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
Codehomebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdownDer 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:
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.
pi@homebridge:/var/lib/homebridge $ id
uid-1000 (pi) gid=1000 (scoo) groups=1000 (scoo)
Dann müsste ich im Terminal als Pi doch eigentlich alles ohne Passwort Abfrage tun können, oder?
Geht aber nicht.
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
Codepi ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdowngenerieren?
(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
Codepi ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge homebridge-config-ui-x, /usr/local/bin/node, /sbin/shutdowneinsetzen?
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)
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?
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.
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.