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>
76 lines
3.0 KiB
YAML
76 lines
3.0 KiB
YAML
# km -- der Wissensdienst als compose-Dienst (spine/core#8, #13).
|
|
#
|
|
# Zwei Container auf einem Volume:
|
|
# km API + Takt: zieht die Ablage, liest Gitea ein, indexiert
|
|
# (SQLite FTS5 + sqlite-vec), liefert alles Geänderte ein
|
|
# silverbullet Oberfläche auf demselben Verzeichnis -- lesen und ändern;
|
|
# km committet und pusht die Änderungen im nächsten Takt
|
|
#
|
|
# Die Wahrheit ist das Git-Remote (KM_GIT_REMOTE); /srv/km/data/ablage ist
|
|
# ein Checkout, /srv/km/data/km-index.sqlite ein Cache. Beides ist ohne die
|
|
# Container lesbar bzw. neu baubar (Nachfolgefall).
|
|
#
|
|
# 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_GITEA_USER / KM_GITEA_PASSWORD Lesen der Forge
|
|
# SB_USER user:passwort für die Oberfläche
|
|
#
|
|
# Betrieb über `oci` (42i-oci): /srv/km/compose.yml, `oci enable km`.
|
|
|
|
services:
|
|
km:
|
|
image: git.42i.org/spine/km:latest
|
|
build:
|
|
context: ../image
|
|
container_name: km
|
|
restart: unless-stopped
|
|
network_mode: host
|
|
environment:
|
|
KM_NAMESPACE: ${KM_NAMESPACE}
|
|
KM_CLASSIFICATION: ${KM_CLASSIFICATION}
|
|
KM_GIT_REMOTE: ${KM_GIT_REMOTE}
|
|
KM_GIT_BRANCH: ${KM_GIT_BRANCH}
|
|
KM_GIT_USER: ${KM_GIT_USER}
|
|
KM_GIT_PASSWORD: ${KM_GIT_PASSWORD}
|
|
KM_GIT_NAME: ${KM_GIT_NAME}
|
|
KM_GIT_EMAIL: ${KM_GIT_EMAIL}
|
|
KM_GITEA_URL: ${KM_GITEA_URL}
|
|
KM_GITEA_USER: ${KM_GITEA_USER}
|
|
KM_GITEA_PASSWORD: ${KM_GITEA_PASSWORD}
|
|
KM_GITEA_ORGS: ${KM_GITEA_ORGS}
|
|
KM_GITEA_REPOS: ${KM_GITEA_REPOS}
|
|
KM_INTERVAL: ${KM_INTERVAL}
|
|
# Vektoren erst, wenn es einen Abnehmer gibt (Andreas 04.09.); die
|
|
# Ollama-Instanz auf s18 ist vom LXC aus nur mit VLAN5-Route erreichbar.
|
|
KM_EMBED: ${KM_EMBED}
|
|
KM_OLLAMA_URL: ${KM_OLLAMA_URL}
|
|
KM_PORT: "8390"
|
|
# requests bringt ein eigenes CA-Bündel mit (certifi) und kennt die
|
|
# interne CA (acme.lan) nicht -- ohne diese Zeile scheitert jeder
|
|
# Aufruf an git.home mit CERTIFICATE_VERIFY_FAILED (hive.home, 04.09.).
|
|
REQUESTS_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt
|
|
volumes:
|
|
- /srv/km/data:/data
|
|
# CA-Bündel des Wirts, inklusive interner Root-CA -- wie bei caddy
|
|
- /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
|
|
|
|
silverbullet:
|
|
image: ghcr.io/silverbulletmd/silverbullet:v2
|
|
container_name: km-ui
|
|
restart: unless-stopped
|
|
network_mode: host
|
|
environment:
|
|
SB_FOLDER: /space
|
|
SB_PORT: "3000"
|
|
# hive.home teilt den Pfadraum an der Wurzel (hive/core#61); die
|
|
# Oberfläche liegt deshalb unter /km, die API unter /km/api.
|
|
SB_URL_PREFIX: /km
|
|
SB_USER: ${SB_USER}
|
|
# die Dateien gehören dem km-Container (root); ohne PUID rät
|
|
# SilverBullet die UID aus dem Ordner -- das ist dann dieselbe
|
|
PUID: "0"
|
|
volumes:
|
|
- /srv/km/data/ablage:/space
|