Accountant: Inventar, where, Checkmk, Abrechnung

This commit is contained in:
br committed 2026-10-18 17:08:58 +02:00
1 parent 9f16148cde
commit dd93277750
59 files changed
+7522 -113

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
# sultan accountant – Einstellungen für compose.yaml (cp .env.example .env).
# Jede Variable SULTAN_<FLAG> entspricht dem Flag --<flag> (sultan accountant --help);
# leer oder auskommentiert = Default (rechts angegeben).
# Image: lokal gebaut (docker build -t sultan:latest .) oder aus der Registry
SULTAN_IMAGE=zot.chmln.de/sultan:latest
# Adresse(n), unter denen die Sultan-Server (Payees) den Accountant erreichen –
# die erste steckt in jeder Einladung. Kommagetrennt. Default: keine (Payees
# brauchen dann SULTAN_ACCOUNTANT).
SULTAN_PUBLIC_URL=https://accountant.example.de:8444
# Port für Payees, nur TLS – in der Firewall nur für die Ingress-Server öffnen.
# SULTAN_ADDR=:8444
# SULTAN_ENROLL_LIMIT=10 # Enrollment-Versuche/Minute je IP (-1 = aus)
# Checkmk: curl -s http://127.0.0.1:8082/metrics/checkmk (Klartext, nur Loopback; none = aus)
# SULTAN_METRICS_ADDR=127.0.0.1:8082
# SULTAN_STALE_WARN=2h # Payee ohne Bericht → WARN
# SULTAN_STALE_CRIT=6h # … → CRIT
# Zeitzone für Zeitstempel im Log und in payee list (ohne TZ: UTC)
TZ=Europe/Berlin
+21
View File
@@ -0,0 +1,21 @@
# sultan accountant – Zentrale für Inventar und Abrechnung (Spec 5.3).
#
# cp .env.example .env && $EDITOR .env
# install -d -m 0700 -o 65532 -g 65532 accdata # Datenverzeichnis für den nonroot-User
# docker compose up -d
# docker compose exec sultan-accountant sultan accountant invite --payee=webproxy11
# docker compose exec sultan-accountant sultan accountant payee list
#
# network_mode: host wie beim Server: payee list zeigt die echte IP der Payees,
# der Port ist ohne Mapping über .env wählbar.
services:
sultan-accountant:
image: ${SULTAN_IMAGE:-sultan:latest}
container_name: sultan-accountant
restart: unless-stopped
network_mode: host
command: ["sultan", "accountant"]
# Alle Einstellungen kommen aus .env (Vorlage mit Defaults: .env.example).
env_file: .env
volumes:
- ./accdata:/accdata # accountant.db, server.key/.crt – sichern!
+16 -3
View File
@@ -1,10 +1,23 @@
# sultan agent – Einstellungen für compose.yaml (cp .env.example .env).
# Jede Variable SULTAN_<FLAG> entspricht dem Flag --<flag> (sultan agent --help);
# leer oder auskommentiert = Default (rechts angegeben).
# Image: lokal gebaut (docker build -t sultan:latest .) oder aus der Registry
# SULTAN_IMAGE=sultan:latest
# SULTAN_IMAGE=zot.chmln.de/sultan:v0.1.0
SULTAN_IMAGE=zot.chmln.de/sultan:latest
# Einladung vom Server: docker compose exec sultan-server sultan token invite --tenant=…
# Nach dem ersten Start nicht mehr nötig; stehen lassen ist harmlos.
SULTAN_TOKEN=
# Gruppe des Docker-Sockets: getent group docker | cut -d: -f3
# Gruppe des Docker-Sockets (Pflicht): getent group docker | cut -d: -f3
DOCKER_GID=
# Optional
# SULTAN_SERVER=https://ingress.example.de:8443 # Default: Adresse aus der Einladung
# SULTAN_NODE_ID=webdocker11 # Default: aus dem Hostnamen
# SULTAN_BACKEND_HOST=10.0.0.11 # Default: automatisch (Route zum Server)
# SULTAN_BACKEND_INTERFACE=wt0 # alternativ: IP dieses Interfaces (NetBird)
# SULTAN_FQDN=webdocker11.lan.example.de # Default: per DNS ermittelt (nur Inventar)
# Zeitzone für Zeitstempel im Log (ohne TZ: UTC)
TZ=Europe/Berlin
+2 -5
View File
@@ -16,11 +16,8 @@ services:
restart: unless-stopped
network_mode: host
command: ["sultan", "agent", "--data-dir=/suldata", "--config-dir=none"]
environment:
# Ausgabe von `sultan token invite`; nach dem ersten Start nicht mehr nötig,
# stehen lassen ist harmlos.
SULTAN_TOKEN: ${SULTAN_TOKEN:-}
TZ: ${TZ:-Europe/Berlin} # Zeitstempel im Log
# Alle Einstellungen kommen aus .env (Vorlage mit Defaults: .env.example).
env_file: .env
# Lesezugriff auf den Docker-Socket für den nonroot-User (UID 65532).
group_add:
- "${DOCKER_GID:?DOCKER_GID setzen: getent group docker | cut -d: -f3}"
+28 -11
View File
@@ -1,25 +1,42 @@
# sultan server – Einstellungen für compose.yaml (cp .env.example .env).
# Jede Variable SULTAN_<FLAG> entspricht dem Flag --<flag> (sultan server --help);
# leer oder auskommentiert = Default (rechts angegeben).
# Image: lokal gebaut (docker build -t sultan:latest .) oder aus der Registry
SULTAN_IMAGE=sultan:latest
# SULTAN_IMAGE=git.everdc.eu/chmln-app-dev/sultan:v0.1.0
SULTAN_IMAGE=zot.chmln.de/sultan:latest
# Adresse(n), unter denen Agents den Server erreichen – die erste steckt in jeder
# Einladung, alle bekommen Agents als Ausweichweg. Kommagetrennt, leer erlaubt.
# Einladung, alle bekommen Agents als Ausweichweg. Kommagetrennt. Default: keine
# (Agents brauchen dann --server).
SULTAN_PUBLIC_URL=https://webproxy11.lan.r25dc.de:8443
# Ports (host-Netz). Vorher prüfen, ob frei – Traefiks API/Dashboard nutzt oft 8080:
# Ports (Host-Netz). Vorher prüfen, ob frei – Traefiks API/Dashboard nutzt oft 8080:
# ss -ltnp | grep -E ':(8443|8080|8081)\b'
# SULTAN_AGENT_ADDR=:8443
# SULTAN_PROVIDER_ADDR=127.0.0.1:8080
# SULTAN_LANDER_ADDR=127.0.0.1:8081
# SULTAN_AGENT_ADDR=:8443 # Agents, nur TLS – in der Firewall für Agent-Hosts öffnen
# SULTAN_PROVIDER_ADDR=127.0.0.1:8080 # Traefik-Provider & Checkmk – Klartext, nur Loopback!
# SULTAN_LANDER_ADDR=127.0.0.1:8081 # Hinweis-/Wartungsseiten, nur Loopback
# Texte/Links der Hinweis- und Einladungsseiten (optional)
# Texte/Links der Hinweis- und Einladungsseiten (Default: leer)
# SULTAN_HOSTER_NAME=everDC
# SULTAN_HOSTER_URL=https://www.everdc.eu
# SULTAN_PRO_URL=https://www.everdc.eu/pro
# Benachrichtigungen (optional, kommagetrennt mehrere möglich)
# Benachrichtigungen (Default: keine; kommagetrennt mehrere möglich)
# SULTAN_NOTIFY_SLACK=https://hooks.slack.com/services/…
# SULTAN_NOTIFY_NTFY=https://ntfy.example.de/sultan
# SULTAN_NOTIFY_NTFY_TOKEN=tk_…
# SULTAN_OFFLINE_ALERT_AFTER=15m
# Zeitzone für Wartungsseite und Checkmk (Default Europe/Berlin)
# TZ=Europe/Berlin
# Betrieb
# SULTAN_REFRESH=1m # Neubewertung, Leases, Befehle
# SULTAN_ENROLL_LIMIT=10 # Enrollment-Versuche/Minute je IP (-1 = aus)
# SULTAN_LEASE_DURATION=0 # 0 = je Tier (Community 14 Tage, kommerziell 7)
# Inventar an den Accountant melden (Default: aus). Einladung von
# sultan accountant invite --payee=<dieser-server>
# nur beim ersten Start nötig (danach accountant.json + payee.key in suldata).
# SULTAN_ACCOUNTANT_TOKEN=sltn_enroll_…
# SULTAN_ACCOUNTANT=https://accountant.example.de:8444 # nur, wenn die Einladung keine/eine andere Adresse hat
# Zeitzone für Wartungsseite, Checkmk und Log (ohne TZ: UTC)
TZ=Europe/Berlin
+3 -18
View File
@@ -19,23 +19,8 @@ services:
restart: unless-stopped
network_mode: host
command: ["sultan", "server", "--data-dir=/suldata"]
environment:
# Agents (TLS 1.3) – in der Firewall für die Agent-Hosts öffnen.
SULTAN_AGENT_ADDR: ${SULTAN_AGENT_ADDR:-:8443}
# Traefik-Provider & Checkmk – Klartext, nur Loopback!
SULTAN_PROVIDER_ADDR: ${SULTAN_PROVIDER_ADDR:-127.0.0.1:8080}
# Lander (Hinweis-/Wartungsseiten) – nur Loopback, Traefik ruft ihn auf.
SULTAN_LANDER_ADDR: ${SULTAN_LANDER_ADDR:-127.0.0.1:8081}
# Leer = keine Adresse in Einladungen (Agent braucht dann --server).
# Mehrere Adressen kommagetrennt (öffentlich, NetBird …).
SULTAN_PUBLIC_URL: ${SULTAN_PUBLIC_URL:-}
SULTAN_HOSTER_NAME: ${SULTAN_HOSTER_NAME:-}
SULTAN_HOSTER_URL: ${SULTAN_HOSTER_URL:-}
SULTAN_NOTIFY_SLACK: ${SULTAN_NOTIFY_SLACK:-}
SULTAN_NOTIFY_NTFY: ${SULTAN_NOTIFY_NTFY:-}
SULTAN_NOTIFY_NTFY_TOKEN: ${SULTAN_NOTIFY_NTFY_TOKEN:-}
# Zeitzone für Wartungsseite und Checkmk (sonst UTC). Prüfen:
# docker compose exec sultan-server sultan version
TZ: ${TZ:-Europe/Berlin}
# Alle Einstellungen kommen aus .env (Vorlage mit Defaults: .env.example).
# Jedes Flag ist als SULTAN_<FLAG> setzbar; leere Werte = Default.
env_file: .env
volumes:
- ./suldata:/suldata # sultan.db, server.key/.crt, master.key – sichern!