From f9e34287db3a5073bf6e4c1ea0c87c754d1e4b90 Mon Sep 17 00:00:00 2001 From: kris Date: Mon, 23 Mar 2026 09:08:10 +0800 Subject: [PATCH] Add fnOS live recorder deployment manifest --- ...storyforge-fnos-live-recorder.compose.yaml | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 deploy/storyforge-fnos-live-recorder.compose.yaml diff --git a/deploy/storyforge-fnos-live-recorder.compose.yaml b/deploy/storyforge-fnos-live-recorder.compose.yaml new file mode 100644 index 0000000..5b24b16 --- /dev/null +++ b/deploy/storyforge-fnos-live-recorder.compose.yaml @@ -0,0 +1,59 @@ +services: + # StoryForge server-side live recorder for multi-platform sources. + # + # Recommended upstream source repo: + # /Users/kris/code/DouyinLiveRecorder-main + # + # Rationale: + # - Supports 40+ live platforms. + # - Linux/Docker friendly. + # - Exposes HTTP APIs that StoryForge can call directly: + # GET /api/healthz + # GET /api/status-lite + # GET /api/status + # GET /api/recordings + # POST /api/url-config/import + # POST /api/url-config/set-enabled + # POST /api/recorder/start + # POST /api/recorder/stop + # GET /api/downloads + # GET /downloads/ + # + # Suggested fnOS state root: + # /vol1/docker/hyzq-stack/shared/storyforge-live-recorder + # + # Suggested fnOS external port: + # 19106 + # + # Example StoryForge call flow: + # 1. POST /api/url-config/import + # {"raw":"原画,https://live.kuaishou.com/u/anchor123"} + # 2. POST /api/recorder/start + # 3. Poll GET /api/status-lite or /api/recordings + # 4. Read output via GET /api/downloads or /downloads/ + storyforge-live-recorder: + image: ihmily/douyin-live-recorder:latest + container_name: storyforge-live-recorder + restart: unless-stopped + tty: true + stdin_open: true + command: ["python", "webui.py", "--host", "0.0.0.0", "--port", "8899"] + ports: + - "${STORYFORGE_LIVE_RECORDER_PORT:-19106}:8899" + environment: + TERM: xterm-256color + TZ: ${TZ:-Asia/Shanghai} + WEBUI_HOST: 0.0.0.0 + WEBUI_PORT: 8899 + RECORDER_PYTHON: python + volumes: + - "${STORYFORGE_LIVE_RECORDER_STATE_ROOT:-/vol1/docker/hyzq-stack/shared/storyforge-live-recorder}/config:/app/config" + - "${STORYFORGE_LIVE_RECORDER_STATE_ROOT:-/vol1/docker/hyzq-stack/shared/storyforge-live-recorder}/logs:/app/logs" + - "${STORYFORGE_LIVE_RECORDER_STATE_ROOT:-/vol1/docker/hyzq-stack/shared/storyforge-live-recorder}/backup_config:/app/backup_config" + - "${STORYFORGE_LIVE_RECORDER_STATE_ROOT:-/vol1/docker/hyzq-stack/shared/storyforge-live-recorder}/downloads:/app/downloads" + healthcheck: + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8899/api/healthz', timeout=5).read()"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s