侧边栏壁纸
  • 累计撰写 68 篇文章
  • 累计创建 22 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

用 Docker Compose 部署 NapCat 并配置 HTTP 服务端

七月流火
2025-11-18 / 0 评论 / 0 点赞 / 19 阅读 / 0 字

一、前置准备

1. 环境要求

  • 已安装 Docker(版本≥20.10)和 Docker Compose(版本≥2.0)

  • 服务器开放所需端口(默认管理面板 6099、HTTP 服务端自定义端口如 3000)

2. 环境验证

执行以下命令确认 Docker 和 Docker Compose 已安装成功:

bash

运行

# 验证Docker
docker --version

# 验证Docker Compose
docker compose --version

若输出版本信息则说明环境正常,否则需先安装对应工具(Ubuntu/Debian 示例安装命令):

bash

运行

# 安装Docker
sudo apt update && sudo apt install -y docker.io

# 安装Docker Compose
sudo apt install -y docker-compose-plugin

二、编写 Docker Compose 配置文件

1. 创建部署目录

bash

运行

# 创建NapCat工作目录
mkdir -p /opt/napcat && cd /opt/napcat

# 创建配置文件目录(持久化存储配置)
mkdir -p config data logs

2. 编写 docker-compose.yml

/opt/napcat目录下创建docker-compose.yml文件,内容如下:

yaml

services:
    napcat:
        ports:
            - 3000:3000
            - 3001:3001
            - 6099:6099
        container_name: napcat
        network_mode: bridge
        restart: always
        image: mlikiowa/napcat-docker:latest
        volumes:
          - ./config:/app/napcat/config  # 配置文件持久化
          - ./data:/app/napcat/data      # 数据持久化
          - ./logs:/app/napcat/logs      # 日志持久化
        environment:
          - TZ=Asia/Shanghai  # 时区配置
          - NAPCAT_TOKEN=you_webui_token  # 管理面板登录token(自定义,建议复杂密码)

  • 关键参数说明:

    • ports:左侧为宿主机端口,右侧为容器内端口,需确保宿主机端口未被占用

    • NAPCAT_TOKEN:管理面板登录密码,后续访问 WebUI 需使用

    • volumes:持久化目录,避免容器重启后配置丢失

三、部署 NapCat 服务

1. 启动服务

/opt/napcat目录下执行:

bash

运行

# 后台启动服务
docker compose up -d

# 查看启动日志(验证是否正常启动)
docker compose logs -f

若日志中出现NapCat started successfully且无报错,说明部署成功。

2. 访问管理面板

  • 浏览器访问:http://服务器IP:6099/webui

  • 输入环境变量中配置的NAPCAT_TOKEN登录(如your_admin_token

  • 首次登录需完成 QQ 账号登录(参考前文解决香港服务器登录问题:VPN + 设备验证)

四、配置 HTTP 服务端

1. 进入 HTTP 配置页面

  • 登录 NapCat 管理面板后,左侧导航栏点击「网络配置」

  • 点击页面右上角「新建」,选择「HTTP 服务器」(NapCat 作为服务端,供外部调用)

2. 详细配置参数

配置项

推荐值 / 说明

名称

自定义(如「http-server-main」)

启用

勾选(开启 HTTP 服务端)

Host

0.0.0.0(允许所有 IP 访问,公网部署必填)

Port

3000(需与 docker-compose.yml 中映射的端口一致)

路径前缀

可选(如「/api」,接口路径会变为/api/xxx

Token

自定义验证令牌(如「napcat_http_token_123」)

请求头字段

默认为「Authorization」(可自定义,如「X-Token」)

消息格式

JSON(默认即可,兼容大部分框架)

跨域允许

按需勾选(前端调用需开启跨域)

  • 配置完成后点击「保存」,系统会自动应用配置(无需重启容器)

3. 防火墙开放端口

确保宿主机防火墙开放 HTTP 服务端端口(以 3000 为例):

bash

运行

# Ubuntu/Debian
sudo ufw allow 3000/tcp && sudo ufw reload

# CentOS
sudo firewall-cmd --permanent --add-port=3000/tcp && sudo firewall-cmd --reload

五、HTTP 服务端测试(验证配置)

1. 测试 Token 验证

使用curl命令测试 HTTP 接口是否正常响应,验证 Token 是否生效:

bash

运行

# 格式:curl -H "Token字段: 配置的Token值" http://服务器IP:端口/接口路径
curl -H "Authorization: napcat_http_token_123" -X POST http://服务器IP:3000/api/message -d '{"content":"测试消息","qq":"目标QQ号"}'
  • 若返回{"code":0,"message":"success"}说明配置正常

  • 若返回{"message":"token verify failed!"}:检查 Token 是否一致、请求头字段是否匹配

2. 常用接口示例(参考 OneBot 协议)

NapCat 的 HTTP 服务端兼容 OneBot 协议,常用接口:

bash

运行

# 发送私聊消息
curl -H "Authorization: napcat_http_token_123" -X POST http://服务器IP:3000/send_private_msg -d '{"user_id":123456,"message":"Hello from NapCat HTTP服务"}'

# 获取登录账号信息
curl -H "Authorization: napcat_http_token_123" -X GET http://服务器IP:3000/get_login_info

六、常见问题排查

1. 管理面板无法访问

  • 检查容器是否启动:docker compose ps(状态为 up 则正常)

  • 检查端口是否占用:netstat -tuln | grep 6099

  • 查看日志:docker compose logs -f 查找端口绑定失败等错误

2. HTTP 请求提示「网络不可达」

  • 确认服务器防火墙已开放 3000 端口

  • 香港服务器需确保 HTTP 端口未被运营商限制

  • 检查 docker-compose.yml 中端口映射是否正确(宿主机端口≠容器端口会导致访问失败)

3. Token 验证失败

  • 确认请求头字段与 NapCat 配置一致(如配置的是「X-Token」,请求头需用X-Token: xxx

  • 检查 Token 是否有大小写、空格差异

  • 重新保存 HTTP 配置后,再次测试(无需重启容器)

七、最佳实践

  1. 安全加固

    • 避免使用默认端口(如将 3000 改为随机端口如 32768)

    • Token 建议使用大小写 + 数字 + 特殊字符的复杂组合

    • 公网部署时,可通过反向代理(Nginx)添加 HTTPS 加密

  2. 配置备份

    • 定期备份/opt/napcat/config目录,避免配置丢失

    • 修改配置前先停止服务:docker compose down,修改后再启动

  3. 日志排查

    • HTTP 请求日志可在/opt/napcat/logs/http.log中查看

    • 若接口调用失败,先查看日志定位具体错误(如 Token 错误、参数格式错误)

通过以上步骤,即可完成 Docker Compose 部署 NapCat 并配置 HTTP 服务端。

注意: 再webui中开启服务端的话 监听是127.0.0.1使用nginx反代 两种情况
1. 网络环境改成host
2.镜像名称:3000
不要在nginx中使用127.0.0.1

官网文档地址: https://napcat.apifox.cn/5430207m0


0

评论区