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…

What is this?WechatOnCloud (云微) is a self-hosted panel that runs 'server-side WeChat' in a Docker container on your own NAS or server, so multiple browsers/devices can share the exact same logged-in session.
Is this an app I install on my phone, or something I run on a server?It is a self-hosted web panel you deploy on a NAS or Docker host. It does not modify the WeChat client; instead it runs the real Linux WeChat (or Chromium) inside a headless container and streams the display to any browser via KasmVNC.
How do I get it running?Grab the docker-compose.yml from the repo (it pulls the prebuilt gloridust/woc-panel and wechat-on-cloud images from Docker Hub or GHCR) and run it with docker-compose. Then open the panel, create an instance (WeChat or Chromium), and scan the QR code to log in.
What do I need before I can run it?Just Docker with the Compose plugin on an x86_64 or arm64 host; no WeChat client install or extra runtime is required.
What is the biggest safety pitfall when deploying this?The panel mounts the host's docker.sock to create/destroy instance containers, which is effectively root-level access, so anyone who can log into the panel can read your chats and send messages as you. The docs explicitly warn never to expose it directly on the public internet.
Does it work on consumer NAS boxes like Synology, or only on a generic server?Both — it's built for any Docker host (amd64/arm64), with first-class support for 飞牛 (fnOS) NAS and mentions Synology-style Compose deployment via pasting the docker-compose.yml directly in the Docker UI.
What can a Chromium instance be used for besides WeChat?A Chromium instance is a persistent cloud browser you can use to log into any web app — Telegram Web, X (Twitter), Instagram, WhatsApp Web, Discord, Gmail — and it stays logged in across restarts since the session is stored in the instance's data volume.
How do multiple people share the same WeChat session?Every instance is one container, and KasmVNC streams its display to the browser; multiple users connecting to the same instance are literally viewing/controlling the same session, with a soft lock that makes it read-only for others while one person is active.
How much CPU and RAM does one instance need?Roughly 1 vCPU and 1.5 GiB RAM per active WeChat or Chromium instance (less when idle), plus about 0.15 GiB for the panel itself; a 4-core/8 GiB host can comfortably run 3-4 instances.
Do I lose my chat history or login if I restart or update an instance?No — instance data (WeChat login state, chat history, browser cookies) lives in a dedicated Docker volume per instance, so stopping, restarting, or upgrading the container to a newer image preserves it.
Creator
Gloridust
Size
2.3 MB
Stars
3.9K
Age
4mo
Commits · 90 Days