Files
WechatOnCloud/docker-compose.yml
Gloridust 17ba168764 feat: 音视频/文件传输 + 产品 UX 改进 + 镜像源可切换
媒体链路(生产 HTTPS 下可用,含降级)
- 音频(听):PulseAudio + KasmVNC 工具条,开箱即用
- 麦克风(说):virtmic 管道源已就绪,运行时需 HTTPS(非 HTTPS 前端提示)
- 摄像头(视频):docker.ts 条件化 v4l2 设备直通 + 加 video 组;无设备/无 HTTPS 时优雅降级,音频麦克风不受影响
- WOC_VIDEO_DEVICES 显式指定或经 /host-dev 自动探测

文件传输(原生拖拽)
- 面板侧拖拽上传 + 下载:dockerode putArchive/getArchive 到实例 ~/Desktop(持久卷)
- 纯 JS 单文件 tar 编解码(免依赖),文本/二进制均无损;全程走面板鉴权与权限校验

安全 & UX
- 默认密码告警条 + mustChangePassword 追踪(兼容旧账号文件迁移)
- 会话过期(401) 自动跳登录;桌面连接 loading 态
- 停止/未创建实例一键启动(新增 /api/admin/instances/:id/start)
- 统一牛奶布艺弹窗 + Toast,替换 Admin 原生 alert/confirm/prompt
- 密码可见切换;实例重命名;退出二次确认;空状态改用品牌终端图标

其它
- gen-icons 生成终端风格图标(此前仅空白绿块,影响 Docker/CI 产物)
- 镜像源可切换 WOC_IMAGE_PREFIX(国内反代/ACR);品牌名「云微」
- 文档:.env.example / docker-compose 增加音视频(v4l2loopback/HTTPS)、镜像源、视频设备说明

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 10:56:33 +08:00

43 lines
2.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WechatOnCloud —— 面板为唯一服务微信实例由面板按需动态创建docker run
# 面板挂载 docker.sock 来创建/启动/删除微信实例容器,并反向代理到它们的 KasmVNC。
# 镜像全部从 GHCR 拉取,无需本地构建。要改配置:复制 .env.example 为 .env 后修改。
services:
panel:
# 镜像源前缀默认 GHCR大陆网络拉不动时改 .env 的 WOC_IMAGE_PREFIX 切到国内反代(见 .env.example
image: ${WOC_IMAGE_PREFIX:-ghcr.io/gloridust}/woc-panel:${WOC_VERSION:-latest}
container_name: woc-panel
# pull_policy 用默认missing本地已有同名镜像就直接用没有才去 GHCR 拉。
# 这样「发布前本地自构建」与「线上拉取」都能用同一份 compose。
# 想强制更新到 GHCR 最新版docker compose pull && docker compose up -d
environment:
- PORT=8080
# 新建微信实例时使用的镜像多架构amd64/arm64 自动匹配);前缀同样跟随 WOC_IMAGE_PREFIX。
- WOC_WECHAT_IMAGE=${WOC_IMAGE_PREFIX:-ghcr.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:-}
# 面板首个管理员账号(仅首次启动、无账号文件时写入;务必改掉默认密码)
- PANEL_ADMIN_USER=${WOC_USER:-admin}
- PANEL_ADMIN_PASSWORD=${WOC_PASSWORD:-wechat}
- PANEL_DATA=/data/accounts.json
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