WechatOnCloud README

The project's README from github.com/Gloridust/WechatOnCloud. As one markdown file: README.md.

云微 logo

云微 · WechatOnCloud

在自己的 NAS / 服务器上运行「服务端微信」,多端浏览器共享同一会话

不止微信——还能开 Chromium 浏览器实例,登录 Telegram / X / Instagram 等网页版社媒,常驻云端、多端同步

stars release issues arch pwa twitter telegram

快速开始 · 核心特性 · 浏览器实例 · 运行原理 · 安全须知 · 技术方案

云微 · 面板主界面 云微 · 实例桌面

在飞牛 NAS(x86_64 / arm64)或任意 Docker 主机上运行服务端微信:面板可管理多个实例,每个实例都是一个独立容器——可以是一个微信会话,也可以是一个 Chromium 浏览器(用来登录 Telegram / X / Instagram 等网页版应用)。多个 web 用户通过浏览器访问被授权的实例,实现跨设备同步、多端共享。不修改微信客户端。

一句话原理:每个实例 = 一个容器,里面跑 Xvfb 虚拟显示 + 一个应用(官方原版微信,或 Chromium 浏览器),KasmVNC 把画面串到浏览器;同一实例被多个浏览器连 = 共享同一个会话。前面一层自研面板是唯一对外入口,经 docker.sock 按需创建/销毁实例并反向代理。

交流群: @WechatOnCloud


核心特性


文档

文档 内容
运行原理与 Docker 指南 工作原理 + 架构图;面向 Docker 新手的逐步拆解、常用命令、架构自动适配
部署与运维 数据持久化、常见问题排查、忘记超管密码的离线找回、目录结构
设备伪装与风控应对 唯一 machine-id / 真实 hostname / os-release 伪装;账号被微信强制退出循环时怎么办
数据卷管理与迁移 管理员在面板里备份/恢复整卷、上传 PC 微信数据、浏览管理实例 /config 文件
发布到 GHCR 用 GitHub Actions 或本机 buildx 把镜像发布到 GHCR
技术方案 完整设计文档与选型权衡

快速开始

需已安装 Docker(含 Compose 插件)。x86_64 / arm64 均可。不熟悉 Docker?先读 运行原理与 Docker 指南。

docker-compose.yml 默认引用 Docker Hub 上的镜像 docker.io/gloridust/{woc-panel,wechat-on-cloud}(同时也发布到 GHCR 作为备用源)。 这两个镜像需先存在——要么官方已发布(你能直接拉取),要么你在本地自行构建。二选一:

方式 A · 本地自构建(官方尚未发布镜像时用这个)

git clone https://github.com/Gloridust/WechatOnCloud.git WechatOnCloud
cd WechatOnCloud
cp .env.example .env            # 至少改掉默认密码 WOC_PASSWORD
./scripts/build-local.sh        # 构建面板 + 微信实例镜像,打成 compose 用的同名标签
docker compose up -d            # compose 默认优先用本地镜像,不会再去远端拉

方式 B · 拉取官方镜像(推荐,无需 clone 整个仓库)

部署只需要 docker-compose.yml 这一个文件——它用 image: 直接拉官方镜像,面板数据放在该文件旁自动创建的 ./data-panel 目录,不依赖仓库里的其它文件。

改配置(强烈建议至少改密码):默认管理员 admin / wechat。登录后在「修改密码」里改;或部署前在 docker-compose.yml 旁放一个 .env(从 .env.example 下载改名),又或在 NAS 的 Compose 环境变量里填 WOC_PASSWORD、WOC_HTTP_PORT、WOC_IMAGE_PREFIX 等(全部可配置项见 .env.example)。

镜像源:默认 Docker Hub(国内外通用、免登录,飞牛等 NAS 还内置了 Docker Hub 加速,通常比 GHCR 更稳)。拉不动时设 WOC_IMAGE_PREFIX 切到备用源 ghcr.io/gloridust 或国内反代 ghcr.nju.edu.cn/gloridust(更多源见 .env.example)。报错 denied = 该源上还没有镜像,换源或用方式 A 本地构建。

无论哪种方式,都会拉起面板容器 woc-panel(唯一对外服务)。浏览器访问 http://<NAS_IP>:36080:

  1. 用 .env 里设置的管理员账号(默认 admin / wechat)登录面板;
  2. 在「实例」页点「新建实例」,选应用类型(微信 或 Chromium 浏览器)、命名、勾选可访问的子账号 → 面板自动 docker run 起一个实例容器(镜像本地没有时才会从镜像源拉取);
  3. 微信实例:进入后点「下载并安装」微信(约 190~210MB,带进度条,仅管理员);浏览器实例:随镜像就绪,跳过这步;
  4. 点「进入实例」→ 微信扫码登录即可收发消息;浏览器则直接打开网页登录 Telegram / X / Instagram 等。

之后被授权的用户换任意设备打开同一地址登录面板,看到自己有权访问的实例,进入即是同一个会话。

🛠️ NAS / 飞牛(fnOS) 用户必看——首次新建实例若卡住报 创建容器失败:… registry-1.docker.io … timeout: 这是 Docker 守护进程拉取实例镜像超时。NAS 自带的「Docker Hub 加速」一般只作用于你在 NAS 界面手动拉镜像,不覆盖面板(经 docker.sock)触发的拉取,于是直连 docker.io 超时。 最省事的解法:先在 NAS 的 Docker → 镜像 → 拉取 里手动拉一次 gloridust/wechat-on-cloud:latest(和你拉 woc-panel 同样的方式)。镜像到本地后,面板新建实例会直接复用、不再联网拉取 → 立即成功。 想一劳永逸:给 Docker 守护进程配「镜像加速器」(/etc/docker/daemon.json 的 registry-mirrors,改完重启 Docker),或把 WOC_IMAGE_PREFIX 换成国内可达源(如 ghcr.nju.edu.cn/gloridust)后重建面板。

宿主只对外暴露面板的 36080 一个端口;实例容器仅在 docker 网络内、由面板反代,不直连宿主。要改端口/版本/账号见 .env(可配置项见 .env.example)。镜像会按 CPU 架构自动适配(详见文档)。

面板能做什么

功能 谁可用 说明
新建 / 删除实例 管理员 一键创建独立实例容器(微信 / Chromium 浏览器);新建时勾选可访问的子账号、可自定义图标。删除默认保留数据卷,可选彻底清除
实例权限分配 管理员 在实例上改「可访问账户」,或在账户上改「可访问实例」,双向管理
下载并安装 / 更新微信 管理员 微信实例一键下载官方 Linux 版到数据卷、解压安装、带进度条,后续可「更新到最新版」(浏览器实例无需此步)
进入实例 被授权用户 在浏览器里操作对应实例:微信扫码收发消息,或在 Chromium 里登录网页应用
文件 / 文本传输 被授权用户 拖拽上传 / 下载文件;文本经剪贴板中转送入实例
实例日志 管理员 查看实例日志,含持久化历史(重启原因 + 上一容器日志快照,跨容器重建保留)
修改密码 所有人 改自己的登录密码
子账号管理 管理员 创建 / 禁用 / 重置 / 删除子账号,并分配实例访问权限
安装为 App 所有人 iOS Safari「添加到主屏幕」、桌面 Chrome「安装」当原生 App(PWA)

子账号是访问这套面板的身份,不是另开一个微信 / 账号。管理员隐式拥有全部实例访问权;子账号只能看到被授权的实例。 微信本体不打进镜像,新建微信实例后在面板点「下载并安装」时才下载到该实例的数据卷(浏览器实例则已随镜像就绪),所以镜像小、构建快。


浏览器实例(登录网页版社媒)

云微是个多应用平台:除了微信,新建实例时还可以选 Chromium 浏览器——相当于一台常驻云端、多端共享的浏览器,专门用来登录各种网页版应用:

和微信实例同一套体验与好处:

⚠️ 浏览器实例登录着你的社媒账号,同样受安全须知约束——切勿把面板暴露公网。


资源占用

实测(8 核 / 8 GiB 宿主,实例均已登录微信、含 Chromium 内核的 WeChatAppEx):

状态 CPU 内存(RSS)
单实例 · 空闲(已登录、无人观看) ~0.1–0.2 核 ~0.6 GiB
单实例 · 活跃(有人在浏览器操作 / 刷消息) ~0.5–1 核(可突发) ~1–1.5 GiB
面板本身 可忽略 ~0.12 GiB

内存是主要瓶颈,CPU 多为短时突发。实例越多越吃内存,按上表线性叠加即可估算。Chromium 浏览器实例的占用与微信实例同量级(取决于开的标签页数),可套用上表。


安全须知(必读)

⚠️ 这套系统暴露的是已登录的微信 / 社媒账号,请务必认真阅读本节。

能登录面板的人就能看你的聊天记录、以你身份发消息(浏览器实例则能用你登录的 Telegram / X / Instagram 等账号)。面板还挂载了宿主的 docker.sock(创建/销毁实例所需),它等同宿主 root 权限。因此:


中文输入

用你本地(客户端)的输入法打中文,容器内无需安装任何 IME。 镜像默认开启 KasmVNC 的「IME Input Mode」,并对 noVNC 的 IME 合成逻辑做了修复——只在输入法「上屏」那一刻把成品汉字整串发进容器,规避了原生实现逐字符差分带来的丢字 / 卡顿。在微信或浏览器的输入框直接打字即可(对所有实例通用)。


路线图

交流与关注

致谢

创意启发自懒猫微服,请自行判断是否值得入手。

也感谢每一位 Star / Issue / PR 的朋友——两天突破 500 ⭐,是继续打磨的最大动力 🙌

Star History

Star History Chart
如果这个项目帮到了你,欢迎点个 ⭐ Star 支持一下 · 反馈问题 · 参与贡献

WechatOnCloud (Gloridust/WechatOnCloud)

Searching Database…

这是什么?WechatOnCloud(云微)是一个自托管面板,在你自己的 NAS 或服务器上用 Docker 容器运行「服务端微信」,让多个浏览器/设备共享完全相同的登录会话。
这是装在手机上的应用,还是跑在服务器上的东西?它是部署在 NAS 或 Docker 主机上的自托管网页面板。它不修改微信客户端,而是在无头容器中运行真正的 Linux 微信(或 Chromium),并通过 KasmVNC 把显示画面串流到任意浏览器。
怎么让它跑起来?从仓库获取 docker-compose.yml(它会从 Docker Hub 或 GHCR 拉取预构建的 gloridust/woc-panel 和 wechat-on-cloud 镜像),用 docker-compose 运行。然后打开面板,创建一个实例(微信或 Chromium),扫码登录即可。
运行之前我需要准备什么?只需要一台 x86_64 或 arm64 主机上的 Docker 及 Compose 插件;不需要安装微信客户端或额外的运行时。
部署它最大的安全隐患是什么?面板会挂载主机的 docker.sock 来创建/销毁实例容器,这实际上等于 root 级权限,因此任何能登录面板的人都可以读取你的聊天记录并冒充你发消息。文档明确警告绝不要把它直接暴露在公共互联网上。
它能在群晖这类家用 NAS 上用吗,还是只能跑在普通服务器上?都可以——它面向任何 Docker 主机(amd64/arm64)构建,对飞牛(fnOS)NAS 有一等支持,并提到可在群晖上通过把 docker-compose.yml 直接粘贴进 Docker 界面来完成 Compose 部署。
除了微信,Chromium 实例还能用来做什么?Chromium 实例是一个持久的云浏览器,你可以用它登录任何网页应用——Telegram Web、X(推特)、Instagram、WhatsApp Web、Discord、Gmail——由于会话保存在实例的数据卷中,重启后仍保持登录状态。
多个人如何共享同一个微信会话?每个实例就是一个容器,KasmVNC 把它的显示画面串流到浏览器;连接到同一实例的多个用户看到和操作的就是同一个会话,还带有软锁机制——当一个人正在操作时,其他人只能只读查看。
一个实例需要多少 CPU 和内存?每个活跃的微信或 Chromium 实例大约需要 1 个 vCPU 和 1.5 GiB 内存(空闲时更少),面板本身约占 0.15 GiB;一台 4 核/8 GiB 的主机可以轻松运行 3-4 个实例。
重启或更新实例会丢失聊天记录或登录状态吗?不会——实例数据(微信登录状态、聊天记录、浏览器 Cookie)存放在每个实例专用的 Docker 卷中,因此停止、重启容器或将其升级到新镜像都不会丢失。
Creator
Gloridust
Size
2.3 MB
Stars
3.9K
Age
4mo
Commits · 90 Days