Verlasse dich nicht auf compose-Defaults
podman-compose auf Debian 13 reicht ${VAR:-x} wörtlich durch; km bekam
den Platzhalter als Repo-Namen. Jede Variable steht jetzt in der .env
(Vorlage deploy/env.example), und die Konfiguration verwirft Werte, die
wie ein unersetzter Platzhalter aussehen.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+13
-11
@@ -10,7 +10,9 @@
|
|||||||
# ein Checkout, /srv/km/data/km-index.sqlite ein Cache. Beides ist ohne die
|
# ein Checkout, /srv/km/data/km-index.sqlite ein Cache. Beides ist ohne die
|
||||||
# Container lesbar bzw. neu baubar (Nachfolgefall).
|
# Container lesbar bzw. neu baubar (Nachfolgefall).
|
||||||
#
|
#
|
||||||
# Secrets stehen in `.env` daneben (root-only) und NICHT hier:
|
# Alle ${…} kommen aus `.env` daneben (root-only) -- podman-compose kennt
|
||||||
|
# keine Defaults in der Form ${VAR:-x}, also steht dort jede Variable.
|
||||||
|
# Secrets NUR dort, nie hier:
|
||||||
# KM_GIT_USER / KM_GIT_PASSWORD Push an das Ablage-Repo
|
# KM_GIT_USER / KM_GIT_PASSWORD Push an das Ablage-Repo
|
||||||
# KM_GITEA_USER / KM_GITEA_PASSWORD Lesen der Forge
|
# KM_GITEA_USER / KM_GITEA_PASSWORD Lesen der Forge
|
||||||
# SB_USER user:passwort für die Oberfläche
|
# SB_USER user:passwort für die Oberfläche
|
||||||
@@ -26,24 +28,24 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
network_mode: host
|
network_mode: host
|
||||||
environment:
|
environment:
|
||||||
KM_NAMESPACE: ${KM_NAMESPACE:-familie}
|
KM_NAMESPACE: ${KM_NAMESPACE}
|
||||||
KM_CLASSIFICATION: ${KM_CLASSIFICATION:-home}
|
KM_CLASSIFICATION: ${KM_CLASSIFICATION}
|
||||||
KM_GIT_REMOTE: ${KM_GIT_REMOTE}
|
KM_GIT_REMOTE: ${KM_GIT_REMOTE}
|
||||||
KM_GIT_BRANCH: ${KM_GIT_BRANCH:-main}
|
KM_GIT_BRANCH: ${KM_GIT_BRANCH}
|
||||||
KM_GIT_USER: ${KM_GIT_USER}
|
KM_GIT_USER: ${KM_GIT_USER}
|
||||||
KM_GIT_PASSWORD: ${KM_GIT_PASSWORD}
|
KM_GIT_PASSWORD: ${KM_GIT_PASSWORD}
|
||||||
KM_GIT_NAME: ${KM_GIT_NAME:-km}
|
KM_GIT_NAME: ${KM_GIT_NAME}
|
||||||
KM_GIT_EMAIL: ${KM_GIT_EMAIL:-km@localhost}
|
KM_GIT_EMAIL: ${KM_GIT_EMAIL}
|
||||||
KM_GITEA_URL: ${KM_GITEA_URL}
|
KM_GITEA_URL: ${KM_GITEA_URL}
|
||||||
KM_GITEA_USER: ${KM_GITEA_USER}
|
KM_GITEA_USER: ${KM_GITEA_USER}
|
||||||
KM_GITEA_PASSWORD: ${KM_GITEA_PASSWORD}
|
KM_GITEA_PASSWORD: ${KM_GITEA_PASSWORD}
|
||||||
KM_GITEA_ORGS: ${KM_GITEA_ORGS:-}
|
KM_GITEA_ORGS: ${KM_GITEA_ORGS}
|
||||||
KM_GITEA_REPOS: ${KM_GITEA_REPOS:-}
|
KM_GITEA_REPOS: ${KM_GITEA_REPOS}
|
||||||
KM_INTERVAL: ${KM_INTERVAL:-300}
|
KM_INTERVAL: ${KM_INTERVAL}
|
||||||
# Vektoren erst, wenn es einen Abnehmer gibt (Andreas 04.09.); die
|
# Vektoren erst, wenn es einen Abnehmer gibt (Andreas 04.09.); die
|
||||||
# Ollama-Instanz auf s18 ist vom LXC aus nur mit VLAN5-Route erreichbar.
|
# Ollama-Instanz auf s18 ist vom LXC aus nur mit VLAN5-Route erreichbar.
|
||||||
KM_EMBED: ${KM_EMBED:-0}
|
KM_EMBED: ${KM_EMBED}
|
||||||
KM_OLLAMA_URL: ${KM_OLLAMA_URL:-http://10.18.5.30:11434}
|
KM_OLLAMA_URL: ${KM_OLLAMA_URL}
|
||||||
KM_PORT: "8390"
|
KM_PORT: "8390"
|
||||||
# requests bringt ein eigenes CA-Bündel mit (certifi) und kennt die
|
# requests bringt ein eigenes CA-Bündel mit (certifi) und kennt die
|
||||||
# interne CA (acme.lan) nicht -- ohne diese Zeile scheitert jeder
|
# interne CA (acme.lan) nicht -- ohne diese Zeile scheitert jeder
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Vorlage fuer /srv/km/.env (root-only, 0600). Jede Variable muss stehen --
|
||||||
|
# podman-compose kennt keine Defaults in der compose-Datei.
|
||||||
|
KM_NAMESPACE=familie
|
||||||
|
KM_CLASSIFICATION=home
|
||||||
|
KM_GIT_REMOTE=https://git.home/ahmann/km.git
|
||||||
|
KM_GIT_BRANCH=main
|
||||||
|
KM_GIT_USER=agent
|
||||||
|
KM_GIT_PASSWORD=aus-openbao
|
||||||
|
KM_GIT_NAME=42i Agent
|
||||||
|
KM_GIT_EMAIL=info@ahmann.org
|
||||||
|
KM_GITEA_URL=https://git.home
|
||||||
|
KM_GITEA_USER=agent
|
||||||
|
KM_GITEA_PASSWORD=aus-openbao
|
||||||
|
KM_GITEA_ORGS=ahmann
|
||||||
|
KM_GITEA_REPOS=
|
||||||
|
KM_INTERVAL=300
|
||||||
|
KM_EMBED=0
|
||||||
|
KM_OLLAMA_URL=http://10.18.5.30:11434
|
||||||
|
SB_USER=andreas:aus-openbao
|
||||||
+10
-2
@@ -13,8 +13,16 @@ from dataclasses import dataclass, field
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def _clean(v: str | None) -> str:
|
||||||
|
"""podman-compose (Debian 13) ersetzt `${VAR:-x}` nicht, sondern reicht
|
||||||
|
den Platzhalter woertlich durch -- gesehen auf hive.home am 04.09. Ein
|
||||||
|
Wert, der so aussieht, ist keiner."""
|
||||||
|
v = (v or "").strip()
|
||||||
|
return "" if v.startswith("${") else v
|
||||||
|
|
||||||
|
|
||||||
def _list(v: str) -> list[str]:
|
def _list(v: str) -> list[str]:
|
||||||
return [x.strip() for x in v.replace(";", ",").split(",") if x.strip()]
|
return [x.strip() for x in _clean(v).replace(";", ",").split(",") if x.strip()]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -50,7 +58,7 @@ class Config:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_env(cls) -> "Config":
|
def from_env(cls) -> "Config":
|
||||||
e = os.environ.get
|
e = lambda k, d="": _clean(os.environ.get(k)) or d # noqa: E731
|
||||||
cfg = cls(
|
cfg = cls(
|
||||||
ablage=Path(e("KM_ABLAGE", "/data/ablage")),
|
ablage=Path(e("KM_ABLAGE", "/data/ablage")),
|
||||||
namespace=e("KM_NAMESPACE", ""),
|
namespace=e("KM_NAMESPACE", ""),
|
||||||
|
|||||||
Reference in New Issue
Block a user