Ich habe am vergangenen Wochenende damit experimentiert, Gladys zu klonen, um Elemente hinzuzufügen, die nicht dazu bestimmt sind, das Projekt zu bereichern. Zum Beispiel wollte ich die Option „Letzte 4 Stunden“ in die Grafiken einfügen, obwohl ich weiß (und akzeptiere), dass Pierre-Gilles diese Option nicht in die offizielle Version von Gladys aufnehmen möchte.
Ich mache das auch, weil ich neugierig bin, den Code von Gladys zu entdecken, und die kleine technische Herausforderung (zumindest für mich) zu meistern, Gladys durch Programmieren anzupassen…
Ich habe es geschafft, den Klon von Github aus durchzuführen, die richtigen Dateien zu ändern, den Server- und Frontend-Teil zu starten (außerhalb von Docker, einfach mit ‹ npm start ›), und es funktioniert. Jetzt möchte ich einen Build erstellen, um diese benutzerdefinierte Version auf meiner echten Instanz in Docker zu installieren. Aber die Informationen, die ich dazu gefunden habe, scheinen darauf hinzuweisen, dass ich meine Änderungen in einem Projekt auf Github hinzufügen muss. Und ich bin mir nicht sicher, ob es sinnvoll ist, dies so zu tun, da ich diese Version nicht teilen muss, damit andere sie testen…
Meine Frage ist also: Wie kann ich einen ‹ lokalen › Build durchführen? Und wie kann ich das Ergebnis dieses Builds in meinem Docker-Produktionssystem bereitstellen?
Aber wenn das nicht möglich oder nicht einfach ist, werde ich mir ansehen, wie man das über ein GitHub-Projekt macht…
Hallo @StephaneB,
Das ist genau die Lösung, um ein paar kleine Bausteine in Gladys anzubringen.
Nur zur Information: Ich nutze seit 4 oder 5 Jahren eine angepasste Version von Gladys für den Pro-Bereich bei mir zu Hause.
Ich rate dir, basierend auf meiner persönlichen Erfahrung, definitiv über GitHub zu gehen. Ich bin über mein Fork von Gladys gegangen, was es ermöglicht, meine eigenen Änderungen im Laufe der Zeit zu verfolgen und die Updates des ursprünglichen Gladys leicht zu integrieren. Der Docker-Build ist ebenfalls gut integriert, also einfach umzusetzen.
Manchmal wirst du auf ein paar kleine Probleme stoßen, wenn ein Update von Gladys ein Element betrifft, das du selbst verändert hast. Manchmal kannst du deinen Code ersetzen, manchmal musst du die Konflikte ändern, um deine Änderungen in die zu lösenden Konflikte zu integrieren.
Aber im Großen und Ganzen lässt sich das sehr gut managen. Und das ist die Stärke eines Open-Source-Projekts. Weil der Code von Gladys sauber und solide ist, kann man eine Instanz problemlos anpassen.
Vielleicht hast du im Gegensatz zu mir jedoch tatsächlich 2 laufende Instanzen (3 in Wirklichkeit).
- Eine « Haupt »-Instanz von Gladys, die meine Szenen, meine globale Überwachung und alle meine Geräte verwaltet
- Eine « Pod »-Instanz von Gladys in meinem Haus für die Verwaltung von Zigbee (die Daten mit der « Haupt »-Instanz austauscht)
- Eine angepasste « Pro »-Instanz von Gladys, die alle Pro-Geräte und die spezifischen Pro-Szenen sowie die Benutzerverwaltung enthält.
Zögere nicht, mich zu kontaktieren, falls du GitHub / Docker Hub nutzen möchtest.
Danke @Terdious für die Erklärungen. Na dann, ich werde mir ein GitHub-Konto erstellen…
Okay, ich habe das Github-Konto erstellt und meine kleinen Änderungen hochgeladen, dann habe ich das Docker-Konto erstellt und ein Image meiner „personalisierten“ Version von Gladys generiert.
Jetzt möchte ich, dass diese Version die von mir in der Produktion verwendete Gladys-Version ersetzt, ohne dass meine Daten verloren gehen.
Um keine Fehler zu machen, könnte mir bitte jemand die folgenden Punkte bestätigen:
- Ich kann den Docker-Container gladys auf meinem Mini-PC stoppen und löschen, und das löscht nicht die Datenbank oder die Konfigurationen für Zigbee, MQTT und Node-RED, die ich erstellt habe (da alles in /var/lib/gladysassistant gespeichert ist).
- Dann kann ich einen neuen „docker run …“ ausführen, indem ich auf mein persönliches Repository statt auf das offizielle von Gladys zurückgreife, um meine personalisierte Version von Gladys zu installieren. Aber wird dabei mein Ordner /var/lib/gladysassistant überschrieben? Und in diesem Fall müsste ich ihn vor dem docker run sichern, um ihn danach wiederherzustellen… Oder muss ich mir keine Sorgen machen?
- Ich muss die Container z2m, Node-RED und Mosquitto nicht stoppen.
- Muss ich den Container Watchtower stoppen, damit die nächste offizielle Version von Gladys meine personalisierte Version nicht automatisch ersetzt?
Vielen Dank im Voraus 
Ja, das kannst du!
Ja!
Nein!
Richtig, nein!
Nein! Watchtower wird den Container auf die neueste Version deines Bildes aktualisieren 
Vergiß nicht, dass du Gladys nicht mehr installierst, sondern deine Version von Gladys!
Falls es dich interessiert, ich mache alles, was du beschreibst, in meinem Video ab 28:56: https://youtu.be/gLtJE3dgEIA?si=oRA-rgwC0lKJ8xZW&t=1736
Vielen Dank für all diese Präzisierungen, @pierre-gilles.
Und tatsächlich, ich hatte diesen Teil des Videos gesehen, aber das schien mir eher auf einer sauberen Konfiguration gemacht worden zu sein, und ich wollte sicher sein, was in meiner Konfiguration passieren würde, in der ich eine bestehende Version ‹ ersetzen › werde.
Hallo @StephaneB
Dein Ansatz ist super interessant, denn ich habe ebenfalls Bedürfnisse, die nicht unbedingt in Gladys für alle integriert werden müssen, und ich hätte gerne von dem, was du eingerichtet hast, profitiert, um dasselbe bei mir zu machen. Wäre es denkbar, entweder ein Video oder eine Dokumentation anzubieten, die es ermöglicht, die Schritte Schritt für Schritt durchzuführen?
Ich stelle mir vor, dass die einfache Verfügbarkeit einer personalisierbaren Umgebung in Verbindung mit dem Video von @pierre-gilles zum Codieren über KI und dem Vorschlag von PR es Gladys ermöglichen könnte, in Kürze an Funktionen zu gewinnen 
Bis bald,
Jean
Ich werde versuchen, in den nächsten Tagen eine Liste der Schritte zu erstellen, die ich befolgt habe…
Allerdings, ein kleines Detail, an das ich nicht gedacht hatte (aber es ist eigentlich sehr logisch): Die benutzerdefinierte Version ist nur zugänglich, solange ich lokal bin. Aber von außen, wenn ich meinen Zugang mit Gladys Plus nutze, wird die offizielle Version verwendet.
Tatsächlich ist Gladys Plus eine Frontend-Anwendung, die ab der letzten Produktionsversion bereitgestellt wird!