使用 Docker 轻松运行 EFB (EhForwarderBot)

什么是 EFB?为什么要用 Docker?

EFB (EhForwarderBot) 是一个强大的工具,可以帮你把微信消息转发到 Telegram 等其他聊天平台,也可以让你在 Telegram 里直接回复微信消息。简单来说,就是让你在一个地方管理多个聊天工具的消息。

Docker 又是什么呢?你可以把它想象成一个“魔法集装箱”。我们把 EFB 和它运行需要的所有东西都打包到这个集装箱里。这样,无论你的服务器是什么环境,只要装上 Docker,就能轻松运行 EFB,省去了很多复杂的安装和配置步骤。

这篇教程会教你如何使用 Docker 来运行 EFB。

背景小故事:之前我用的微信网页版登录方式 (uos 补丁) 失效了,而且账号还收到了警告,所以我切换到了一个叫做 comwechat 的新方案。下面会介绍这两种方案的区别。

微信接入方案:comwechat vs wechat web

EFB 连接微信主要有两种方式,你需要根据自己的情况选择一种:

  1. wechat web (微信网页版)

    • 优点:占用资源少,对服务器要求低,小内存 VPS 也能跑。
    • 缺点:功能相对较少,而且只有部分老微信账号(大约 2017 年前注册)才能登录网页版(我的账号就不行了 O.O)。你需要自己测试一下你的账号是否还能登录 wx.qq.com
    • 原理:模拟浏览器登录微信网页版。
  2. comwechat

    • 优点:功能更全,支持发送高清图片和 Telegram 贴纸。
    • 缺点:占用资源较多(内存建议 2GB 以上),因为它背后运行了一个模拟的 Windows 微信客户端环境。
    • 原理:基于一个开源项目,模拟了 Windows 微信客户端。

主要功能区别:

功能wechat web (网页版)comwechat (模拟客户端)
查看撤回消息✅ 支持❌ 不支持
回复消息样式普通文本样式部分支持原生样式
发送 Telegram 贴纸可能会被压缩✅ 支持
发送高清图片大图会被压缩✅ 支持

选择建议:

  • 如果你的微信账号还能登录网页版,并且对资源占用比较敏感,可以选择 wechat web
  • 如果你的账号无法登录网页版,或者你需要更完整的功能(如发送高清图、贴纸),并且服务器资源充足(建议 2GB 内存以上),请选择 comwechat

第一步:安装 Docker

如果你的服务器上还没有安装 Docker,需要先安装它。Docker 是我们运行 EFB 的基础环境。

打开服务器的终端(命令行界面),复制并运行以下命令:

# 这个命令会下载 Docker 的官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 这个命令会执行脚本来安装 Docker
sudo sh get-docker.sh
# 安装完成后,删除下载的脚本(可选)
rm get-docker.sh

提示sudo 表示需要管理员权限来执行安装。根据系统提示,可能需要输入你的服务器密码。

第二步:下载 EFB 配置模板

为了方便大家使用,我已经准备好了一份包含常用配置的模板。你只需要把它下载到你的服务器上。

继续在终端里运行:

# 这个命令会从 GitHub 下载配置模板,并存放到名为 ehforwarderbot 的文件夹里
git clone https://github.com/jiz4oh/ehforwarderbot.git ehforwarderbot

下载下来的 ehforwarderbot 文件夹里大概是这样的结构(你暂时不需要完全弄懂每个文件的作用):

.
├── Dockerfile                  # Docker 构建镜像的说明书 (一般不用管)
├── README.md                   # 项目说明文件
├── docker-compose.web.yaml     # 用于启动 wechat web 版本的配置文件
├── docker-compose.yaml         # 用于启动 comwechat 版本的配置文件
├── entrypoint.sh               # Docker 容器启动时运行的脚本 (一般不用管)
├── profiles/                   # 核心配置文件夹!存放不同账号的配置
│   ├── comwechat/              # 第一个 comwechat 账号的配置
│   │   ├── ... (一些中间件配置,可以先忽略)
│   │   ├── blueset.telegram/
│   │   │   └── config.yaml     # !! Telegram 配置,需要修改 !!
│   │   ├── config.yaml         # EFB 主配置 (一般不用改)
│   │   └── honus.comwechat/
│   │       └── config.yaml     # comwechat 配置 (一般不用改)
│   ├── comwechat2/             # 如果你有第二个微信账号想用 comwechat,可以复制 comwechat 文件夹并改名
│   │   └── ...
│   └── default/                # wechat web 版本的配置 (网页版只需这一个)
│       ├── blueset.telegram/
│       │   └── config.yaml     # !! Telegram 配置,需要修改 !!
│       ├── blueset.wechat/
│       │   └── config.yaml     # 微信网页版配置 (可选修改)
│       └── config.yaml         # EFB 主配置 (一般不用改)
└── run2.py                     # (comwechat 辅助脚本,一般不用管)

关键点:你需要关注的是 profiles 文件夹里的配置,特别是 blueset.telegram/config.yaml 文件。

第三步:修改你的专属配置

现在,我们需要修改一些配置,主要是告诉 EFB 如何连接你的 Telegram 账号。

  1. 进入配置目录

    cd ehforwarderbot
  2. 修改 Telegram 配置

    • 如果你选择 comwechat 方案:你需要修改 profiles/comwechat/blueset.telegram/config.yaml 文件。

    • 如果你选择 wechat web 方案:你需要修改 profiles/default/blueset.telegram/config.yaml 文件。

      使用你熟悉的编辑器(如 nanovim)打开对应的 config.yaml 文件。例如,使用 nano 编辑 comwechat 的 Telegram 配置:

      nano profiles/comwechat/blueset.telegram/config.yaml

      你需要修改文件里的 tokenadmins 两个地方:

    • token: 填入你从 @BotFather 那里申请到的 Telegram Bot Token。

    • admins: 填入你的 Telegram User ID (纯数字)。你可以发 /getid 给 @userinfobot 来获取。

      修改完成后,保存并关闭文件(nano 编辑器中按 Ctrl+X,然后按 Y,再按 Enter)。

  3. (可选) 修改微信配置

    • 如果你使用 wechat web 方案,可以按需修改 profiles/default/blueset.wechat/config.yaml 文件中的一些选项,但通常默认配置就可以工作。
    • 如果你使用 comwechat 方案,通常不需要修改 profiles/comwechat/honus.comwechat/config.yaml

第四步:启动 EFB!

配置完成!现在可以启动 EFB 了。请根据你选择的方案运行对应的命令:

如果你选择 comwechat 方案:

# 确保你当前在 ehforwarderbot 文件夹内
# 这个命令会根据 docker-compose.yaml 文件在后台启动 EFB
docker compose up -d

如果你选择 wechat web 方案:

# 确保你当前在 ehforwarderbot 文件夹内
# 这个命令会根据 docker-compose.web.yaml 文件在后台启动 EFB
# 注意这里用 -f 指定了不同的配置文件
docker compose -f ./docker-compose.web.yaml up -d

提示up -d 的意思是“启动并在后台运行”。

首次启动:登录微信

  • **comwechat**:启动后,你需要查看容器日志来扫码登录。运行 docker compose logs -f,你会看到一个二维码链接或二维码图片(取决于你的终端支持情况)。用手机微信扫描该二维码进行登录。登录成功后按 Ctrl+C 退出日志查看。
  • **wechat web**:同样运行 docker compose -f ./docker-compose.web.yaml logs -f 查看日志,扫描日志中出现的二维码登录。

登录成功后,EFB 就会开始工作了!你的 Telegram Bot 应该会给你发送消息,并且微信消息也会开始转发过来。

后续管理

  • 查看日志
    • comwechat: docker compose logs -f
    • wechat web: docker compose -f ./docker-compose.web.yaml logs -f
  • 停止 EFB
    • comwechat: docker compose down
    • wechat web: docker compose -f ./docker-compose.web.yaml down
  • 重启 EFB
    • comwechat: docker compose restart
    • wechat web: docker compose -f ./docker-compose.web.yaml restart
  • 更新 EFB 镜像和配置
    1. 进入 ehforwarderbot 目录。
    2. git pull # 更新配置模板
    3. docker compose pulldocker compose -f ./docker-compose.web.yaml pull # 拉取最新的 Docker 镜像
    4. docker compose downdocker compose -f ./docker-compose.web.yaml down # 停止旧容器
    5. docker compose up -ddocker compose -f ./docker-compose.web.yaml up -d # 使用新镜像和配置启动

现在,你应该可以通过 Docker 顺利运行 EFB 了!