0%

部署 QQ AI聊天机器人

目的:部署一个 QQ AI聊天机器人。

用到两个开源项目,NapCatQQ 和 Koishi。

NapCatQQ 实现了QQ登录,能够通过程序收发QQ消息,提供了onebot协议支持。
Koishi 是个机器人框架,具备丰富插件系统。

24年9月部署到国内服务器记录

注意docker hub加速域名用x.com隐藏代替了,需要请自行搭建,参考:Cloudflare反代docker hub

1
2
docker pull x.com/mlikiowa/napcat-docker:latest
docker pull x.com/koishijs/koishi:latest

启动 koishi 容器,映射容器5140到888端口

提前创建好/root/koishi_data目录。

1
docker run -d -p 999:5140 -v /root/koishi_data:/koishi --name koishi --mac-address=02:42:ac:11:00:98 koishijs/koishi:latest

查看容器运行输出内容
docker logs koishi

浏览器访问999端口,通过koishi web控制台进行配置。
在 插件配置-market,配置插件市场和插件npm源。
依赖管理全部更新。
配置auth插件,设置管理员密码。
安装插件:

1
2
3
4
5
chatluna
chatluna-qwen-adapter
adapter-onebot
chatluna-openai-like-adapter
api-handler

启动 napcat 容器,把容器6099端口映射到本机8087端口

1
2
3
4
5
6
7
8
9
10
docker run -d \
-e ACCOUNT="机器人BOTQQ" \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-p 8087:6099 \
-p 8089:3000 \
--name napcat \
--restart=always \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest

查看napcat输出内容,扫码登录。

1
docker logs napcat

打开 http://服务器IP:8087/webui/#/webui 使用token登录。(启动后可在启动日志中看到形如 [WebUi] Login Token is xxxx 的token信息)
在网络配置,配置koishi和http。

参照 https://napneko.github.io/use/integration#koishi 连接到koishi。

可通过IP:8090来调用 https://napneko.github.io/zh-CN/develop/compatibility/api#napcat-api 的API

docker常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
列出正在运行的容器
docker ps

停止容器
docker stop 容器名

删除容器
docker rm 容器名

查看容器输出log
docker logs 容器名

进入docker容器shell
docker exec -it koishi /bin/sh

–24.9.2更新

wechat在线不稳定,尝试另一种方案:

1
2
3
docker pull x.com/hmllsnow/escape-wechat

docker run -d -p 7777:443 -p 1234:8080 -e API_KEY="yourapikey" -e LOGIN_PWD="your_login_password" --name escape-wechat-container hmllsnow/escape-wechat

访问 http://IP:1234/ 完成配置。
注意修改配置在最底部点击保存配置,然后要在顶部重启一下,配置才生效。

NapCatQQ

https://napneko.github.io/zh-CN/guide/getting-started

选择通过Linux一键脚本安装。

安装过程会提示缺少依赖项,可以先安装一下依赖,避免系统中没有:

1
2
3
apt install -y libopengl0 libnss3-dev

apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev

安装完成后bash脚本输出的内容:

1
2
3
安装完成,请输入 xvfb-run qq --no-sandbox 命令启动。
保持后台运行 请输入 nohup xvfb-run qq --no-sandbox > nul 2> nul &
后台快速登录 请输入 nohup xvfb-run qq --no-sandbox -q QQ号码 > nul 2> nul &

运行后台快速登录命令即可,如果需要停止,可执行 pkill xvfb-run && pkill qq

根据bash输出内容,打开web控制台输入密码登录,输入密码后会出现QQ登录二维码,扫码登录后自动打开功能设置界面。

我当时安装的版本是V1.7.4

Koishi

https://koishi.chat/zh-CN/manual/starter/linux.html

cli启动 https://koishi.chat/zh-CN/manual/launcher/cli.html

启动后配置nginx代理,外网访问,我配置的8088端口。即:8088转发本地5140

nginx伪静态配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  location / {
# 这里的 5140 对应 Koishi 实例的端口
proxy_pass http://127.0.0.1:5140;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://127.0.0.1:5140;
}
location ~ .*\.(js|css)?$
{
proxy_pass http://127.0.0.1:5140;
}

访问 http://ip:8088

在插件配置-auth里设置账号密码并开启插件。

根据:
https://napneko.github.io/zh-CN/guide/integration#%E5%AF%B9%E6%8E%A5%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6
在插件市场安装 adapter-onebot 插件进行配置。

然后通过插件系统安装对应AI插件,设置token后即可使用。

微信可以用 adapter-wechat4u 扩展,注意手机微信必须保持在线,手机如果切换微信账号,则其他设备也都会下线。
可以用移动云手机或闲置手机。

Mark:

koushi插件发布:

1
2
1. 根目录执行 npm run build
2. 再在根目录执行 npm run pub -- --debug

欢迎关注我的其它发布渠道