【NapCatQQ】Linux/群晖搭建NapCatQQDocker版对接第三方框架教程

注意: 本文最后更新于 105 天前,内容可能已不再准确,请酌情参考。

前言

NapCatQQ 是基于 PC NTQQ 本体实现一套无头 Bot 框架。大致意思就是去除了界面使整体更小巧。最主要的是能适配多种的bot协议,也支持多种部署的方式,例如windows和linux等架构的系统平台。这次教程主要讲的是NapCatQQDocker版本的安装,linux服务器和群晖的Docker搭建,以及对接bncr和autman第三方框架,当然也可以对接Nonebot和Koishi等开源的框架(方法大同小异),但是目前NapCatQQ还并不支持全部的Onebot规范接口,所以有的功能还是不能实现。

更新日志
2024年8月29日 20:47:51更新大幅度更改了相关命令和教程内容

NapCatQQ介绍

开始前准备

  • 因为此方法是Docker版本的部署,由于一些特殊原因,不能拉取Docker镜像的话需要参考下面的文章,优先部署好代理,方便后续的拉取镜像操作
    20240701225041425853
    【Docker加速】利用cloudflare创建Docker加速拉取镜像
    注意: 本文最后更新于 105 天前,内容可能已不再准确,请酌情参考。前言 因为某些原因,Docker拉取镜像失败了,所以在此教大家利用cloudflare来搭建docekr加速……

官方拉取镜像

  • 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内修改。
file

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通用)

  1. 首先我们去File Startion创建napcat文件夹(下图只是演示,你的可能文件夹名不一样,反正在你需要放置的文件夹内创建

    20240723020439588474
  2. 接着在napcat文件夹内再创建两个文件夹:config.config还有logs
    file
    file

  3. 我们去docker套件,左边的注册表,右上角搜索mlikiowa/napcat-docker,右键下载此映像,直接应用即可

    20240723020840810534
    20240723020847512834
  4. 下载完毕后我们去容器,点击新增,选择刚才下载的napcat镜像,设置容器名,勾选自动重启启动

    20240723020950502458
  5. 接下来会让你设置端口号,点击新增前面的空格设置6099(可以自己自定义),后面的空格设置6099不要改动

    20240723021117497349
  6. 存储空间设置里,点击添加文件夹,依次选择前面创建的文件夹路径,将两个文件夹都添加进入。添加完毕后后面还有一个空格,我们对应,config后面的空格对应:/app/napcat/config.config后面我们对应/app/.config/QQ,logs后面填写/app/napcat/logs如下图所示即可
    file
    file

  7. 环境变量这里我们添加下面的变量(看清楚图片内解释!!记住机器人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

      file

    • 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

      file

  8. 让你核对信息,完成即可,完毕后跳转下面的web端扫码登录QQ或配置继续操作!
    file

群晖SSH命令创建NapcatQQ容器

  1. 我们可以直接ssh连接你的群晖,如果都不会连接我还是建议用手搓的办法来创建。首先我们创建文件夹,这里请注意,由于每个人的群晖可能设置文件夹不一样,所以命令会有所修改!请根据你要放置的位置来查看。我们先右键你要放置的文件夹查看路径

    20240723025419930809
  2. 记录上面的路径,在ssh终端,输入下面的命令,请注意替换/volume2/sata/为你的路径,完毕后你可以看到有两个文件夹了

    mkdir -p /volume2/sata/napcat/{.config,config,logs}

file

  1. 然后再输入下面的命令,注意替换机器人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

      file

web端扫码登录QQ或配置

  1. 我们点击你创建的文件夹,找到napcat--config--webui.json打开后有一个token,记录下来。(当然也可以更改成你自己记得住的,记得保存
    file

  2. 我们打开浏览器,输入你的群晖IP+Napcat设置的外部端口+webui,就是创建容器设置的端口第一个空格,如果你跟我一样那就默认6099,接着输入你刚才记录下来的token,填入点击login

    20240723022331914011
  3. 就会出现下面页面,点击QR Code,就会出现二维码(如果扫码失效了,请刷新页面,二维码就会更新!!再扫码即可)

    20240723022452874880
  4. 扫码出现后,你记得勾选下次登录无需手机确认

    20240723022616680613
  5. 登录完毕后就会出现此页面,你可以更改相应选项。(一般来说不需要了,除非你还有另外的需求。)
    file

常见问题

  • 调用接口报 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 等方式连接到服务器网络,使手机和服务器在同一网络,也可解决此问题。
阅读剩余
THE END