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>
34 lines
1.1 KiB
Text
34 lines
1.1 KiB
Text
# Kopier til .env. install.sh lager den for deg med riktige verdier.
|
|
#
|
|
# cp .env.example .env
|
|
|
|
# Bruker-ID som eier lydsocketen på verten. Stemmer ikke denne, kommer det
|
|
# ingen lyd. Finn den med: id -u ; id -g
|
|
PUID=1000
|
|
PGID=1000
|
|
XDG_RUNTIME_DIR=/run/user/1000
|
|
|
|
# Hvilken adresse sida skal svare på. Dette er det som avgrenser tilgang:
|
|
# Docker publiserer forbi ufw, så en ufw-regel hjelper ikke her.
|
|
# 0.0.0.0 alle nett maskina er på
|
|
# 100.75.x.x bare NetBird
|
|
# 127.0.0.1 bare maskina selv
|
|
BIND_IP=0.0.0.0
|
|
ANNOUNCER_PORT=8090
|
|
|
|
# Lydutgang. Tom = systemets standard. Finn navn med: pactl list short sinks
|
|
ANNOUNCER_SINK=
|
|
|
|
# Overstyrer tittelen uten en config.toml.
|
|
ANNOUNCER_TITLE=
|
|
|
|
# Full URL utenfra. Trengs bare for OIDC bak en omvendt proxy.
|
|
ANNOUNCER_PUBLIC_URL=
|
|
|
|
# --- hemmeligheter -------------------------------------------------------
|
|
# Tom = av. Se config.example.toml og docs/crew-integration.md.
|
|
ANNOUNCER_PIN=
|
|
ANNOUNCER_JWT_SECRET=
|
|
ANNOUNCER_OIDC_CLIENT_SECRET=
|
|
# Tom = genereres og lagres i data/instance/secret_key.
|
|
ANNOUNCER_SECRET_KEY=
|