在上一期中,我们搭建好了 NASTool, 可以在 NASTool 中开心的订阅搜索下载一条龙,这期我们更进一步,实现 NASTool 与微信的交互。让我们在微信上远程发指令给家中的 NASTool,实现消息推送和远程下载。

首先,我们看到 NASTool > 消息通知新增消息通知这边,看到微信主要需要6个配置项。

10-weixin-02

我们下面来配置这个6个选项。

准备工作

搭建 NASTool

前面的文章/视频中有完整的教程,可以参考 -> 群晖安装 NASTool 实现影音半自动化

注册企业微信

注册地址: work.weixin.qq.com.

输入相关信息,手机号获取验证码,同时用微信扫码,按提示操作就可以注册成功。

注册成功后,默认自己还没有加入组织(奇怪的设定),需要到“我的企业”中邀请自己加入。然后需要下载企业微信,在企业微信中确认加入组织。

这样企业微信就注册好了。

购买云服务器

云服务器选择有很多,如

各家云对于新用户也有一些优惠,这里就不做推荐。需要注意的是,国内的都需要实名认证。账户的注册就不多说,打开网站根据引导就能完成了。

然后就可以购买云服务器了,如果你是新用户,可以去选择一些优惠的服务器。我这里没新账号,我就做个常规购买的展示,分享一下选择配置时需要注意的几点。

如下图:

  1. 付费模式:长期用的话,一般包年包月比较划算;
  2. 地区:可以选择离自己比较近的,延迟会低点;
  3. 实例类型:按需选择CPU和内存大小,如果只是做代理,搭建内网穿透,最小的(1核512MB内存)就够了;
  4. 镜像:不懂的话,选CentOS7.9,好找资料==;

  1. 存储:按需选择,如果只是做代理,最小即可;

  1. 网络:选择默认设置就可以;
  2. 公网IP:这一定得勾上IPv4; 计费模式的选择取决于你流量大小。实际体验下来,如果流量不大,选择“按使用流量”计费,价格更优惠,一个月流量也就几毛钱。带宽按需选择;
  3. 安全组:可以勾选上22端口,方便一会SSH连接;一会后面设置的时候,还会涉及到安全组的修改;

  1. 登录凭证:如果你会设置SSH密钥,推荐使用密钥;这里为了演示方便,我先使用密码,选择root,设置好登陆密码,这个密码就会一会ssh登陆会用到,别忘记了!
  2. 实例名称:随意,可不修改;

后面点下一步,下一步,选择时长,付钱就好了。 最后在“云服务器 ECS”中就可以看到我们购买的机器,在IP地址那里,可以看到公网的IPv4地址已经分配好了。

等服务器初始化好,我们就可以SSH连接了。

到这里我们环境准备好了。我们继续配置。

配置前3个参数

进入企业微信,在我的企业 > 企业信息中,最下面可以看到企业ID, 这就是我们的第1个参数,企业ID

10-weixin-05

应用管理 > 自建创建应用,如下图:

10-weixin-03

logo,名字和介绍随便写,选择部门/成员把自己加进去。

10-weixin-04

创建成功后,点击打开应用,第2、3个参数,即应用ID应用Secret都有了。

10-weixin-06

应用Secret点击查看会提示发送到企业微信中, 点击发送,到企业微信App 中可以查看。

10-weixin-07

企业微信App中可以看到相关信息,查看即可获取。

10-weixin-08

10-weixin-09

这样前3个参数都有了。然而还不够。

NASTool 需要调用企业微信的 API,推送消息到企业微信,但由于企业微信有IP白名单的限制,我们需要有一个固定的公网IP去访问微信的API,这就需要我们搭建一个微信的API代理服务。

同时,如果想要完成交互,微信还需要向 NASTool 发送消息,这就需要让我们的 NASTool 在公网可以访问到,这就需要我们来搭建一个内网穿透服务。

接下来我们就来搭建这两个服务。

服务器安装

安装docker

可以参考官方的安装指导.

使用终端或着PuTTY软件连接到服务器上, 执行下面的命令。

# 先更新一下服务器
yum update -y

# 安装依赖
sudo yum install -y yum-utils

# 添加 docker 源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装 docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动 docker
sudo systemctl start docker

# 设置 docker 开机启动
sudo systemctl enable docker

这样我们的docker就安装好了。然后我们来启动服务。

启动服务

这里我用 docker-compose 来部署两个服务。分别将下面两个文件修改一下相关的参数后,放到服务器上的同一个文件夹下。

第一个文件 docker-compose.yaml, 这里我启动了两个服务,一个是微信代理wxapi,绑定的是9080端口,你可以修改成你想要的端口; 还有一个是 frp 服务端 frps, 网络模式直接使用的是host模式,这样不用再映射端口了。

version: '3'
services:
  wxapi:
    image: razeencheng/wxapiproxy:latest
    restart: always
    container_name: wxapi
    ports:
      - 9080:80
  frps:
    image: snowdreamtech/frps:0.46.0
    restart: always 
    container_name: frps
    network_mode: host
    volumes:
      - ./frps.ini:/etc/frp/frps.ini

第二文件是frps.ini, frp服务端的配置文件,放到上面的文件同一个文件夹里面即可。其中

  • bind_port: 客户端来连接的端口,可以不修改;
  • dashboard_port: 监控面板的访问端口,可以不修改;
  • dashboard_user,dashboard_pwd: 访问监控面板BasicAuth的用户名密码,建议修改;
  • token: 客户端连接鉴权用的,建议修改;
[common]
bind_port = 7000

# 开启面板
dashboard_port = 7500
dashboard_user = frpdash
dashboard_pwd = jr2ztqAEs3bdwKXdwN25

# token
token = 8wq5u36wYfvxBfbjKteo

两个文件都放在同一个文件夹后,在文件夹下执行

docker compose up -d

等待执行完成,docker ps 看一下状态,都正常(STATUS 中为UP)后,说明服务正常启动了。

安全组放行

如果你用的是国内的云,基本上自带了安全组,需要你到云服务器管理的页面上,找到安全组,修改安全组规则,将相关的端口放行。

需要放行下面这些端口:

  • 7000: frp 服务端口
  • 7500: frp 面板端口
  • 3003: nastool 访问端口
  • 5000: dsm 页面端口(可选,如果你想公网访问你的NAS)

如实例中的阿里云,就需要到“安全组”中去配置规则。

我们把相关的端口放行。

这样我们就可以从公网访问了。

微信代理可以访问了。 frp 面板也可以正常访问,输入配置中的用户(dashboard_user),密码(dashboard_pwd)就可以进入了。

客户端搭建

接下来,我们安装客户端。

进入 NAS, 进入套件中间,搜索安装frpc,并安装启动。

启动后,将下面的文件修改后,粘贴进去。

[common]
# 服务端IP&端口
server_addr = 你服务器的IP
server_port = 7000

# Token
token = 8wq5u36wYfvxBfbjKteo

[nastool]
type = tcp
local_ip = 127.0.0.1
local_port = 3003
remote_port = 3003

其中:

  • server_addr: 服务端的IP地址,修改成服务器的IP地址;
  • server_port: 服务端端口,与服务端的 bind_port 一样,如这里的 7000;
  • token: 鉴权 Token, 与服务端的token一致。
  • type: 代理类型,这里将本地的tcp端口代理到服务端;
  • local_ip,local_port: 本地的IP和端口,即需要代理的本地的服务的IP,端口;
  • remote_port: 代理到云端的端口,云端访问就用这个端口;不一定要与本地端口一致,只是一致好记一点;

如果你还想把 DSM 也穿透出去,可以加上如下内容,就把本地的NAS服务代理出去了。

[nas]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 5000

粘贴好后保存。

保存后,就生效了。在 frp 的面板中可以看到相关信息。

这样我们就可以用 公网IP+端口 访问这 DSM 和 NASTool 页面了。

另外3个参数配置

到企业微信网页,应用管理中进入刚刚创建的应用,看到“接收消息”这一栏,点击“设置API接收”。

随机获取下面两个值。

再回到 NASTool 设置,将上面的 TokenEncodingAESKey 填进去。

消息推送代理 中填写我们搭建的代理服务的地址。

然后直接“确认”保存。

访问一下 NASTool 微信交互的地址(http://ip:port/wechat)。如果出现如下的内容,说明我们的 NASTool 交互接口可以正常访问了。

回到企业微信,应用中的设置“API接收消息”,填入地址。然后保存生效。

再到应用中,设置企业可信IP, 点击配置,填入我们的服务器IP。

最后,我们再回到 NASTool 中,此时点击测试,就能成功通过了。

这时候我们就能在企业微信中接收到这条测试消息了。

这样我们的微信交互的流程就设置完成了。

微信菜单配置

进入企业微信,应用中,选择“自定义菜单”。

按照官方的说明添加成如下的样子

其中,主菜单就是“下载”,“同步”,“管理”。 菜单内容为“发送消息”, 消息的内容随意。

在微信中交互

在企业微信后台,“我的企业 > 微信插件 > 邀请关注” 中,用微信扫描这个二维码就可以了。

关注之后,在微信中就可以看到了。

这样,我们的微信交换就配置完成了,尽情使用吧。