@VonOx Ich erstelle ein Thema, um über die Entwicklung zu sprechen!
Sollen wir uns einen leichten nginx-Proxy machen, um anzuzeigen, dass das Bild gerade installiert wird? ![]()
@VonOx Ich erstelle ein Thema, um über die Entwicklung zu sprechen!
Sollen wir uns einen leichten nginx-Proxy machen, um anzuzeigen, dass das Bild gerade installiert wird? ![]()
Die Seite (eigentlich die App) sollte den Docker-Teil überprüfen können, deshalb ist es in Go für HA, denke ich (um nicht 200 MB npm-Pakete zu installieren).
Die Idee ist, eine Landing Page auf demselben Port wie Gladys zu senden, mit allen damit verbundenen Problemen (wenn Port 80 verwendet wird, startet Gladys nicht). Ich habe nicht wirklich darüber nachgedacht, ich weiß nicht, ob du schon etwas im Kopf hast ![]()
Ich verstehe die Idee!
Man könnte auch ein kleines Backend in Go machen, das sollte nicht so kompliziert sein ![]()
Also, was ich sehe:
Ein Container, der eine einfache HTML-Seite ausliefert, die sagt « Gladys wird konfiguriert. Wir laden die neueste Version von Gladys aus dem Internet herunter, je nach Ihrer Internetverbindung kann dies einige Minuten bis zu einer Stunde dauern »
Ideal wäre eine Fortschrittsleiste, die den Download-Fortschritt anzeigt und Fehler im Fehlerfall.
Tatsächlich kann der First-Install-Prozess nur Folgendes tun:
Kein Port-Problem hier ![]()
Ich hatte einen kleinen Dienst erstellt, der sich um die Erstellung der Container kümmert, ich muss nur noch den Wartedocker verwalten. Ein Image, das eine statische Seite oder auch nicht, aber ultra-leicht bedient. Das macht das Betriebssystem
Übrigens habe ich gerade festgestellt, dass er nicht auf dem neuesten Stand ist
https://github.com/VonOx/gladys-pi-gen/blob/gladys/gladys/02-init-gladys/files/init-containers.sh
Aber jetzt die Frage: Geht es um docker load oder docker pull? ![]()
Wenn wir eine Warteseite machen, wäre docker pull dann okay, oder?
Oui oui docker pull, ich muss die Skripte aktualisieren, da keine Docker-Images mehr im OS enthalten sein müssen.
Das ergibt dann das hier
Erstellung des Landing-Containers
Pull des Rests
Bevor ich den Gladys-Container erstelle, stoppe und lösche ich den Landing-Container
#!/bin/sh
TIMEZONE=$(cat /etc/timezone)
docker_images_watchtower=$(docker images -q containrrr/watchtower)
docker_images_gladys=$(docker images -q gladysassistant/gladys)
docker_images_gladyslanding=$(docker images -q gladysassistant/gladyslanding)
# Erster Start, wir müssen sicherstellen, dass das Landing-Image / der Container existiert
if [ -n "$docker_images_gladyslanding" ]; then
logger -t "gladys-init" "Gladys Landing-Image existiert, Cool...."
else
logger -t "gladys-init" "Gladys Landing-Image fehlt, erstelle sie...."
docker run -d \
--name gladys-landing \
TODODODODODODODOD
fi
if [ -n "$docker_images_watchtower" ]; then
logger -t "gladys-init" "Watchtower-Container existiert, Cool...."
else
logger -t "gladys-init" "Watchtower-Container fehlt, erstelle sie...."
docker run -d \
--name watchtower \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup
fi
if [ -n "$docker_images_gladys" ]; then
logger -t "gladys-init" "Gladys-Container existiert, Cool...."
else
logger -t "gladys-init" "Gladys-Image fehlt, hole sie...."
docker pull gladysassistant/gladys:v4
logger -t "gladys-init" "Gladys-Image wurde geholt, lösche Landing-Container"
docker stop gladys-landing && docker rm gladys-landing
logger -t "gladys-init" "Gladys-Container fehlt, erstelle sie...."
docker run -d \
--restart=always \
--privileged \
--network=host \
--log-opt max-size=10m \
--name gladys \
-e NODE_ENV=production \
-e SERVER_PORT=80 \
-e TZ=${TIMEZONE} \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
gladysassistant/gladys:v4
fi
Das klingt gut!
Nur zwei Dinge:
--include-restarting zu watchtower hinzuzufügen, damit watchtower auch Container aktualisieren kann, die sich ständig neu starten, und somit ein komplett kaputtes Image reparieren kann OK, beim Namen kein Problem, das ist nur ein Entwurf, ich habe nichts gepusht.
Bei Watchtower muss ich auch noch das Scheduling hinzufügen.
Das ist ein Skript, aber es erledigt den Job.
Le scheduling ?
Das ist schon erledigt, 24h ist jetzt der Standard ![]()
Ansonsten weiß ich nicht, in welchem Repo du das gemacht hast, aber meiner Meinung nach solltest du das in einem separaten Repo vom Haupt-Repo von Gladys machen ![]()
Ach okay, das wusste ich nicht, ich dachte, man müsste andere Einstellungen vornehmen
Wovon sprichst du, vom „preparing container“?
gladys-waiting, wie klingt das als Container/Bild?
Ich rede von allem! Der Build, das Skript, usw.
gladys-setup-in-progress, oder? Es ist etwas umständlich, aber ich finde es sehr aussagekräftig ![]()
Okay, wir machen das so, ich habe dazu keine große Meinung, es ist ein bisschen wie Variablennamen… ![]()
Es gibt bereits ein Repo für den OS-Build, ich werde eines für den Setup-in-Progress erstellen.
Toll! Also, man lässt den Go-Bild-Trick einfach fallen? ^^
Mir gefällt das Bild auch mit Nginx, aber dann haben wir keine Fortschrittsleiste.
Genau, das Go war, um das Beispiel HA wieder aufzunehmen, aber ich habe schon Probleme mit JavaScript, also Go (kenn ich überhaupt nicht) ![]()
Ich bin kein Go-Experte, aber das sieht recht einfach aus ![]()
Beispiel für einen getContainers in Go mit dem Docker-Client:
Siehe: client package - github.com/ph/moby/client - Go Packages
Allerdings stimme ich zu, dass ein Nginx-Container mit einem Bild vielleicht ausreicht. Das Einzige, was mich beunruhigt, ist, dass der Benutzer keine Rückmeldung bei einem Fehler erhält..
Ich habe eine Testversion gebaut, die ich nicht in der Praxis getestet habe
Ich muss mir einen Raspberry Pi kaufen (meine anderen beiden sind bereits in Gebrauch)
https://github.com/VonOx/gladys-pi-gen/releases/download/v1.0.1/gladys-os-rpi-lite.zip
Hallo!
Ich habe es heruntergeladen, extrahiert, « gebrannt » und in einen RPi 2 (headless) eingesetzt und… nichts.
Habe ich etwas falsch gemacht?
Ist es für einen RPi 2 vorgesehen oder muss ich es in den RPi 4 stecken?
Übrigens, der Link, den du mir gegeben hast, verweist auf « https://gladys-os-rpi-lite.zip/ »…
Ich habe den RPi an einen Bildschirm angeschlossen und einen Bootloop. Die letzte Meldung, die ich gesehen habe, war ‹ failed to come online ›.
Ich werde es später noch einmal von vorne versuchen, aber nach mehreren Neustarts hat es sich schließlich stabilisiert. Leider erhalte ich eine ‹ connection refused ›-Meldung, wenn ich versuche, auf die Startseite zuzugreifen.