Skip to content
扫码开始移动端阅读

飞牛nas的MoviePilot使用企业微信通知及交互

1656
需要≈
8.28
分钟
NAS
其他

适用场景

本文适合希望通过企业微信接收 MoviePilot 通知、进行交互控制的用户,支持远程指令、消息推送等功能。

📷 成功界面

🐳 1. 微信代理容器部署

首先,部署企业微信消息代理容器,用于接收和转发来自企业微信的消息。

选择镜像说明:ddsderek/wxchat 是一个轻量级、维护活跃、支持企业微信 API 消息转发的开源镜像,内置多种安全校验机制,适用于 MoviePilot 的 webhook 通信。

替代方案:

  • qianlongo/wechat-work-proxy,支持更细粒度的路由控制,但社区支持度较低。
  • 自行开发企业微信代理,灵活性高,但开发成本较大。

综上,ddsderek/wxchat 提供了较好的开箱即用体验,适合快速部署和与 MoviePilot 集成。

dockerfile
version: '3.3'
services:
  wxchat:
    container_name: wxchat
    restart: always
    ports:
      - '8080:80' # 8080 为示例端口,请根据需求开放服务器安全组
    image: 'ddsderek/wxchat:latest'

注意

确保服务器的 8080 端口已在云服务安全组中放行。


🌐 2. 配置内网穿透(Frp)

2.0 Frp 简介

Frp 是一个专为内网穿透设计的高性能反向代理应用,允许部署在内网中的服务通过公网服务器暴露给外网用户访问。

为何需要 Frp?

  • 企业微信的推送机制:企业微信服务器必须能够主动访问到你的 MoviePilot 接口,而大多数情况下 MoviePilot 部署在内网或无公网 IP 的环境下,外部网络无法直接访问。
  • 解决方案:通过 Frp 将内网服务映射到公网,外网的企业微信服务器即可通过公网地址与本地 MoviePilot 服务通信。

企业微信需要访问你本地或内网的 MoviePilot 服务,需使用内网穿透工具 Frp 实现。

2.1 Frps - 服务端配置

ini
# frps.toml
bindPort = 8633
kcpBindPort = 8633
token = "你的FrpToken"
  • bindPort: TCP 端口,示例为 8633
  • kcpBindPort: UDP 端口,可与 bindPort 相同
  • token: 强烈建议配置,增强 frp 安全性

2.2 Frpc - 客户端配置

ini
# frpc.toml
[common]
server_addr = "你的服务器公网IP"
server_port = 8633
token = "你的FrpToken"

[MP1]
type = "tcp"
local_ip = "192.168.xx.xx" # MoviePilot 内网地址
local_port = 3000 # MoviePilot 启动端口
remote_port = 6668 # 暴露到公网的端口

配置完成后,启动 frps 和 frpc 即可完成内网穿透。


🏢 3. 企业微信自建应用配置

权限配置建议

在创建企业微信自建应用时,建议开启以下权限以确保 MoviePilot 通知与交互功能正常使用:

  1. 消息推送与接收:允许接收并主动推送消息,确保能够接收指令和状态更新。
  2. 应用消息读写:使 MoviePilot 能够向指定用户或群组发送消息,支持 /status/restart 等指令的交互。
  3. 通讯录读取权限(可选):如需根据用户 ID 或部门 ID 发送个性化消息,可开启通讯录读取权限。

3.1 注册企业微信并创建应用

  1. 下载并登录 企业微信 App
  2. 进入 企业微信后台 后扫码登录
  3. 进入「应用管理」 > 创建应用
  4. 填写基本信息,推荐选择最上级部门,避免后续权限问题
  5. 上传应用图标,推荐使用 MoviePilot 官方 Logo (150×150)

3.2 消息接收服务器配置

  1. 进入「应用管理」 > 你的自建应用 > 「接收消息服务器」

  2. 配置 URL 和 Token:

    bash
    http://你的域名/api/v1/message/?token=你的MP API令牌
  3. 获取 MoviePilot API Token:

    • 打开 MP 后台 > 设定 > 系统 > API 令牌
  4. 生成并填写 TokenEncodingAESKey

    • 点击随机生成,复制保存,避免手动输入造成错误
  5. 可信任 IP

    • 填写你服务器的公网 IP 地址

⚙️ 4. MoviePilot 通知渠道配置

  1. 打开 MoviePilot
  2. 左侧栏 > 设定 > 通知 > +
  3. 选择「微信
  4. 填写以下信息:
配置项获取方式
企业ID企业信息页面 最下方即可查看
应用 AgentId应用管理 > 自建应用 > AgentId
应用 Secret同上页面下方,点击查看后复制
代理地址例如 http://你的代理域名:8080/
Token企业微信自建应用时生成的 Token
EncodingAESKey企业微信自建应用时生成的 EncodingAESKey

重点

  • 保证填写内容无多余空格和换行符
  • Server IP 和端口务必与 Frp 保持一致

📝 5. 额外建议

  • 推荐使用 HTTPS,保障安全性
  • 企业微信需保持机器人应用在线状态
  • 可结合 Jenkins、Docker 实现全自动部署

📌 6. 常见问题 FAQ

Q5: 如何启用企业微信消息加密模式?

A: 为了提升消息安全性,推荐开启企业微信的加密模式,具体步骤如下:

  1. 登录企业微信后台,进入「应用管理」 > 你的自建应用 > 「接收消息服务器」。
  2. 在消息加密方式选择「安全模式(推荐)」。
  3. 随机生成并填写 TokenEncodingAESKey,同时同步到 MoviePilot 和 wxchat 配置中,确保一致性。
  4. 确保使用 HTTPS 通信,提升安全性。

启用后,所有消息将以 AES 加密传输,降低数据泄露风险。

Q1: 服务器 IP、Token 是否暴露风险?

A: 是,建议使用防火墙限制 IP 访问,Token 定期更换。

Q2: frp 配置完成后,公网地址无法访问?

A: 请检查:

  • frps 服务端是否启动成功
  • 服务器安全组端口是否放行
  • frpc 客户端配置 IP、端口是否正确

Q3: 企业微信收不到消息?

A: 请检查:

  • 企业微信应用是否启用
  • 消息接收服务器 URL 是否正确
  • EncodingAESKey、Token 是否填写无误

Q4: 如何定位问题?

A:请检查

  • 可以通过docker 容器里日志来查看错误信息
  • 检查参数中是否包含空格等非法字符

上次更新: