Docker er driftsformen, ikke bare en testrigg
Announcer skal kjøre standalone på klienten som er koblet til anlegget, i Docker – aldri på utviklingsmaskina. install.sh installerte nativt med apt og uv, og det passer ikke lenger. - install.sh er nå en Docker-bootstrap: installerer Docker om den mangler, lager .env med riktig bruker-ID og portbinding, oppretter data/, bygger, starter, og setter ufw. Den rydder også bort gamle native enheter, både announcer.service og sg-announcer.service. - Dockerfile kopierer koden inn istedenfor å låne den fra et bind-mount, så det som kjører i drift er uavhengig av hva som ligger i mappa. - Alt som skal overleve en ny container ligger i data/ på verten. Bind-mount og ikke navngitt volum, med vilje: da kan man lese data/logs/announcements.jsonl og slippe egne jingler i data/chimes/ uten å gå inn i containeren, og eierskapet følger brukeren istedenfor root. - Testriggen er flyttet til compose.test.yaml, med eget prosjektnavn, så den ikke kan forveksles med eller forstyrre drift. Lyden ut av containeren krever tre ting, og de er dokumentert i AGENTS.md: hele XDG_RUNTIME_DIR montert inn (ikke bare pipewire-socketen – PulseAudio trenger pulse/native og en cookie i samme mappe, og da virker begge lydservere), user: PUID:PGID lik eieren av socketen, og en innlogget grafisk økt. Containeren starter ved boot, altså før innlogging, så avspilling feiler til noen logger inn – det retter seg selv, siden player_cmd() slås opp per melding. Verifisert: lyden spiller fra driftscontaineren. Brannmuren er den viktige endringen fra nativ tid. Dockers publiserte porter settes opp i nat-tabellen, før ufws regler, så en ufw-regel på porten gjør ingenting. Tilgangen styres nå av BIND_IP i .env, og install.sh setter den til NetBird-adressen når wt0 finnes. ufw settes fortsatt for ssh, men er ikke involvert i tilgangen til announcer. Testriggen bindes nå til 127.0.0.1. Den sto med PIN 1234 publisert på 0.0.0.0, og gikk altså forbi ufw ut på LAN-et. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6aaa98d8b1
commit
6c1253f54c
7 changed files with 372 additions and 177 deletions
47
compose.test.yaml
Normal file
47
compose.test.yaml
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# Testoppsett, ikke drift:
|
||||
#
|
||||
# docker compose -f compose.test.yaml up --build
|
||||
#
|
||||
# http://localhost:8091 announcer med PIN, JWT og OIDC slått på
|
||||
# http://localhost:9000 dummy-IdP som står for crew-panelet
|
||||
#
|
||||
# Egen fil og eget prosjektnavn, så den ikke kan forveksles med eller
|
||||
# forstyrre den som kjører i drift. Porten er 8091 av samme grunn.
|
||||
# Koden bind-monteres her, så endringer slår inn med en restart.
|
||||
name: announcer-test
|
||||
|
||||
services:
|
||||
announcer:
|
||||
build: .
|
||||
ports: ["127.0.0.1:8091:8090"]
|
||||
user: "${PUID:-1000}:${PGID:-1000}"
|
||||
environment:
|
||||
ANNOUNCER_CONFIG: /app/docker/config.test.toml
|
||||
ANNOUNCER_CACHE: /data/cache
|
||||
ANNOUNCER_LOG: /data/logs/announcements.jsonl
|
||||
ANNOUNCER_STATE: /data/instance
|
||||
ANNOUNCER_VOICES: /data/voices
|
||||
ANNOUNCER_CHIMES: /data/chimes
|
||||
ANNOUNCER_JWT_SECRET: test-hemmelighet-kun-for-docker-ikke-bruk-ekte
|
||||
ANNOUNCER_OIDC_CLIENT_SECRET: test-client-secret-kun-for-docker
|
||||
ANNOUNCER_PUBLIC_URL: http://localhost:8091
|
||||
XDG_RUNTIME_DIR: ${XDG_RUNTIME_DIR:-/run/user/1000}
|
||||
volumes:
|
||||
- .:/app
|
||||
- ./data:/data
|
||||
- ${XDG_RUNTIME_DIR:-/run/user/1000}:${XDG_RUNTIME_DIR:-/run/user/1000}
|
||||
depends_on: [idp]
|
||||
|
||||
idp:
|
||||
build: .
|
||||
ports: ["127.0.0.1:9000:9000"]
|
||||
user: "${PUID:-1000}:${PGID:-1000}"
|
||||
environment:
|
||||
IDP_ISSUER: http://localhost:9000
|
||||
IDP_CLIENT_ID: announcer
|
||||
IDP_CLIENT_SECRET: test-client-secret-kun-for-docker
|
||||
ANNOUNCER_JWT_SECRET: test-hemmelighet-kun-for-docker-ikke-bruk-ekte
|
||||
ANNOUNCER_PUBLIC_URL: http://localhost:8091
|
||||
volumes:
|
||||
- .:/app
|
||||
command: ["python", "docker/dummy_idp.py"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue