deltacast-sdi-recorder/docker-compose.truenas.yml
Zac Gaetano 17916571b3 fix: lowercase codec enum, recorder .done() bug, TrueNAS deploy override
- frontend types & components now use lowercase codec values (prores/dnxhd/
  h264/uncompressed) to match backend CodecType enum. This was the real
  cause of the silent Start Recording 422.
- recorder.py: replaced last .done() call on asyncio.subprocess.Process
  with returncode-is-None check (same bug previously fixed in hls.py).
  This was causing /api/ports/{n} to 500 during active recording and
  health checks to fail while any port was running.
- useRecorder now parses pydantic 422 error bodies so field-level detail
  reaches the UI, and App.tsx shows a fixed error banner.
- Added docker-compose.truenas.yml: no deltacast device passthrough,
  frontend on :8088. Lavfi testsrc2 fallback kicks in automatically and
  feeds the full HLS preview + recording pipeline with a test signal
  (1080p30 + 1kHz tone). Verified end-to-end on Wooglin: 442MB/1:56s
  H.264 MP4 + working HLS playlist.
2026-04-14 16:20:57 -04:00

47 lines
1.1 KiB
YAML

version: '3.8'
# TrueNAS (Wooglin) override — no physical Deltacast card.
# The backend auto-detects missing /dev/deltacast{n} and falls back to
# a lavfi testsrc2 signal (colour bars + clock + 1 kHz tone) per port.
services:
backend:
build:
context: ./backend
dockerfile: Dockerfile
ports:
- "8000:8000"
# NOTE: no devices: block — lavfi fallback kicks in automatically
volumes:
- recordings:/recordings
- hls:/tmp/hls
environment:
- FFMPEG_PATH=/usr/bin/ffmpeg
- RECORDING_DIR=/recordings
- DELTACAST_PORT_COUNT=8
- SRT_ENABLED=true
- SRT_LATENCY=5000
- PORT=8000
- LOG_LEVEL=INFO
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "8088:80"
depends_on:
- backend
restart: unless-stopped
volumes:
recordings:
driver: local
hls:
driver: local