> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langbot.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 个人微信（WeChatPadPro）

> 通过 WeChatPad 将个人微信接入 LangBot，运行大模型驱动的 AI 机器人。

> 异地警告，没有 Socks5 代理或者本地服务器慎用！！！！！！

**本教程仅说明 Docker 部署教程，如果可以尽量将 WeChatPadPro 部署到同一网络**

## 拉取 WeChatPad-Docker

1. 原项目

```bash theme={null}
git clone https://github.com/WeChatPadPro/WeChatPadPro.git  
cd WeChatPadPro/deploy
```

2. 简化

```bash theme={null}
git clone https://github.com/fdc310/WeChatPad-Docker.git  
```

### 一、如果不更改 Redis、MySQL、AdminKey 和相关端口及其网络的情况下可以直接运行

```bash theme={null}
docker compose up -d
```

* 查看日志是否启动成功

```bash theme={null}
# 简化
docker logs wechatpad
# or 原版
docker logs wechatpadpro
```

启动成功实例如下输出：

查看并记录自己的日志生成的 `adminKey`，后面登录会用到。

```bash theme={null}
版本号: v20240818.00
======== ADMIN_KEY === adminKey ========
connect MySQL success
auto create MySQL tables success
connect Redis success
GET Connection locfree Failed by ee4c9a06-cf5e-4451-9e81-5290d0217625  abandon the conntection get  !
updateApiVersion success

启动GIN服务成功！ http://0.0.0.0:8849
```

* 然后在本机或者局域网下访问 `http://serveip:9090` 进入 Swagger 即可。（这是简化版 docker-compose 中映射端口号）
* 然后在本机或者局域网下访问 `http://serveip:1239` 进入 Swagger 即可。（这是原版 docker-compose 中映射端口号）

### 二、如果要更改（简化版）docker-compose 网络与 langbot 在同一个 Docker 网络中，以及数据库密码和端口更改

参考修改 YAML 文件，以下是 WeChatPad 的 YAML 文件，容器连接方式可以参考 [文档](/zh/workshop/network-details.html)。

* 如需修改数据库账号密码等，有能力的自行修改，此版本修改需要同时修改项目目录下 `app/assets/setting.json` 中的用户密码相关

```yaml theme={null}
version: "3.3"
services:
  mysql_wx:
    container_name: mysql_wxpad
    image: mysql:8.0
    ports:
      - "3306:3306"
    restart: always
    logging:
      driver: "json-file"
      options:
        max-size: "5g"
    environment:
      MYSQL_ROOT_PASSWORD: test_mysql
      MYSQL_ROOT_HOST: '%'
      MYSQL_DATABASE: wechatpadpro
    volumes:
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/config:/etc/mysql/conf.d"
    networks:
      - langbot-network
    healthcheck:
      test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
      interval: 5s
      timeout: 3s
      retries: 5

  redis_wx:
    image: redis:alpine
    container_name: redis_wxpad
    restart: unless-stopped
    command: redis-server --requirepass test_redis
    environment:
      - REDIS_PASSWORD=test_redis
    volumes:
      - ./redis/data:/data
    ports:
      - "6381:6379"
    networks:
      - langbot-network
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "test_redis", "ping"]
      interval: 5s
      timeout: 3s
      retries: 5

  wechatpad:
    container_name: wechatpad
    image: alpine:latest
    ports:
      - "9090:8849"
    restart: always
    depends_on:
      mysql_wx:
        condition: service_healthy
      redis_wx:
        condition: service_healthy
    links:
      - mysql_wx
      - redis_wx
    volumes:
      - ./app:/app # 映射数据目录，宿主机:容器
    working_dir: /app
    command: [ "/bin/sh", "-c", "chmod +x ./stay && ./stay" ]
    logging:
      driver: "json-file"
      options:
        max-size: "5g"
    environment:
      - TZ=Asia/Shanghai
      - LANG=zh_CN.UTF-8
      - LC_ALL=zh_CN.UTF-8
    networks:
      - langbot-network
networks:
  langbot-network:
    external: true
```

### 三、原版 docker-compose 需要修改与 langbot 同一 Docker 网络中，以及数据库用户密码，都那口映射修改可参考以下：

* 如需修改数据库账号密码等，有能力的自行修改，此版本修改需要同时修改项目目录下 `deploy/.env` 中的用户密码相关

```yaml theme={null}
version: '3.8'

services:
  wechatpadpro:
    image: registry.cn-hangzhou.aliyuncs.com/wechatpad/wechatpadpro:v0.11
    container_name: wechatpadpro
    restart: always
    ports:
      - "1239:1239"
    volumes:
      - wechatpadpro_data:/app/data
      - wechatpadpro_logs:/app/logs
    environment:
      - TZ=Asia/Shanghai
      - DEBUG=false
      - ADMIN_KEY=12345
      - HOST=0.0.0.0
      - PORT=1239
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_DB=1
      - REDIS_PASS=123456
      - MYSQL_CONNECT_STR=wechatpadpro:123456@tcp(mysql:3306)/wechatpadpro?charset=utf8mb4&parseTime=true&loc=Local
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy
    networks:
      - langbot-network

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/wechatpad/wechatpadpro-redis:v0.1
    container_name: wechatpadpro_redis
    restart: always
    command: redis-server --requirepass 123456
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 3
    networks:
      - langbot-network

  mysql:
    image: registry.cn-hangzhou.aliyuncs.com/wechatpad/wechatpadpro-mysql:v0.11
    container_name: wechatpadpro_mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=wechatpadpro
      - MYSQL_USER=wechatpadpro
      - MYSQL_PASSWORD=123456
      - TZ=Asia/Shanghai
    volumes:
      - mysql_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "wechatpadpro", "-p123456"]
      interval: 5s
      timeout: 3s
      retries: 3
    networks:
      - langbot-network

networks:
  langbot-network:
    driver: bridge

volumes:
  wechatpadpro_data:
  wechatpadpro_logs:
  redis_data:
  mysql_data: 
```

#### `.env` 环境变量说明

| 变量名                 | 说明        | 默认值    | 是否必填 |
| ------------------- | --------- | ------ | ---- |
| DEBUG               | 调试模式      | false  | 否    |
| ADMIN\_KEY          | 管理员密钥     | 12345  | 是    |
| PORT                | 服务端口      | 1239   | 否    |
| REDIS\_PASS         | Redis 密码  | 123456 | 是    |
| MYSQL\_CONNECT\_STR | MySQL 连接串 | 见配置文件  | 是    |

## 如果要手动部署

* 手动部署或者 Win 上使用 Docker 部署参考以下官方文档

请查看 [WeChatPadPro 文档](https://github.com/luolin-ai/WeChatPadPro)

## 登录微信

1. 成功启动 WeChatPadPro 后根据你的 serverip:port 访问 WeChatPadPro 的 Swagger\\
   <img src="https://mintcdn.com/langbot/OB26CZsqXqbSrW_A/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png?fit=max&auto=format&n=OB26CZsqXqbSrW_A&q=85&s=b3446f2558290abd0f820a34df962edb" alt="img.png" width="1616" height="879" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png" />

2. 填入 adminKey\\
   <img src="https://mintcdn.com/langbot/OB26CZsqXqbSrW_A/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png?fit=max&auto=format&n=OB26CZsqXqbSrW_A&q=85&s=b3446f2558290abd0f820a34df962edb" alt="img.png" width="1616" height="879" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-30-49.png" />

3. 获取 token\
   \*\* try it out `/admin/GanAuthKey1` 接口 body 中的 days 改为 365 即可\\
   <img src="https://mintcdn.com/langbot/OB26CZsqXqbSrW_A/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png?fit=max&auto=format&n=OB26CZsqXqbSrW_A&q=85&s=15892627aba85e2553bacfd75ec7e594" alt="img.png" width="1096" height="778" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-33-18.png" />

等待返回拿到里面的 token 回填入上面的 token\\

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=eb5b03c5f222cea73f812277db372dd9" alt="img.png" width="1488" height="689" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-36-41.png" />

5. 登录微信\
   \*\* try it out `/login/GetLoginQrCodeNew` 接口即可（和服务器是同市或者同省）\\
   <img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=fec3b7960413487d85a92fc2e646813a" alt="img.png" width="1111" height="768" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-37-40.png" />

\*\* 如果是云服务器，需要填入 Proxy\\

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/login2.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=2df57f3ae2c47785854f5f150a192784" alt="img.png" width="1389" height="903" data-path="images/zh/deploy/platforms/wechat/login2.png" />

\*\* 返回的参数中有登录二维码链接，打开扫码登录即可\\

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/login3.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=c653f5796fd96959b01b68822813a2b5" alt="img.png" width="1509" height="752" data-path="images/zh/deploy/platforms/wechat/login3.png" />

\*\* 手机登录后看是否有 iPad 在线，如果不在线就使用, 查看扫码状态\\

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/ipadlogin.jpg?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=e047c1a171fed99e6373ddc83bb589bd" alt="img.png" width="1080" height="493" data-path="images/zh/deploy/platforms/wechat/ipadlogin.jpg" />

> 没有在线的话是因为什么（这是我已经成功登录，扫码状态过期了）

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=f89572990e7b7cbdb9109205c9f13cef" alt="img.png" width="1250" height="873" data-path="images/zh/deploy/platforms/wechat/Snipaste_2025-06-09_22-41-05.png" />

6. 记录你的 adminkey、token、wx 地址和访问地址（wxid 可以不管）

## 在 langbot 的创建机器人中填写信息

* `wechatpad_key` 填写 adminKey
* `wechatpad_url` 填写 WeChatPadPro 的地址
* `wechatpad_ws` 填写 WeChatPadPro 的 ws 地址
* `wxid` 填写该登录账号的 wxid
* `wechatpad_token` 填写 WeChatPadPro 的 token

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/deploy/platforms/wechat/langbotset.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=de50327223b087dbf9ddd4e85b16be78" alt="img.png" width="1310" height="845" data-path="images/zh/deploy/platforms/wechat/langbotset.png" />

## 详细的 API 接口文档

如果有想要为该适配器做贡献，或者制作微信相关插件请查看 [WeChatPadPro API 文档](https://doc.apipost.net/docs/460ada21e884000?locale=zh-cn)\
里面有相关接口及其参数说明

## 常见问题

### 1. 服务无法启动

检查步骤：

```bash theme={null}
# 查看服务日志
docker-compose logs

# 查看具体服务日志
docker-compose logs wechatpadpro
docker-compose logs mysql
docker-compose logs redis
```

### 2. 数据持久化

数据默认保存在以下 Docker volumes 中：

* `wechatpadpro_data`：应用数据
* `wechatpadpro_logs`：应用日志
* `redis_data`：Redis 数据
* `mysql_data`：MySQL 数据

查看数据卷：

```bash theme={null}
docker volume ls | grep wechatpadpro
```

### 3. 服务重启

```bash theme={null}
# 重启所有服务
docker-compose restart

# 重启单个服务
docker-compose restart wechatpadpro
```

## 维护指南

### 日常维护

1. 查看服务状态：

```bash theme={null}
docker-compose ps
```

2. 查看服务日志：

```bash theme={null}
docker-compose logs -f --tail=100
```

3. 备份数据：

```bash theme={null}
# 备份 MySQL 数据
docker exec wechatpadpro_mysql mysqldump -u root -p123456 wechatpadpro > backup.sql
```

### 官方版本升级

1. 拉取最新镜像：

```bash theme={null}
docker-compose pull
```

2. 重新部署服务：

```bash theme={null}
docker-compose up -d
```

### 简化版升级

* 需要重新拉取 GitHub

```bash theme={null}
git clone 
cd WeCahtPad_Docker
docker compose down
docker compose up -d
```

## 安全建议

1. 修改默认密码
   * 修改 `ADMIN_KEY`
   * 修改 MySQL 密码
   * 修改 Redis 密码

2. 限制端口访问
   * 只对必要端口开放外部访问
   * 使用防火墙限制 IP 访问

3. 定期备份
   * 备份 MySQL 数据
   * 备份应用数据
