Files
podsteadr/docker-compose.yml
T
ssmithxandClaude Fable 5 6dd541b1a4 fix: blossom v4 config schema, container-internal blossom URL, e2e suite
- blossom-server 4.4.1 expects rules nested under storage: — the top-level
  rules list was ignored, leaving an empty ruleset that rejected all uploads
- podpuddle now verifies blobs and uploads recordings via BLOSSOM_URL_INTERNAL
  (http://blossom:3000) while feeds keep the browser-facing URL; unreachable
  blossom now returns 502 instead of a 500
- mediamtx: fix deprecated allow-origin params, disable MoQ
- scripts/e2e.mjs: 14 API checks (login, replay/URL rejection, upload,
  episode, feed, stream keys, mediamtx auth) — all green, plus verified
  live: RTMP publish with key → HLS 200, wrong key refused, status
  planned→live→ended via poller, recording remuxed + published as episode,
  feed XML well-formed with 2 items

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 19:21:03 +00:00

60 lines
1.8 KiB
YAML

name: podpuddle
services:
podpuddle:
build: .
container_name: podpuddle
restart: unless-stopped
ports:
- "8095:8095"
environment:
NODE_ENV: production
PORT: "8095"
DATA_DIR: /data
RECORDINGS_DIR: /recordings
PUBLIC_URL: ${PUBLIC_URL:-http://localhost:8095}
MEDIAMTX_API_URL: http://mediamtx:9997
MEDIAMTX_RTMP_PUBLIC: ${MEDIAMTX_RTMP_PUBLIC:-rtmp://localhost:1935}
MEDIAMTX_WHIP_PUBLIC: ${MEDIAMTX_WHIP_PUBLIC:-http://localhost:8889}
MEDIAMTX_HLS_PUBLIC: ${MEDIAMTX_HLS_PUBLIC:-http://localhost:8890}
BLOSSOM_URL_DEFAULT: ${BLOSSOM_URL_DEFAULT:-http://localhost:8098}
BLOSSOM_URL_INTERNAL: http://blossom:3000
NOSTR_RELAYS: ${NOSTR_RELAYS:-wss://relay.damus.io,wss://nos.lol,wss://relay.nostr.band}
volumes:
- podpuddle-data:/data
- mediamtx-recordings:/recordings:ro
depends_on:
- mediamtx
- blossom
mediamtx:
image: bluenviron/mediamtx:1.19.2
container_name: podpuddle-mediamtx
restart: unless-stopped
ports:
- "1935:1935" # RTMP ingest
- "8889:8889" # WebRTC / WHIP
- "8189:8189/udp" # WebRTC ICE
- "8890:8888" # HLS (host 8890; 8888 kept free for other apps)
environment:
# Browsers need a reachable ICE host candidate; set PUBLIC_HOST in .env
MTX_WEBRTCADDITIONALHOSTS: ${PUBLIC_HOST:-localhost}
volumes:
- ./mediamtx/mediamtx.yml:/mediamtx.yml:ro
- mediamtx-recordings:/recordings
blossom:
image: ghcr.io/hzrd149/blossom-server:4
container_name: podpuddle-blossom
restart: unless-stopped
ports:
- "8098:3000"
volumes:
- ./blossom/config.yml:/app/config.yml:ro
- blossom-data:/app/data
volumes:
podpuddle-data:
mediamtx-recordings:
blossom-data: