【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 等方式连接到服务器网络,使手机和服务器在同一网络,也可解决此问题。