Die CLI auf pi5-1 ist seit dem 01.10. 2.7.1, der Server lief noch auf 2.6.2. Der Hauptknoten entsiegelt sich per Transit ueber den Sidecar selbst, der Austausch brauchte also keine Schluessel: Log zeigt "unsealed with stored key" und "Recorded vault version: 2.7.1". Der Sidecar openbao-unsealer bleibt bewusst auf 2.6.2. Er ist Shamir-versiegelt mit Schwelle 1/1 und muesste nach einem Austausch von Hand entsiegelt werden - und solange er versiegelt ist, kommt auch der Hauptknoten beim naechsten Start nicht hoch. Die Transit-API ist versionsuebergreifend stabil, der Mischbetrieb ist also unkritisch. Geprueft nach dem Austausch: Siegelstatus, Lesezugriff ueber Traefik-TLS von pi5-2 aus und der git-credential-Helfer gegen Gitea. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
72 lines
2.5 KiB
YAML
72 lines
2.5 KiB
YAML
services:
|
|
openbao:
|
|
# 2026-10-24: 2.6.2 -> 2.7.1. Die CLI auf dem Host ist seit dem 01.10. 2.7.1,
|
|
# der Server hinkte hinterher. Der Unsealer-Sidecar unten bleibt vorerst auf
|
|
# 2.6.2: er ist Shamir-versiegelt (1/1) und muesste nach einem Austausch von
|
|
# Hand entsiegelt werden - die Transit-API ist versionsuebergreifend stabil.
|
|
image: openbao/openbao:2.7.1
|
|
container_name: openbao
|
|
restart: unless-stopped
|
|
# The image entrypoint already runs `bao server -config=/openbao/config`
|
|
# (the whole config dir), so we only pass the subcommand here.
|
|
command: server
|
|
ports:
|
|
# Plaintext API bound to loopback only — local CLI/admin use. LAN clients
|
|
# reach OpenBAO via Traefik (TLS) at https://openbao.famfi.home instead.
|
|
- "127.0.0.1:8200:8200"
|
|
environment:
|
|
BAO_ADDR: "http://127.0.0.1:8200"
|
|
networks:
|
|
- default
|
|
- traefik_proxy
|
|
volumes:
|
|
- ./config:/openbao/config:ro
|
|
- openbao-data:/openbao/file
|
|
# Audit-Log auf den Host: /openbao/logs war vorher ein anonymes
|
|
# Volume aus dem Image und haette ein `down -v` nicht ueberlebt.
|
|
- ./logs:/openbao/logs
|
|
healthcheck:
|
|
# 200 = unsealed+active. Accept sealed (501) and standby (429) too,
|
|
# so the container is "healthy" once the API is responding at all.
|
|
test: ["CMD", "bao", "status", "-address=http://127.0.0.1:8200"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 10s
|
|
depends_on:
|
|
- openbao-unsealer
|
|
|
|
# Minimal sidecar instance that provides transit auto-unseal for the main
|
|
# node above. Shamir-sealed itself; only reachable on the internal network.
|
|
openbao-unsealer:
|
|
image: openbao/openbao:2.6.2
|
|
container_name: openbao-unsealer
|
|
restart: unless-stopped
|
|
command: server
|
|
# No host port published — only the main node needs it, over the default net.
|
|
environment:
|
|
BAO_ADDR: "http://127.0.0.1:8200"
|
|
networks:
|
|
- default
|
|
volumes:
|
|
- ./config-unsealer:/openbao/config:ro
|
|
- openbao-unsealer-data:/openbao/file
|
|
healthcheck:
|
|
test: ["CMD", "bao", "status", "-address=http://127.0.0.1:8200"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
networks:
|
|
# Project-internal network (default).
|
|
default:
|
|
# Shared with the Traefik stack so Traefik can reach this container by name
|
|
# (http://openbao:8200). Created by the Traefik compose project.
|
|
traefik_proxy:
|
|
external: true
|
|
|
|
volumes:
|
|
openbao-data:
|
|
openbao-unsealer-data:
|