PassNAT LogoPassNAT

云微 WechatOnCloud:把微信挂在 NAS 上,公司电脑浏览器就能回消息 —— Docker 部署 + 内网穿透远程访问

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

云微(WechatOnCloud)是一个开源项目:在你自己的 NAS 上跑一个官方原版的电脑微信,然后用浏览器打开它收发消息。微信客户端一行都没改,它只是把微信装在一个容器里,再把画面串到网页上——公司电脑不让装微信、手机存储被聊天记录塞满、换台设备想接着聊,这几种情况都能用它解决。

它是「一个面板 + 多个实例」的结构:面板负责登录和管理,每新建一个实例就是一个独立容器。实例可以选微信、QQ,或者一个 Chromium 浏览器(用来常驻邮箱、各种管理后台这类要一直保持登录的网页)。同一个实例换台电脑、换个手机打开,看到的是同一个会话;还能给家人建子账号,只让他看到分给他的那个实例。项目地址:点我跳转

部署安装

只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:先用 帕斯内网穿透 建一条隧道拿到在外面能打开的地址,再把云微用 Docker Compose 装起来。编排里有一项要填这个地址(PANEL_ALLOWED_HOSTS),所以先建隧道、后部署。

一、用帕斯内网穿透建一条隧道

飞牛自带的「应用中心」里就有 PassNAT 插件,装上打开,点「创建隧道」。隧道名字随便起(不超过 12 个字符),本地 IP 留默认的 127.0.0.1,本地端口填 36080(就是下面编排里冒号左边那个端口),传输协议默认的 TCP 就行。

建好之后点开这条隧道,按一下电源,状态变成运行中,详情里这一串(形如 IP:端口)就是在外面能打开的地址,先记下来,下一步要填进编排。

这个面板背后登着你的微信,谁能打开它、谁就能以你的身份发消息,所以密码一定一定要设好:下一步编排里的面板密码必须改掉默认值;如果传输协议选的是 HTTP,再把隧道表单里的「网页访问用户名」和「网页访问密码」填上,打开网页时先要过 PassNAT 这一道门(密码最多 12 个字符,超了会创建失败)。

有条件的话,传输协议选 HTTPS 更稳:除了子域名和顶级域名,还要填 Crt 证书路径和 Key 密钥路径(证书文件在 NAS 上的绝对路径,证书要和你用的域名对应,域名验证和证书怎么准备见 PassNAT 文档)。

不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。

二、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点新增项目。项目名称填 yunwei,路径在「我的文件」下面挑一个空文件夹,来源选「创建 docker-compose.yml」,把下面这段整个贴进去:

1services:
2 woc:
3 image: gloridust/woc-panel:latest
4 container_name: woc-panel
5 environment:
6 - WOC_WECHAT_IMAGE=gloridust/wechat-on-cloud:latest
7 - PANEL_ADMIN_USER=admin
8 - PANEL_ADMIN_PASSWORD=改成你自己的密码
9 - PANEL_ALLOWED_HOSTS=隧道给的地址
10 - PANEL_DATA=/data/accounts.json
11 - TZ=Asia/Shanghai
12 volumes:
13 - ./data:/data
14 - /var/run/docker.sock:/var/run/docker.sock
15 ports:
16 - 36080:8080
17 restart: unless-stopped

这段编排里要改两处:

PANEL_ADMIN_PASSWORD:把「改成你自己的密码」换成一个够长的新密码。不改的话默认是 admin / wechat,等于没锁门。这个值只在第一次启动时写进账号文件,之后要改就在面板里点「修改密码」。

PANEL_ALLOWED_HOSTS:把「隧道给的地址」换成上一步拿到的地址。TCP 隧道只写 IP、不带端口;用 HTTP / HTTPS 隧道就写域名,都不带 http:// 和路径。面板默认只认局域网地址,这一栏不填的话,从外面打开会直接报 400 Host header not allowed。

面板要挂载 /var/run/docker.sock,因为每新建一个实例,它都要自己起一个容器。端口 36080 被占用的话,把冒号左边的数字换一个,隧道里的本地端口也跟着改。勾上「创建项目后立即启动」,几秒钟面板就起来了。

三、登录面板、新建实例

浏览器打开 NAS 地址加 36080 端口(局域网里先这样验证),用 admin 和你刚才设的密码登录。点左下角「管理」→「新建实例」,应用类型选「微信」,名字随便起(比如「工作号」),点创建。

第一次新建实例要拉一个约 3 GB 的实例镜像。飞牛上如果卡在「创建容器失败……timeout」,先到 Docker 的「镜像」里手动拉一次 gloridust/wechat-on-cloud:latest,再回面板点「创建并启动」就好。

实例起来后点「管理」→「下载安装」,面板会从腾讯官方下载 Linux 版微信并装好(约 200 MB,带进度条)。装完点「进入实例」,用手机微信扫码登录,之后就能在网页里收发消息、拖文件进去发送;中文直接用你本地的输入法打。

想挂 QQ 或常驻浏览器,新建实例时应用类型选「QQ」或「Chromium」即可,Chromium 不用下载,创建完就能用。

四、在外面打开

在外面用隧道给的地址打开(选了 HTTP / HTTPS 的话会先要你输 PassNAT 的网页访问用户名和密码),再输面板的账号密码,就能看到自己的实例。手机上用 Safari 或 Chrome 打开后「添加到主屏幕」,它就像一个独立 App。

几点说明

先用小号试。 云微用的是官方原版客户端,但它运行在服务器环境里,微信有可能把它识别成新设备,个别账号会被要求重新验证或强制下线。第一次用建议先拿不常用的号试几天,稳定了再挂主号。

聊天记录在哪。 每个实例的数据在它自己的数据卷里,登录以后的聊天记录和收到的文件都存在 NAS 上,重启、升级实例都不会丢;删除实例时默认也保留数据卷,可以选彻底清除。

吃多少资源。 面板本身很轻,每个已登录的微信实例空闲时大约 0.6 GB 内存,有人在网页里操作时 1–1.5 GB。8 GB 内存的 NAS 挂两三个实例比较从容,开多了先看内存余量。

升级。 面板里有「一键升级全部实例」,会拉新镜像重建、保留聊天记录;面板自己升级就在 Docker 里重新拉取镜像、重启项目。