WechatOnCloud/docker-compose.yml

83 lines
5.9 KiB
YAML
Raw Normal View History

# WechatOnCloud —— 面板为唯一服务微信实例由面板按需动态创建docker run
# 面板挂载 docker.sock 来创建/启动/删除微信实例容器,并反向代理到它们的 KasmVNC。
# 镜像默认从 Docker Hub 拉取GHCR 备用),无需本地构建。要改配置:复制 .env.example 为 .env 后修改。
services:
panel:
# 镜像源前缀默认 Docker Hub飞牛等 NAS 有加速);拉不动时改 .env 的 WOC_IMAGE_PREFIX 切到 GHCR/国内反代(见 .env.example
image: ${WOC_IMAGE_PREFIX:-docker.io/gloridust}/woc-panel:${WOC_VERSION:-latest}
container_name: woc-panel
# pull_policy 用默认missing本地已有同名镜像就直接用没有才去镜像源拉。
# 这样「发布前本地自构建」与「线上拉取」都能用同一份 compose。
# 想强制更新到最新版docker compose pull && docker compose up -d
environment:
- PORT=8080
# 新建微信实例时使用的镜像多架构amd64/arm64 自动匹配);前缀同样跟随 WOC_IMAGE_PREFIX。
# 可通过 .env 中的 WOC_WECHAT_IMAGE 完全覆盖(本地自构建时使用)。
- WOC_WECHAT_IMAGE=${WOC_WECHAT_IMAGE:-${WOC_IMAGE_PREFIX:-docker.io/gloridust}/wechat-on-cloud:${WOC_VERSION:-latest}}
# 透传给每个微信实例容器KasmVNC 基础镜像用它们降权运行)
- PUID=${WOC_PUID:-1000}
- PGID=${WOC_PGID:-1000}
- TZ=${WOC_TZ:-Asia/Shanghai}
# 摄像头直通:逗号分隔的宿主视频设备(如 /dev/video0。留空则自动探测见下方 /host-dev 挂载)或禁用摄像头。
# 启用前需在宿主加载 v4l2loopback 内核模块。详见 .env.example。
- WOC_VIDEO_DEVICES=${WOC_VIDEO_DEVICES:-}
# 实例资源相关(见 .env.exampleGPU 硬件编码默认关闭(避免 WSL2/虚拟 GPU 下 Xvnc 内存暴涨);
# 可选给每个实例设内存上限GiB0=不限制watchdog 双阈值soft 柔和自愈 / hard 强制重启)+ 巡检间隔。
- WOC_ENABLE_GPU=${WOC_ENABLE_GPU:-}
- WOC_INSTANCE_MEM_GB=${WOC_INSTANCE_MEM_GB:-}
- WOC_INSTANCE_MEM_SOFT_MB=${WOC_INSTANCE_MEM_SOFT_MB:-1500}
- WOC_INSTANCE_MEM_HARD_MB=${WOC_INSTANCE_MEM_HARD_MB:-2500}
- WOC_WATCHDOG_INTERVAL_SEC=${WOC_WATCHDOG_INTERVAL_SEC:-300}
# 设备伪装os-release 伪装成 deepin默认开=0 关恢复 Debian。详见 .env.example / doc/设备伪装.md。
- WOC_SPOOF_OS=${WOC_SPOOF_OS:-1}
# 登录会话时长(天,默认 30。会话已落盘持久化面板重启/自更新不再踢人。调小更安全、调大更省事。
- WOC_SESSION_DAYS=${WOC_SESSION_DAYS:-30}
# 拉取实例镜像的"无进度"超时(分钟,默认 5。NAS 直连 docker.io 卡死时据此快速失败而非无限转圈。
- WOC_PULL_STALL_MIN=${WOC_PULL_STALL_MIN:-5}
# 实例桌面深色:由面板顶栏的主题开关统一控制(管理员),持久化在 accounts.json无需在此配 env。
# 面板首个管理员账号(仅首次启动、无账号文件时写入;务必改掉默认密码)
- PANEL_ADMIN_USER=${WOC_USER:-admin}
- PANEL_ADMIN_PASSWORD=${WOC_PASSWORD:-wechat}
- PANEL_DATA=/data/accounts.json
# DNS-rebinding 防护:套 HTTPS 反代部署时把对外域名加进 .env详见 .env.example
# 默认仅放行 loopback + RFC1918 私网,直连 NAS / 局域网无需改动。
- PANEL_ALLOWED_HOSTS=${PANEL_ALLOWED_HOSTS:-}
# bridge 业务 API 的 M2M 鉴权 token(供外部系统如 ForcePilot 调用 /api/bridge/:id/*)
# 留空=仅允许管理员会话鉴权(兼容旧部署);配置后支持 Authorization: Bearer <token> 直连。
- WOC_BRIDGE_API_TOKEN=${WOC_BRIDGE_API_TOKEN:-}
# bridge 行为与好友自动通过相关配置:面板启动实例时透传给容器内的 bridge 进程。
- WOC_BRIDGE_SEND_DELAY_MS=${WOC_BRIDGE_SEND_DELAY_MS:-800}
- WOC_BRIDGE_MAX_CALLS_PER_SEC=${WOC_BRIDGE_MAX_CALLS_PER_SEC:-10}
- WOC_BRIDGE_MAX_BATCH_SIZE=${WOC_BRIDGE_MAX_BATCH_SIZE:-50}
- WOC_BRIDGE_POLL_INTERVAL_MS=${WOC_BRIDGE_POLL_INTERVAL_MS:-2000}
- WOC_AUTO_ACCEPT_ENABLED=${WOC_AUTO_ACCEPT_ENABLED:-false}
- WOC_AUTO_ACCEPT_ALL=${WOC_AUTO_ACCEPT_ALL:-false}
- WOC_AUTO_ACCEPT_WHITELIST_WXIDS=${WOC_AUTO_ACCEPT_WHITELIST_WXIDS:-}
- WOC_AUTO_ACCEPT_WHITELIST_NICKNAMES=${WOC_AUTO_ACCEPT_WHITELIST_NICKNAMES:-}
- WOC_AUTO_ACCEPT_KEYWORDS=${WOC_AUTO_ACCEPT_KEYWORDS:-}
- WOC_AUTO_ACCEPT_BLACKLIST_WXIDS=${WOC_AUTO_ACCEPT_BLACKLIST_WXIDS:-}
- WOC_AUTO_ACCEPT_BLACKLIST_NICKNAMES=${WOC_AUTO_ACCEPT_BLACKLIST_NICKNAMES:-}
- WOC_AUTO_ACCEPT_ALLOW_SCENES=${WOC_AUTO_ACCEPT_ALLOW_SCENES:-}
- WOC_AUTO_ACCEPT_POLL_INTERVAL=${WOC_AUTO_ACCEPT_POLL_INTERVAL:-3}
- WOC_UI_BACKEND=${WOC_UI_BACKEND:-flow}
- WOC_UI_DEBUG_SHOTS=${WOC_UI_DEBUG_SHOTS:-false}
# 纯坐标模式:=1 时 bridge 跳过 OpenCV 模板匹配,直接用窗口比例坐标定位 UI 元素。
# 适用于模板图像不可靠的场景,避免假匹配/假阳性。留空=用 OpenCV需正确模板
- WOC_DISABLE_OPENCV=${WOC_DISABLE_OPENCV:-1}
volumes:
# 面板账号数据(用户、实例元信息、密码哈希)
- ./data-panel:/data
# 面板经 docker 引擎创建/启动/删除微信实例容器、exec 触发下载、读取进度。
# 注意docker.sock 等同宿主 root 权限故实例增删仅限管理员docker API 绝不暴露给前端。
- /var/run/docker.sock:/var/run/docker.sock
# 摄像头自动探测(可选):把宿主 /dev 只读挂进来,面板据此发现 /dev/videoN 并映射给实例。
# 不想自动探测就删掉此行,改用上面的 WOC_VIDEO_DEVICES 显式指定。
- /dev:/host-dev:ro
ports:
- "${WOC_HTTP_PORT:-36080}:8080" # 面板 = 唯一对外入口
restart: unless-stopped