One Dockerfile, four named --target stages: rutster-engine (FOB), rutster-brain (brain), rutster-edge (custom xcaddy + curated DNS plugins cloudflare/route53/porkbun/hetzner/desec, duckdns excluded per spec §3.2), rutster-allinone (s6-overlay v3 supervising caddy + FOB + brain + valkey-server). Builder pins rust:1.85-slim-bookworm (matches rust-toolchain.toml). libopus-dev in builder, libopus0 in runtime (matches dev — spec §6.1 distro-over-static-bundled). Brain image gets libopus0 too: although the brain never calls an opus symbol, the linker records NEEDED:libopus.so.0 because rutster-brain-realtime depends on rutster-media (spec ambiguity resolved in this slice's plan README). All-in-one vendors s6-overlay v3.2.0.0 (ISC) + uses upstream valkey/valkey binary (COPY --from pattern, BSD-3). Bundled-binary licenses aggregation-clean vs GPL-3 (Caddy Apache-2.0). No Rust crates touched; cargo-deny unaffected. s6-rc service definitions land in this commit (caddy/engine/brain/ valkey-database run scripts + dependency edges). The Caddyfile lands in Task 3 (same PR); the image-build CI job (Task 7) runs after both. Signed-off-by: Aaron D. Lee <himself@adlee.work>
7 lines
330 B
Plaintext
Executable File
7 lines
330 B
Plaintext
Executable File
#!/command/execlineb -P
|
|
# s6-rc service: caddy — the edge (ACME + TLS termination + WS proxy).
|
|
# Depends on: engine (s6-rc starts the engine first per caddy/dependencies.d/engine).
|
|
# User: root (caddy needs :80/:443).
|
|
foreground { mkdir -p /data }
|
|
exec /usr/local/bin/caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
|