Files

137 lines
6.8 KiB
Plaintext
Raw Permalink Normal View History

# 复制为 `backend/.env` 并按环境填写。在 `backend/` 目录执行:`docker compose up -d --build`
# 详细说明见 docs/Docker部署.md 与 docs/video-backends.md。
2026-05-21 15:48:03 +08:00
# 算法、管线、归档路径、视觉/语音日志等非部署项见 `app/baked/algorithm.py` 与 `app/baked/pipeline.py`。
#
# 5-6 ActionFormer 实时算法(默认开启):
# - app/resources/actionformer_epoch_045.pth.tar 必须存在(离线下发,~110MB未入 git
2026-05-27 13:48:27 +08:00
# - VideoSwin Swin3D-T 权重在 Docker 构建时预下载到 /app/.cache/torch见 scripts/bake_torch_hub_checkpoint.py
# 运行时不再访问 pytorch.org。「首次运行」指 torch 缓存为空时才会联网下载;现已改为构建时烘焙进镜像。
# 国内 PyPI 镜像(南大/清华/阿里)不同步 /models/*.pth构建默认先试 uv.agentsmirror.com 再回退官方源。
# 离线/弱网:先 wget 权重到 backend/weights/swin3d_t-7615ae03.pth再 docker compose build api。
# 或docker compose build --build-arg PYTORCH_MODELS_URL=https://your-mirror/.../swin3d_t-7615ae03.pth api
# - Linux GPU 机:镜像内 torch / torchvision / torchaudio 为 cu130 wheel
# 宿主机需 NVIDIA 驱动 + NVIDIA Container Toolkit`api` 服务已配置 `gpus: all`。
# 启动后可验证docker compose exec api python -c "import torch; print(torch.cuda.is_available())"
2026-05-21 15:48:03 +08:00
# --- PostgreSQL ---
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=operation_room
# 以下两项供宿主机工具连库调试API 容器内使用 POSTGRES_HOST=db、POSTGRES_PORT=5432由 compose 注入)。
2026-05-21 15:48:03 +08:00
POSTGRES_HOST=localhost
2026-05-22 10:03:10 +08:00
POSTGRES_PORT=45432
2026-05-21 15:48:03 +08:00
# 可选:整串 async DSN会覆盖与默认一致的 POSTGRES_* 组合时的逻辑,见 Settings
2026-05-22 10:03:10 +08:00
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:45432/operation_room
# 可选:映射 PostgreSQL 到宿主机端口(默认 45432仅 DBA/调试用途
# DOCKER_POSTGRES_PUBLISH_PORT=45432
2026-05-21 15:48:03 +08:00
# --- API 容器用户(与宿主机一致,便于直接打开 logs/rtsp_segments 下的 slice MP4---
# 填写 id -u / id -g / getent group docker | cut -d: -f3 的输出;改后需 docker compose up -d --force-recreate api
HOST_UID=1000
HOST_GID=1000
DOCKER_GID=999
2026-05-27 13:48:27 +08:00
# 非 root 运行时 uv/torch 缓存目录compose 内已设TORCH_HOME 为镜像内预烘焙路径)
# UV_CACHE_DIR=/tmp/uv-cache
2026-05-27 13:48:27 +08:00
# TORCH_HOME=/app/.cache/torch
# --- HTTPAPI 对外端口)---
2026-05-21 15:48:03 +08:00
# 局域网语音确认终端 / Demo 客户端访问 API 时,填写
# http://<GPU服务器局域网IP>:38080 作为服务端 Base URL。
2026-05-21 15:48:03 +08:00
# API_PORT=38080
# --- 应用日志loguru 持久化;目录已在 .gitignore---
# APP_LOG_DIR=logs/app
# APP_LOG_FILE_NAME=server.log
# APP_LOG_FILE_ENABLED=true
# APP_LOG_ROTATION=7 days
# APP_LOG_RETENTION=7 days
# APP_LOG_LEVEL=INFO
# --- GPU 推理(可选覆盖,默认自动选 cuda:0---
# CONSUMABLE_CLASSIFIER_DEVICE=cuda:0
# HAND_DETECTION_DEVICE=cuda:0
2026-05-21 15:48:03 +08:00
# --- VideoRTSP 与按路后端(须与客户端 camera_ids 一致)---
# 单路 RTSP 首次打开超时(秒);开录 API 在「该值 + 5」秒内确认主摄就绪失败最多重试 3 次。
# 客户端 HTTP 超时建议 ≥ 300s默认 90+5 秒 × 3 次)。穿透/公网链路可调大。
# VIDEO_OPEN_TIMEOUT_SEC=90
2026-05-21 15:48:03 +08:00
# VIDEO_DEFAULT_BACKEND=rtsp
# VIDEO_CAMERA_BACKEND_OVERRIDES_JSON={"or-cam-01":"rtsp","or-cam-02":"hikvision_sdk"}
# 站点 JSON术间↔摄像头↔语音终端只在这里维护voice_or_room_bindings须同时含 video_rtsp_urls可为 []。
# 见 app/resources/or_site_config.sample.json
# OR_SITE_CONFIG_JSON_FILE=app/resources/or_site_config.sample.json
# VIDEO_RTSP_URL_TEMPLATE=rtsp://user:pass@host:554/path/{camera_id}
#
# 语音终端 ID 在站点 JSON 的 voice_or_room_bindings 中配置浏览器语音确认页clients/voice-confirmation/)在页面内填写本机终端 ID。
2026-05-21 15:48:03 +08:00
#
# API 在 Docker 内访问宿主机 RTSP 时使用 host.docker.internalcompose 已配置 extra_hosts
2026-05-21 15:48:03 +08:00
# OpenCV/FFmpeg 拉 RTSP 默认使用 TCP仅当必须让 FFmpeg 自选传输时在 .env 中设空覆盖:
# OPENCV_FFMPEG_CAPTURE_OPTIONS=
# --- 海康 SDKLinux x86_64二进制勿提交仓库---
# HIKVISION_LIB_DIR=/opt/hikvision/lib
# 可选:单一路径,见 app/services/video/hikvision_runtime.py 直读 HIKVISION_LIB_PATH
# HIKVISION_LIB_PATH=
# HIKVISION_SDK_ENABLED=false
# HIKVISION_DEVICE_IP=
# HIKVISION_USER=
# HIKVISION_PASSWORD=
# HIKVISION_CHANNEL=1
# HIKVISION_PREVIEW_RTSP_TEMPLATE=rtsp://{user}:{password}@{ip}:554/Streaming/Channels/101
# HIKVISION_CAMERA_RTSP_URLS_JSON={}
# HIKVISION_SDK_FALLBACK_TO_RTSP=true
# --- 百度(语音:短语音识别 AipSpeech + 在线合成;控制台开通对应能力)---
# BAIDU_APP_ID=
# BAIDU_API_KEY=
# BAIDU_SECRET_KEY=
# 可选
# BAIDU_CONNECTION_TIMEOUT_MS=
# BAIDU_SOCKET_TIMEOUT_MS=
# BAIDU_ASR_DEV_PID=1537
# --- MinIO语音 WAV---
# 容器内 API 默认通过 DOCKER_MINIO_ENDPOINT=minio:9000 访问;以下为 compose 默认值。
2026-05-22 09:35:41 +08:00
# MINIO_ENDPOINT=127.0.0.1:19000
2026-05-21 15:48:03 +08:00
# MINIO_ACCESS_KEY=minioadmin
# MINIO_SECRET_KEY=minioadmin
# MINIO_BUCKET=operation-room-voice
# MINIO_SECURE=false
# MINIO_REGION=
2026-05-22 09:35:41 +08:00
# MINIO_PORT=19000
# MINIO_CONSOLE_PORT=19001
2026-05-21 15:48:03 +08:00
# --- 视频RTSP 切片 + batch链路 1---
# RTSP_PRIMARY_CAMERA_ID=or-cam-03
# RTSP_RECORD_ALL_CAMERAS=false
# RTSP_SEGMENT_DURATION_SEC=120
# RTSP_SEGMENT_MIN_SEC=10
# RTSP_RECORD_HEIGHT=1080
# RTSP_RECORD_CRF=23
# RTSP_RECORD_PRESET=veryfast
# RTSP_FFMPEG_SOCKET_TIMEOUT_USEC=5000000
# RTSP_PREWARM_ENABLED=false
# RTSP_PREWARM_RECONNECT_MAX_SEC=30
# RTSP_SEGMENT_TTL_HOURS=24
# RTSP_SLICE_BATCH_MAX_CONCURRENT=1
# RTSP_SLICE_BATCH_DRAIN_TIMEOUT_SEC=900
2026-05-21 15:48:03 +08:00
# --- Demo 客户端 / 语音确认客户端 ---
# 独立部署的 Demo 客户端 / 语音确认页访问 API 时需放行 CORS正式部署建议收窄 origins。
# DEMO_CORS_ENABLED=true
# 跨主机语音页访问 API 时,可先用 * 联调;生产建议改成具体语音页来源,如 http://192.168.1.100:8080
# DEMO_CORS_ORIGINS=*
# 链路 3离线 batchDemo 需开启;链路 1 真 RTSP 开录不依赖此项
2026-05-21 15:48:03 +08:00
# DEMO_ORCHESTRATOR_ENABLED=false
2026-05-22 16:29:57 +08:00
# 联调台 HLSCompose先 docker compose up -d mediamtx-hls api
2026-05-22 17:18:27 +08:00
# Compose 内 api 反代侧车DEMO_HLS_PREVIEW_UPSTREAM=http://mediamtx-hls:8888
# 本机 uvicorn 直连 published 端口DEMO_HLS_PREVIEW_UPSTREAM=http://127.0.0.1:18888
2026-05-22 16:29:57 +08:00
# 本机 uvicorn 且无 mediamtx-hls 侧车时改为DEMO_HLS_PREVIEW_UPSTREAM=ephemeral
# DEMO_HLS_PREVIEW_PORT=18888
# HLS 预览 MediaMTX 镜像Compose mediamtx-hls 与 ensure 临时容器共用)
2026-05-21 15:48:03 +08:00
# MEDIAMTX_DOCKER_IMAGE=m.daocloud.io/docker.io/bluenviron/mediamtx:latest
# --- 语音确认静态页clients/voice-confirmation/start.sh---
2026-05-21 15:48:03 +08:00
# 默认 0.0.0.0 供局域网内语音终端访问;仅本机调试时可设 127.0.0.1
# VOCH_HTTP_BIND=0.0.0.0