【NapCatQQ】Linux/群晖搭建NapCatQQDocker版对接第三方框架教程
前言
NapCatQQ 是基于 PC NTQQ 本体实现一套无头 Bot 框架。大致意思就是去除了界面使整体更小巧。最主要的是能适配多种的bot协议,也支持多种部署的方式,例如windows和linux等架构的系统平台。这次教程主要讲的是NapCatQQDocker版本的安装,linux服务器和群晖的Docker搭建,以及对接bncr和autman第三方框架,当然也可以对接Nonebot和Koishi等开源的框架(方法大同小异),但是目前NapCatQQ还并不支持全部的Onebot规范接口,所以有的功能还是不能实现。
NapCatQQ介绍
-
不需要图形环境,Linux表现优异,与现有Hook框架有着本质区别,在性能与内存占用方面远远优于基于Hook的框架。
-
配置简单,支持浏览器远程进入进行配置,简单轻松即可完成配置。
-
NTQQ功能适配快速,更新持续跟进QQ最新版。
-
如果你需要有界面的NTQQ方便你查看消息等操作,可以参考下面的NTQQDocker版本。
-
官方Docker版本项目地址:https://github.com/NapNeko/NapCat-Docker
-
官方变量(不懂不要强求):https://github.com/NapNeko/NapCat-Docker/blob/main/entrypoint.sh
开始前准备
- 因为此方法是Docker版本的部署,由于一些特殊原因,不能拉取Docker镜像的话需要参考下面的文章,优先部署好代理,方便后续的拉取镜像操作
官方拉取镜像
ACCOUNT=
后面的机器人QQ就是你要设置当机器人
的QQ号
正向ws
通俗来讲就是搭建的NapCatQQ端会等别人来连接
,成功后就能互相通信并收发消息
。反向WS
通俗来讲就是搭建的NapCatQQ端会主动
寻找配置的第三方框架接口,来进行适配,成功后就能收发消息
。HTTP
也分正和反,跟上述WS一样,正
的就是等连接
,反
的就是主动去连接
,但是正
的只能发消息
,不能收消息
。而反
的则相反,可以收消息
,不能发消息
。- -p
6099:6099
这个就是NapCatQQ的web配置页面
,前面
可以改动
,后面的6099不要改动
。 - 可以根据官方提供的变量文档自行修改,建议多看官方的相关文档,变通的加减变量,达到你想要的效果。
正向WS
docker run -d \
-e ACCOUNT=机器人qq \
-e WS_ENABLE=true \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
--restart=always \
mlikiowa/napcat-docker:latest
反向WS
docker run -d \
-e ACCOUNT=机器人qq \
-e WSR_ENABLE=true \
-e WS_URLS='["ws://框架IP:端口/xxx"]' \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
--name napcat \
--restart=always \
mlikiowa/napcat-docker:latest
HTTP
docker run -d \
-e ACCOUNT=机器人qq \
-e HTTP_ENABLE=true \
-e HTTP_POST_ENABLE=true \
-e HTTP_URLS='["ws://框架IP:端口/xxx"]' \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-p 3000:3000 \
-p 6099:6099 \
--name napcat \
--restart=always \
mlikiowa/napcat-docker:latest
命令小小解读
ws相关命令解读
ACCOUNT
就是机器人的QQ号(需自己替换
)
MESSAGE_POST_FORMAT
就是消息上报的格式,下面的string就是CQ码(一般不动
)
WEBUI_TOKEN
就是后面webui进入后需要的token所谓的密钥,所以请务必修改一下WEBUI_TOKEN后面的lmu5.com
改成你自己的,否则会有安全隐患
!(需自己替换
)
WS_URLS
自然就是反向地址了(需自己替换
)
NAPCAT_GID和NAPCAT_UID
是官方后面增加的后台运行命令,官方默认有指定(不动
)
6099:6099
,这就是webui后续要用的端口,一般后面的6099不动,只动前面的,看你个人,请注意端口占用(需自己替换
)
/root/napcat/config:/app/napcat/config
这是挂载目录,你只需要改动/root/napcat
即可,如果你是centos或者Ubuntu等linux系统的,可以直接使用命令,如果你是群晖或者openwrt爱快等系统的请记得更换目录,具体根据你自己的目录来定,请注意,只改动/root/napcat
即可(根据系统不同可能有所变化
)
/root/napcat/.config:/app/.config/QQ
这是挂载目录,你只需要改动/root/napcat
即可,如果你是centos或者Ubuntu等linux系统的,可以直接使用命令,如果你是群晖或者openwrt爱快等系统的请记得更换目录,具体根据你自己的目录来定,请注意,只改动/root/napcat
即可(根据系统不同可能有所变化
)
/root/napcat/logs:/app/napcat/logs
这是挂载目录,你只需要改动/root/napcat即可,如果你是centos或者Ubuntu等linux系统的,可以直接使用命令,如果你是群晖或者openwrt爱快等系统的请记得更换目录,具体根据你自己的目录来定,请注意,只改动/root/napcat
即可(根据系统不同可能有所变化
)
name
这里代表的是容器名(可不改动
)
mac-address
这个是mac值,如果不懂且是首次,直接默认即可。如果是多个napcat机器人,请更改后面的数值02:42:ac:11:00:99
即可
变量命令的加减
可以访问官方文档进行加减进入官方文档 ,例如我们在拉取命令内加入TOKEN='这里填写token' (TOKEN的意思就是你的密钥Access token,一般来说都可以加上,不过也需要你对接的相关框架支持填写,如果支持填写Access token可以直接在拉取命令内直接加入你的自定义token,这里填写token记得换成你自定义的)大家可以参考下面的图,你如果熟悉相关命令可以自行添加,如果不熟悉也可不动,直接在webui内修改。
Linux-Docker版本NapCatQQ(autman)
我们使用下面的命令拉取镜像并创建容器,只需要改ws://
后面的IP和端口
即可(域名
也可) 因为已经固定
了MAC值
,如果你启用多个NapcatQQ
那需要更改
一下MAC值
,name
还有/root/
后的目录和端口号
,不一致就行,完毕后跳转下面的web端扫码登录QQ或配置继续操作!
请注意WEBUI_TOKEN='lmu5.com'
的lmu5.com
自行替换,这是你的webui的token
,很重要,所以请自己更改成自己的
!
docker run -d \
-e ACCOUNT=机器人QQ号 \
-e MESSAGE_POST_FORMAT='string' \
-e WEBUI_TOKEN='lmu5.com' \
-e WSR_ENABLE=true \
-e WS_URLS='["ws://autmanIP:端口/qq/receive"]' \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-p 6099:6099 \
-v /root/napcat/config:/app/napcat/config \
-v /root/napcat/.config:/app/.config/QQ \
-v /root/napcat/logs:/app/napcat/logs \
--name napcat \
--restart=always \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest
Linux-Docker版本NapCatQQ(Bncr)
我们使用下面的命令拉取镜像并创建容器,只需要改ws://
后面的IP和端口
即可(域名
也可) 因为已经固定
了MAC值
,如果你启用多个NapcatQQ
那需要更改
一下MAC值
,name
还有/root/
后的目录和端口号
,不一致就行,完毕后跳转下面的web端扫码登录QQ或配置继续操作!
请注意WEBUI_TOKEN='lmu5.com'
的lmu5.com
自行替换,这是你的webui的token
,很重要,所以请自己更改成自己的
!
docker run -d \
-e ACCOUNT=机器人QQ号 \
-e MESSAGE_POST_FORMAT='string' \
-e WEBUI_TOKEN='lmu5.com' \
-e WSR_ENABLE=true \
-e WS_URLS='["ws://无界IP:端口号/api/bot/qqws"]' \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-p 6099:6099 \
-v /root/napcat/config:/app/napcat/config \
-v /root/napcat/.config:/app/.config/QQ \
-v /root/napcat/logs:/app/napcat/logs \
--name napcat \
--restart=always \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest
群晖-Docker版本NapCatQQ(autman/Bncr通用)
-
首先我们去
File Startion
创建napcat
文件夹(下图只是演示
,你的可能文件夹名不一样
,反正在你需要放置
的文件夹内创建
) -
接着在
napcat
文件夹内再创建
两个文件夹:config
和.config
还有logs
-
我们去
docker套件
,左边的注册表
,右上角搜索
:mlikiowa/napcat-docker
,右键下载此映像
,直接应用
即可 -
下载完毕后我们去
容器
,点击新增
,选择刚才下载的napcat
镜像,设置容器名
,勾选自动重启启动
-
接下来会让你设置
端口号
,点击新增
,前面
的空格设置6099(可以自己自定义
),后面
的空格设置6099
(不要改动
) -
在
存储空间设置
里,点击添加文件夹
,依次选择前面
创建的文件夹路径
,将两个文件夹都添加
进入。添加完毕后后面还有一个空格
,我们对应,config
后面的空格对应:/app/napcat/config
,.config
后面我们对应/app/.config/QQ
,logs
后面填写/app/napcat/logs
如下图所示即可
-
环境变量
这里我们添加
下面的变量(看清楚图片内解释!!记住机器人QQ要替换
成你设置机器人的QQ号
,然后WS_URLS
后面空格要根据你对接哪种第三方框架就替换哪个!且记得IP和端口
要替换
上去!)
当然你也可以在下面的变量内加入一个WEBUI_TOKEN 后面自己设置的token即可,可以参考上面的linux安装-
Bncr:
ACCOUNT 机器人QQ MESSAGE_POST_FORMAT string WSR_ENABLE true WS_URLS ["ws://无界IP:端口号/api/bot/qqws"] NAPCAT_GID 0 NAPCAT_UID 0 mac-address 02:42:ac:11:00:99
-
autman:
当然你也可以在下面的变量内加入一个WEBUI_TOKEN 后面自己设置的token即可,可以参考上面的linux安装ACCOUNT 机器人QQ MESSAGE_POST_FORMAT string WSR_ENABLE true WS_URLS ["ws://autmanIP:端口/api/bot/qqws"] NAPCAT_GID 0 NAPCAT_UID 0 mac-address 02:42:ac:11:00:99
-
-
让你核对信息,完成即可,
完毕后跳转下面的web端扫码登录QQ或配置继续操作!
群晖SSH命令创建NapcatQQ容器
-
我们可以直接
ssh
连接你的群晖
,如果都不会连接我还是建议用手搓的办法来创建。首先我们创建文件夹
,这里请注意,由于每个人的群晖可能设置文件夹不一样,所以命令会有所修改!请根据你要放置
的位置来查看。我们先右键
你要放置的文件夹查看路径
-
记录上面的
路径
,在ssh终端,输入下面的命令,请注意替换/volume2/sata/
为你的路径
,完毕后你可以看到有两个文件夹了mkdir -p /volume2/sata/napcat/{.config,config,logs}
-
然后再输入下面的命令,注意替换
机器人QQ号
还有无界
/奥特曼的
IP和端口!!还有/volume2/sata/
替换路径
!!完毕后跳转下面的web端扫码登录QQ或配置继续操作!
-
autman:
docker run -d \ -e ACCOUNT=123456 \ -e MESSAGE_POST_FORMAT="string" \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://autmanIP:端口/qq/receive"]' \ -e NAPCAT_GID=0 \ -e NAPCAT_UID=0 \ -p 6099:6099 \ -v /volume2/sata/napcat/config:/app/napcat/config \ -v /volume2/sata/napcat/.config:/app/.config/QQ \ -v /volume2/sata/napcat/logs:/app/napcat/logs \ --name napcat \ --mac-address=02:42:ac:11:00:99 \ mlikiowa/napcat-docker:latest
-
无界:
docker run -d \ -e ACCOUNT=123456 \ -e MESSAGE_POST_FORMAT="string" \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://无界IP:端口号/api/bot/qqws"]' \ -e NAPCAT_GID=0 \ -e NAPCAT_UID=0 \ -p 6099:6099 \ -v /volume2/sata/napcat/config:/app/napcat/config \ -v /volume2/sata/napcat/.config:/app/.config/QQ \ -v /volume2/sata/napcat/logs:/app/napcat/logs \ --name napcat \ --mac-address=02:42:ac:11:00:99 \ mlikiowa/napcat-docker:latest
-
web端扫码登录QQ或配置
-
我们点击你
创建的文件夹
,找到napcat
--config
--webui.json
打开后有一个token
,记录下来。(当然也可以更改
成你自己记得住的,记得保存
)
-
我们打开
浏览器
,输入你的群晖IP
+Napcat设置的外部端口+webui
,就是创建容器设置的端口
第一个空格,如果你跟我一样那就默认
是6099
,接着输入你刚才记录下来的token
,填入点击login
-
就会出现下面页面,点击
QR Code
,就会出现二维码
(如果扫码失效
了,请刷新
页面,二维码就会更新
!!再扫码
即可) -
扫码出现后,你记得勾选
下次登录无需手机确认
-
登录完毕后就会出现此页面,你可以更改相应选项。(一般来说
不需要
了,除非你还有另外的需求。)
常见问题
- 调用接口报 404:目前没有支持全部的 OneBot 规范接口,请检查是否调用了不支持的接口。
- 如何使用 CQ 码?:将消息上报类型格式从消息段更改为 CQ 码即可。
- 二维码无法扫描:NapCat 会自动保存二维码到目录,可以手动打开图片扫描。如果无法访问本地目录(例如,纯命令行页面),可以将二维码解析的 URL 复制到二维码生成网站上重新生成二维码,然后再用手机 QQ 扫描。注意动作要快,因为二维码是会过期的!
- 语音、视频发送失败:这种情况需要你手动配置 ffmpeg 路径。ffmpeg 可以点击这里下载。将 ffmpeg 目录加入环境变量,如果仍未生效,可以修改 NapCat 启动脚本加入 FFMPEG_PATH 变量,指定到 ffmpeg 程序的完整路径。
- 出现error code v2:-1之类的提示:QQ 本身问题,正常现象,不影响使用。
- 登录提示出现“网络环境不稳定”“不在同一网络”:如果在服务器扫码登录提示出现网络环境不稳定/不在同一网络,可以尝试在本地登录后,将 QQ 本身的配置传到服务器相同目录覆盖。Linux 下 QQ 配置的目录位于 ~/.config/QQ;Windows 下一般是文档下的 QQ 文件夹(默认情况是 <系统盘>:\Users (用户)\Documents\Tencent Files),具体可以打开 QQ 设置,进入“存储管理”一栏查看。或者,手机使用 VPN 等方式连接到服务器网络,使手机和服务器在同一网络,也可解决此问题。