Docker, das ich selbst nicht nutze, hat viele Vorteile bei solch kleinen Serversystemen, wie wir sie betreiben. Ein Docker-Container enthält oft nur eine Minimalinstallation des Betriebssystems und natürlich die benötigte Software, hier: node plus homebridge plus irgendein Plugin plus anderes benötigtes Zeugs.
Der Docker-Container braucht Docker, damit er laufen kann. Die Container werden in einer Registry gespeichert. Diese könnte beispielsweise auf einem Mac oder PC laufen. Ein Raspi lädt dann den Container aus dieser Registry und lässt ihn laufen. Wenn man den Container auf einem anderen Raspi laufen lassen will, dann installiert man dort Docker und startet man den Container halt da. Und: wenn man ihn auf einem Mac laufen lassen will, dann installiert man halt Docker auf einem Mac und startet ihn dort. Und wenn man ihn auf einem Windows-PC laufen lassen will, dann installiert Docker auf dem PC und... ich glaube, es ist klar, was ich sagen will. Der Container lässt sich leicht transportieren. Du baust den Container und ich lass ihn laufen und zwar da, wo es mir passt.
Damit es ganz klar wird: man hat dann einen Haufen dieser Container, und jeder enthält node, homebridge und ein einziges Plugin.
Man könnte sogar so weit gehen, solche Container auf mehreren Computern zu installieren und einen Loadbalancer davor zu stellen, so dass einer dieser Computer ausfallen könnte, ohne dass der Homebridge-Service irgendwie davon beeinträchtigt würde. Willkommen in der wunderbaren Welt des totalen over engineerings des eigenen Zuhauses . Lassen wir das lieber.
Der Container mit der neusten Version von homebridge läuft nicht richtig? Dann nimm wieder den alten. Bluetooth und noble brauchen node 8, aber du hast node 12 und dir fliegen die Fehlermeldungen um die Ohren? Dann lass in dem einen Container node 8 laufen und in allen anderen node 12.
Das wirklich Feine aber wäre die Registry auf dem Mac, die per Time Machine gesichert würde. Nie wieder Backup-Probleme mit der Raspi-Installation. Wow. Betriebssystem auf die SD-Card flashen, Docker drauf, Container laden, weiter geht's.
Man hätte also statt der vielen Instanzen viele von einander getrennte Container, die man verteilen kann, wie man will und die sich nie auch nur irgendwie gegenseitig beeinflussen, und die gar unterschiedlichste Softwarestände erlauben.
Toll, toll, toll. Das Goldene Zeitalter[TM] hat begonnen. Und warum mache ich das nicht so? Der Lernaufwand erhöht sich natürlich erst einmal. Man muss nicht nur "Linux lernen", sondern auch noch Docker. Wie wird ein Container erstellt? Wie funktioniert die Registry? Wie automatisiert man Installationen? Wie bearbeitet man config.json? Wieso geht das jetzt nicht? Leck mich, noch mehr Software, die aus irgendwelchen Gründen nicht funktioniert, noch mehr Debugging, noch mehr Aufwand. Super, ich bin mit Docker zwar die Speerspitze der technischen Evolution, aber dafür gibt es immer weniger Cracks, die noch meine Fragen beantworten können.
Ich bin sicher, dass Docker plus homebridge einen hohen Mehrwert bedeutet, aber bislang hatte ich nicht die geringste Lust, mich da so richtig reinzusetzen. Und es würde natürlich in der nächsten fetten Anleitung enden. Ich bin zu alt für diesen modernen Schnickschnack .
Trotzdem: auf Dauer werde ich mich ganz klar damit beschäftigen, aber das ist ein Projekt für 2020. Dann wird herumgedoktertgedockert.
Stefan