diff --git a/README.md b/README.md index 47462ef..7c1512b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,54 @@ -# WechatOnCloud +
-在飞牛 NAS(x86_64 / arm64)上运行服务端微信:可管理**多个**微信实例,每个实例是一个独立的微信会话;多个 web 用户通过浏览器访问被授权的实例,实现跨设备消息同步、多端共享。 +云微 logo -> 设计与选型详见 [技术方案.md](技术方案.md)。 -> 部署形态:拉取 GHCR 预构建多架构镜像(或本地自构建),面板按需动态创建微信实例容器。不熟悉 Docker?直接看 [Docker 运行模式详解](#docker-运行模式详解新手向)。 +

云微 · WechatOnCloud

+ +

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

+ +

+ stars + release + issues + arch + pwa +

+ +

+ 快速开始 · + 核心特性 · + 运行原理 · + 安全须知 · + 技术方案 +

+ + + + + + +
云微 · 面板主界面云微 · 实例桌面
+ +
+ +在飞牛 NAS(x86_64 / arm64)或任意 Docker 主机上运行服务端微信:可管理**多个**微信实例,每个实例是一个独立的微信会话;多个 web 用户通过浏览器访问被授权的实例,实现跨设备消息同步、多端共享。**不修改微信客户端。** + +> 设计与选型详见 [技术方案.md](doc/技术方案.md)。不熟悉 Docker?直接看 [Docker 运行模式详解](#docker-运行模式详解新手向)。 + +--- + +## 核心特性 + +- 🗂️ **多实例** — 一个面板管理多个独立微信会话,每个实例独立容器 + 独立数据卷,互不干扰。 +- 👥 **多端共享 + 权限** — 多浏览器 / 设备共享同一会话;子账号体系,按账号分配可访问的实例(RBAC)。 +- 🖥️ **微信 PC 式界面** — 左侧实例栏 + 右侧内嵌桌面,侧栏可折叠,移动端自动转抽屉。 +- 📦 **微信本体运行时下载** — 镜像不打包微信,面板一键「下载安装 / 更新」带进度条;按 CPU 架构自动取包。 +- 🔁 **实例生命周期** — 启动 / 停止 / 重启 / 升级(拉新镜像重建、保留聊天记录),均在面板内一键完成。 +- 📎 **文件传输** — 原生拖拽上传 + 下载 + 删除,直达微信桌面 `~/Desktop`。 +- 🧩 **多端协作软锁** — 同一实例多人操作时自动只读 + 申请接管,避免键鼠打架。 +- 🔒 **安全优先** — 面板为唯一入口,KasmVNC 凭据服务端注入、永不下发前端;docker.sock 仅管理员可触达。 +- 📱 **PWA** — iOS「添加到主屏幕」、桌面 Chrome「安装」当原生 App。 +- 🏗️ **多架构** — amd64 / arm64 预构建镜像(GHCR + GitHub Actions 自动发布)。 --- @@ -248,7 +293,9 @@ docker buildx build --platform linux/amd64,linux/arm64 \ --- -## ⚠️ 安全须知(必读) +## 安全须知(必读) + +> ⚠️ **这套系统暴露的是已登录的微信,请务必认真阅读本节。** 这套系统暴露的是**已登录的微信**——能登录面板的人就能看聊天记录、以你身份发消息。**面板还挂载了宿主的 `docker.sock`**(创建/销毁实例所需),它等同宿主 root 权限。因此: @@ -257,7 +304,7 @@ docker buildx build --platform linux/amd64,linux/arm64 \ - 实例的增删、微信安装/更新等触碰 docker 引擎的操作**仅限管理员**;docker API 绝不暴露给前端; - KasmVNC 凭据由面板服务端注入,**浏览器永远拿不到**;实例容器名由内部随机 ID 派生,避免注入; - 面板与外网之间再套一层 HTTPS 反代(飞牛自带反代 / Caddy / Nginx)获得正经 TLS; -- 进一步加固(陌生设备验证码、审计日志、并发控制)见 [技术方案.md](技术方案.md) 第 5 节。 +- 进一步加固(陌生设备验证码、审计日志、并发控制)见 [技术方案.md](doc/技术方案.md) 第 5 节。 --- @@ -321,19 +368,22 @@ WechatOnCloud/ ├── .github/workflows/ │ └── release.yml # 打 tag / 发 Release 时构建多架构镜像并推送 GHCR ├── docker/ # 微信实例镜像(ghcr.io//wechat-on-cloud) -│ ├── Dockerfile # KasmVNC base + 中文字体 + 微信运行时依赖 + 默认开 IME(不打包微信本体) +│ ├── Dockerfile # KasmVNC base + 中文字体 + 微信运行时依赖 + xdotool + 默认开 IME(不打包微信本体) │ ├── wechat-ctl.sh # 运行时下载/解压/更新微信(面板经 docker exec 触发,状态写 /config/.woc-state) -│ └── autostart # openbox 会话启动:等待微信就绪 + 常驻拉起(含崩溃自重启) +│ ├── autostart # openbox 会话启动:常驻拉起微信(崩溃自重启)+ 最小化窗口自动复原看守 +│ └── woc-update-autostart # 启动钩子:每次启动用镜像内最新 autostart 覆盖数据卷旧副本 ├── panel/ # 自研面板(ghcr.io//woc-panel,唯一对外入口) │ ├── Dockerfile # 前端 Vite 打包 + 后端 Fastify 网关(多架构) -│ ├── server/ # Fastify:cookie 鉴权 + 账号/实例/权限 API + dockerode 管理实例 + 反代 -│ └── web/ # React + TS + PWA(牛奶布艺 + 微信绿主题) +│ ├── server/ # Fastify:cookie 鉴权 + 账号/实例/权限/生命周期 API + dockerode + 反代 +│ └── web/ # React + TS + PWA(微信 PC 式布局,牛奶布艺 + 微信绿主题) ├── fnos/ # 飞牛 fnOS 应用打包(.fpk 工程 + 构建说明) ├── scripts/ │ └── build-local.sh # 本地构建面板+微信镜像(发布前自测 / 自托管自构建) +├── doc/ # 文档与素材 +│ ├── 技术方案.md # 完整设计文档 +│ └── img/ # logo 与界面截图 ├── docker-compose.yml # 单服务:panel(挂 docker.sock,按需创建实例) ├── .env.example # 可选配置(账号密码、镜像版本、PUID/PGID、端口、时区) -├── 技术方案.md # 完整设计文档 └── README.md ``` @@ -355,4 +405,24 @@ WechatOnCloud/ ## 致谢 -创意启发自懒猫微服(原Deepin团队做的硬件产品),推荐有经济实力、追求稳定运营的朋友尝试! \ No newline at end of file +创意启发自懒猫微服(原 Deepin 团队做的硬件产品),推荐有经济实力、追求稳定运营的朋友尝试! + +也感谢每一位 Star / Issue / PR 的朋友——**两天突破 500 ⭐**,是继续打磨的最大动力 🙌 + +## Star 趋势 + + + + + + Star History Chart + + + +--- + +
+如果这个项目帮到了你,欢迎点个 ⭐ Star 支持一下 · +反馈问题 · +参与贡献 +
\ No newline at end of file diff --git a/doc/img/Screenshot-1.png b/doc/img/Screenshot-1.png new file mode 100644 index 0000000..0995466 Binary files /dev/null and b/doc/img/Screenshot-1.png differ diff --git a/doc/img/Screenshot-2.png b/doc/img/Screenshot-2.png new file mode 100644 index 0000000..9bd5525 Binary files /dev/null and b/doc/img/Screenshot-2.png differ diff --git a/doc/img/icon-192.png b/doc/img/icon-192.png new file mode 100644 index 0000000..8e6c77b Binary files /dev/null and b/doc/img/icon-192.png differ diff --git a/技术方案.md b/doc/技术方案.md similarity index 94% rename from 技术方案.md rename to doc/技术方案.md index 7505c28..4fe0cf4 100644 --- a/技术方案.md +++ b/doc/技术方案.md @@ -1,7 +1,6 @@ # WechatOnCloud 技术方案 -> 目标:在飞牛 NAS(x86_64)上运行一个服务端微信,多个 web 用户通过浏览器访问同一个微信会话,实现跨设备消息同步、多端共享,解决原生微信"一台电脑一个登录"的痛点。 -> 参考形态:懒猫微服「云微信」。 +> 目标:在飞牛 NAS(x86_64)或任何服务器上运行服务端微信,多个 web 用户通过浏览器访问同一个微信会话,实现跨设备消息同步、多端共享,解决原生微信"一台电脑一个登录"的痛点。 --- @@ -147,7 +146,6 @@ ``` WechatOnCloud/ -├── 技术方案.md # 本文档 ├── docker/ │ ├── Dockerfile # Debian + Xvfb + 微信deb + KasmVNC │ ├── entrypoint.sh # 启动 Xvfb → WM → 微信 → KasmVNC @@ -183,8 +181,7 @@ WechatOnCloud/ - [微信 Linux 官网](https://linux.weixin.qq.com/en) - [腾讯上线 Linux 微信官网(x86/Arm/LoongArch)](https://finance.sina.com.cn/tech/roll/2024-11-06/doc-incvceuc0172323.shtml) -- [懒猫微服 云微信](https://lazycat.cloud/lcmd/) -- [开源云微信部署方案(低配版懒猫远程微信)](https://linux.do/t/topic/1306818) +- [懒猫微服 云微信](https://lazycat.cloud/) - [Xpra 官方文档](https://xpra.org/manual) - [Xpra HTML5 客户端](https://github.com/Xpra-org/xpra-html5) - [飞牛 fpk 框架文档](https://developer.fnnas.com/docs/core-concepts/framework)