mirror of
https://github.com/Gloridust/WechatOnCloud.git
synced 2026-06-16 19:53:53 +08:00
0417cd029f
Docker Hub 国内/国际通用、免登录拉公开镜像,飞牛OS(fnOS) 等 NAS 还内置拉取加速, 通常比 GHCR 更快更稳。docker-compose.yml 两处 :- 兜底默认与 .env.example 默认值 由 ghcr.io/gloridust 改为 docker.io/gloridust;GHCR / 南大反代 / 阿里云等列为备用源。 README 快速开始措辞同步更新。镜像仍同时发布到两个 registry,未改 CI。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
112 lines
7.4 KiB
Bash
112 lines
7.4 KiB
Bash
# 复制本文件为 .env 即可覆盖默认配置。全部可选——不建 .env 也能直接 `docker compose up -d`。
|
||
|
||
# 面板首个管理员账号 / 密码(仅首次启动、无账号文件时写入)。强烈建议改掉默认密码!
|
||
WOC_USER=admin
|
||
WOC_PASSWORD=wechat
|
||
|
||
# 镜像版本:默认 latest;上线后建议钉到具体版本(如 1.0.0,注意不带 v)以便可控升级。
|
||
# 同时作用于面板镜像和新建微信实例所用镜像。
|
||
WOC_VERSION=latest
|
||
|
||
# 镜像源前缀(registry + 命名空间)。本项目镜像同步发布到 Docker Hub 和 GHCR。
|
||
#
|
||
# 默认走 Docker Hub:国内/国际通用、无需登录即可拉公开镜像,飞牛 OS(fnOS) 等 NAS 还内置拉取加速。
|
||
# 拉不动时按需切到备用源:
|
||
# WOC_IMAGE_PREFIX=ghcr.io/gloridust # GitHub Container Registry(备用)
|
||
# WOC_IMAGE_PREFIX=ghcr.nju.edu.cn/gloridust # 南京大学镜像站反代 ghcr.io(国内较稳)
|
||
# WOC_IMAGE_PREFIX=registry.cn-hangzhou.aliyuncs.com/你的命名空间 # 自己的阿里云 ACR / 腾讯 TCR / 华为 SWR
|
||
#
|
||
# 反代会把 docker.io/gloridust/xxx(或 ghcr.io/gloridust/xxx)映射为 <反代>/gloridust/xxx。
|
||
WOC_IMAGE_PREFIX=docker.io/gloridust
|
||
|
||
# 宿主用户 uid/gid(飞牛上用 `id` 命令查看;单用户 NAS 一般是 1000)。
|
||
# 透传给每个微信实例容器,决定面板数据与微信数据卷的属主。
|
||
WOC_PUID=1000
|
||
WOC_PGID=1000
|
||
|
||
# 时区
|
||
WOC_TZ=Asia/Shanghai
|
||
|
||
# 面板对外端口(宿主侧,默认用冷门端口避免冲突;容器内固定 8080)。
|
||
# 面板是唯一对外入口;微信实例不直接对宿主暴露,由面板反向代理。
|
||
WOC_HTTP_PORT=36080
|
||
|
||
# 面板允许的 Host 头白名单。用于阻止 DNS rebinding:攻击者控制的域名解析到面板
|
||
# LAN/loopback 地址后,浏览器视其为同源、自动带上面板 cookie,能从受害者浏览器内
|
||
# 发起任何已鉴权 API 调用(含挂载 docker.sock 的管理端点);sameSite=lax 不挡此攻击。
|
||
#
|
||
# 默认始终放行:localhost / 127.0.0.1 / ::1 + RFC1918 私网(10/8、172.16-31/12、
|
||
# 192.168/16、169.254/16)—— 覆盖直连 NAS / 局域网访问场景,**不需要改任何东西**。
|
||
#
|
||
# 套 HTTPS 反代部署(Caddy / nginx / 飞牛 内置反代 / Cloudflare Tunnel 等)时,把对外
|
||
# 域名加进来。**支持多个域名,用英文逗号分隔**;填免端口主机名,大小写不敏感:
|
||
#
|
||
# 单域名: PANEL_ALLOWED_HOSTS=woc.example.com
|
||
# 多域名: PANEL_ALLOWED_HOSTS=woc.example.com,woc.lan,wechat.mynas.cn
|
||
# 通配子域: PANEL_ALLOWED_HOSTS=*.example.com (匹配 a.example.com,不含裸 example.com)
|
||
# 含 IPv6 字面量:PANEL_ALLOWED_HOSTS=[2001:db8::1]
|
||
#
|
||
# 改完务必用 **docker compose up -d** 让容器带新环境重建;只 `docker restart` **不会**加载新值!
|
||
#
|
||
# 排错:若反代/Cloudflare 部署后仍看到 400 "Host header not allowed",错误响应里会回显面板实际
|
||
# 收到的 host / forwardedHost —— 把那个值(或其通配)加进本白名单即可。面板也会自动接受
|
||
# X-Forwarded-Host(可信反代设置),故多数反代无需额外配置。
|
||
PANEL_ALLOWED_HOSTS=
|
||
|
||
# ── 音频 / 麦克风 / 摄像头 ───────────────────────────────────
|
||
# 音频(听):**自动开启**,进入桌面、点一下画面(浏览器自动播放策略要求一次手势)即可出声,
|
||
# 无需手动找工具条。仅当前聚焦的实例出声,切走/切到别的实例会自动断开,避免多端串音。
|
||
# 麦克风(说) / 摄像头(视频):浏览器要求"安全上下文",即必须通过 HTTPS 访问面板
|
||
# (或 localhost)。生产环境务必给面板套 HTTPS(反代/证书),否则浏览器会禁用麦克风与摄像头。
|
||
#
|
||
# 摄像头还需要宿主提供一个虚拟视频设备(v4l2loopback):
|
||
# 1) 宿主安装并加载内核模块:
|
||
# Ubuntu/Debian: sudo apt install v4l2loopback-dkms && sudo modprobe v4l2loopback
|
||
# (飞牛/其它发行版若自带 v4l2loopback 同理 modprobe;没有则摄像头不可用,其余功能正常)
|
||
# 2) 确认出现了 /dev/videoN 设备。
|
||
# 3) 二选一让实例容器拿到该设备:
|
||
# a) 自动:保留 compose 里的 `/dev:/host-dev:ro` 挂载,面板会自动探测并映射;
|
||
# b) 显式:在下面列出设备(逗号分隔),并可删掉那条 /host-dev 挂载。
|
||
# 留空 = 不映射摄像头(音频/麦克风不受影响)。
|
||
WOC_VIDEO_DEVICES=
|
||
|
||
# ── 实例资源 / 稳定性 ───────────────────────────────────────
|
||
# GPU 硬件编码:baseimage 检测到 /dev/dri/renderD* 时会给 Xvnc 加 -hw3d(GPU 加速编码)。
|
||
# 在 WSL2 / 虚拟 GPU(如 Docker Desktop on Windows)下,该路径会导致 Xvnc 内存持续膨胀
|
||
# (实测 21 小时涨到 ~9GB)。本项目已强制软件渲染(LIBGL_ALWAYS_SOFTWARE=1),hw3d 对微信
|
||
# 这类静态界面收益甚微,故默认关闭。仅在你有真实可用的 GPU 且确认无内存问题时再设为 1 启用。
|
||
WOC_ENABLE_GPU=
|
||
|
||
# 每个微信实例容器的内存上限(GiB)。默认空 = 不限制(与旧版一致)。
|
||
# 作为兜底:万一某进程异常增长,命中上限时容器内 OOM 杀进程、由 s6 自动重启 VNC,
|
||
# 避免拖垮整台宿主。常规使用单实例约需 1~1.5GiB,设 3~4 较稳妥。
|
||
WOC_INSTANCE_MEM_GB=
|
||
|
||
# ── 设备伪装(降低被微信判"非真实设备"风控的概率) ───────────
|
||
# 每个实例默认已自动做:唯一且持久的 machine-id(避免全网共用同一个,触发"设备农场"风控)、
|
||
# 像个人电脑的 hostname(不再是 woc-wx-<hex>)、移除 /.dockerenv 容器标记。这些恒定开启。
|
||
#
|
||
# WOC_SPOOF_OS 是否把 /etc/os-release 伪装成 deepin(微信官方支持的发行版,且 Deepin 基于
|
||
# Debian、与本镜像用户态一致)。默认 1(开);设 0 恢复显示真实 Debian。
|
||
# 说明:设备伪装是「尽力而为」,非保证不被封;详见 doc/设备伪装.md。
|
||
WOC_SPOOF_OS=1
|
||
|
||
# ── 自愈 watchdog(应对 KasmVNC/Xvnc 长跑内存泄漏) ───────────
|
||
# 实测 Xvnc 长跑 24h 可膨胀到 ~9GiB,原因在 KasmVNC/Xvnc 自身的 framebuffer / 软渲染 cache
|
||
# 累积,不归本项目控制。面板内置一个 watchdog:周期性检查每个 running 实例的 working set
|
||
# 内存(= docker stats 显示值),按两档阈值(这里设全局默认;每个实例可在「管理 → 实例卡片
|
||
# → 安全」按钮里单独覆盖)触发主动 stop + run(聊天数据在卷里、登录态本来也会定期失效,
|
||
# 可控时机自愈优于撑到 OOM):
|
||
#
|
||
# soft 超过且【当前没人在远程会话】才重启 → 柔和自愈,不打扰使用者
|
||
# hard 超过即重启(无视会话),防止 OOM 拖垮宿主
|
||
#
|
||
# WOC_INSTANCE_MEM_SOFT_MB soft 阈值(MiB),默认 1500
|
||
# WOC_INSTANCE_MEM_HARD_MB hard 阈值(MiB),默认 2500(兼容旧名 WOC_INSTANCE_MEM_LIMIT_MB)
|
||
# WOC_WATCHDOG_INTERVAL_SEC 巡检间隔秒,默认 300(5 分钟);最小 60;0 = 关闭整个 watchdog
|
||
#
|
||
# 调参建议:日常活跃单实例约 1500 MiB;soft 应略高于此(如 2000);hard 远低于宿主可用内存。
|
||
WOC_INSTANCE_MEM_SOFT_MB=1500
|
||
WOC_INSTANCE_MEM_HARD_MB=2500
|
||
WOC_WATCHDOG_INTERVAL_SEC=300
|