Zugangswege zum privaten Repository dokumentieren und trennen
Neue Option --update-repo trennt, woher installiert wird, von dem, was als Updatequelle hinterlegt wird. Damit laesst sich mit vollen Zugangsdaten installieren, ohne sie abzulegen (--update-repo aus). Enthaelt die hinterlegte URL Zugangsdaten, weist das Skript darauf hin und maskiert sie in der Ausgabe. Neuer Abschnitt 1b in ha_install.md beantwortet die drei naheliegenden Fragen und benennt den Haken dahinter: - Werkzeuge sind vorhanden. git 2.54, curl, unzip und ssh liegen im offiziellen HA-Container bereits vor, an der Instanz nachgesehen. - Passwort in der URL funktioniert genauso wie ein Token - es ist aber das Kontopasswort, im Klartext in /config und in jeder Sicherung, und bei Zwei-Faktor-Anmeldung verweigert Gitea es ohnehin. - Ein vorher im Terminal eingerichteter Anmeldehelfer hilft der Selbstaktualisierung NICHT. Sie klont aus dem Home-Assistant-Prozess und allein anhand von UPDATE_REPO_URL; _git() setzt keine Umgebung. Unter HA OS laeuft das Terminal-Add-on ausserdem in einem eigenen Container, geteilt ist nur /config. Fuer die Installation selbst genuegt der Helfer dagegen. Dazu eine Optionstabelle mit Bewertung, der Hinweis dass auch curl fuer das Skript selbst Zugang braucht, und was sich nach der Umstellung auf die Integration daran aendert: der Zugang wandert in den Konfigurationsdialog und Home Assistants eigene Ablage statt in eine Python-Datei.
This commit is contained in:
@@ -26,6 +26,7 @@ ZIEL="/config"
|
||||
QUELLE=""
|
||||
TOKEN=""
|
||||
REPO="$REPO_STANDARD"
|
||||
UPDATE_REPO="" # leer = wie --repo
|
||||
PYSCRIPT_INSTALLIEREN="ja"
|
||||
INTERAKTIV="ja"
|
||||
|
||||
@@ -46,7 +47,12 @@ DataMetric360 — Installation in Home Assistant
|
||||
|
||||
--ziel <pfad> config-Verzeichnis von Home Assistant (Standard: /config)
|
||||
--von <pfad> lokale Arbeitskopie benutzen statt zu klonen
|
||||
--repo <url> Repository zum Klonen und für die Selbstaktualisierung
|
||||
--repo <url> Repository zum Klonen (Standard: das Projekt-Repository)
|
||||
--update-repo <url|aus>
|
||||
Was als Updatequelle hinterlegt wird. Standard: wie --repo.
|
||||
"aus" hinterlegt nichts - dann gibt es keine
|
||||
Selbstaktualisierung, aber auch keine Zugangsdaten auf der
|
||||
Platte. Siehe ha_install.md, Abschnitt 1b.
|
||||
--branch <name> Branch (Standard: main)
|
||||
--token <wert> langlebiges Zugriffstoken für die Kilometerstand-Historie
|
||||
--ohne-pyscript pyscript nicht mitinstallieren (wenn schon vorhanden)
|
||||
@@ -57,6 +63,8 @@ Beispiele
|
||||
bash install.sh # auf der HA-Instanz, klont selbst
|
||||
bash install.sh --von ~/audi-app # aus einer lokalen Arbeitskopie
|
||||
bash install.sh --ziel /Volumes/config # gegen ein eingebundenes Laufwerk
|
||||
bash install.sh --repo https://nutzer:token@gitea.example/paul/audi-app.git
|
||||
bash install.sh --von . --update-repo aus # lokal einspielen, ohne Zugangsdaten abzulegen
|
||||
ENDE
|
||||
}
|
||||
|
||||
@@ -65,6 +73,7 @@ while [ $# -gt 0 ]; do
|
||||
--ziel) ZIEL="${2:-}"; shift 2 ;;
|
||||
--von) QUELLE="${2:-}"; shift 2 ;;
|
||||
--repo) REPO="${2:-}"; shift 2 ;;
|
||||
--update-repo) UPDATE_REPO="${2:-}"; shift 2 ;;
|
||||
--branch) BRANCH="${2:-}"; shift 2 ;;
|
||||
--token) TOKEN="${2:-}"; shift 2 ;;
|
||||
--ohne-pyscript) PYSCRIPT_INSTALLIEREN="nein"; shift ;;
|
||||
@@ -171,9 +180,17 @@ mkdir -p "$ZIEL/audi_dashboard/belege"
|
||||
|
||||
schritt "Selbstaktualisierung verdrahten"
|
||||
|
||||
# UPDATE_REPO_URL im ausgelieferten einstellungen.py setzen, damit
|
||||
# "Update suchen" in den Einstellungen der App funktioniert.
|
||||
python3 - "$ZIEL/pyscript/modules/einstellungen.py" "$REPO" "$BRANCH" <<'PYENDE'
|
||||
# Was hinterlegt wird, ist bewusst von der Installationsquelle getrennt: die
|
||||
# Selbstaktualisierung laeuft spaeter im Home-Assistant-Prozess und klont
|
||||
# allein anhand dieser URL - Zugangsdaten muessen also darin stehen und landen
|
||||
# damit im Klartext in einstellungen.py. Wer das nicht will, gibt
|
||||
# "--update-repo aus" an und aktualisiert weiterhin ueber dieses Skript.
|
||||
QUELLE_FUER_UPDATE="${UPDATE_REPO:-$REPO}"
|
||||
if [ "$QUELLE_FUER_UPDATE" = "aus" ]; then
|
||||
QUELLE_FUER_UPDATE=""
|
||||
fi
|
||||
|
||||
python3 - "$ZIEL/pyscript/modules/einstellungen.py" "$QUELLE_FUER_UPDATE" "$BRANCH" <<'PYENDE'
|
||||
import re, sys
|
||||
pfad, repo, branch = sys.argv[1], sys.argv[2], sys.argv[3]
|
||||
with open(pfad, encoding="utf-8") as f:
|
||||
@@ -183,8 +200,16 @@ inhalt = re.sub(r'^UPDATE_BRANCH\s*=.*$', f'UPDATE_BRANCH = "{branch}"', inhalt,
|
||||
with open(pfad, "w", encoding="utf-8") as f:
|
||||
f.write(inhalt)
|
||||
PYENDE
|
||||
grau " Updatequelle: $REPO ($BRANCH)"
|
||||
grau " Danach in der App unter Einstellungen → Version → \"Update suchen\""
|
||||
if [ -n "$QUELLE_FUER_UPDATE" ]; then
|
||||
grau " Updatequelle: $(printf '%s' "$QUELLE_FUER_UPDATE" | sed -E 's#://[^@/]+@#://***@#') ($BRANCH)"
|
||||
grau " Danach in der App unter Einstellungen → Version → \"Update suchen\""
|
||||
case "$QUELLE_FUER_UPDATE" in
|
||||
*://*:*@*) rot " Hinweis: Die URL enthaelt Zugangsdaten. Sie stehen im Klartext in"
|
||||
rot " pyscript/modules/einstellungen.py und damit auch in jeder Sicherung." ;;
|
||||
esac
|
||||
else
|
||||
grau " Keine Updatequelle hinterlegt - Aktualisieren laeuft weiter ueber dieses Skript."
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------- configuration.yaml
|
||||
|
||||
|
||||
Reference in New Issue
Block a user