Docker 部署鸣潮机器人

大家新年快乐!!又好久没有写文章了

此教程不仅可以搭建鸣潮机器人,可以使用其他插件,例如终末地、王者荣耀、原神、绝区零、二重螺旋等等

一. 使用到的框架技术

  1. GsUIDCore 作为后台使用 代码仓库 Github地址
  2. NapCat 作为 Linux QQ 客户端 代码仓库 Github地址
  3. NoneBot 作为 通讯协议 代码仓库 Github地址
  4. 使用 napcat-plugin-gscore-adapter 插件 Github地址

二. 配置环境

1. 准备 Docker 环境

1. 安装 Docker & Docker Compose

  • 自行搜索善用Ai,而且现在很多面板也能一键安装

2. 配置 Docker 网络环境

  • 注:在 docker-compose.yml 文件中并没有创建网络,只写了加入网络的配置,所以要事先创建好网络
  • 步骤:
  1. 网络名称:GsCoreBot 名称固定且不可改变
  2. 网络模式:bridge
  3. 子网:172.22.2.0/24 不冲突即可
  4. 网关:172.22.2.1 与上方对应即可
  5. 其他默认

2. 生成 Docker 镜像

1. GsCore 镜像

  • docker-compose.yml
# gsuid_core Docker Compose 配置
# 部署方式: 全量模式

networks:
  GsCoreBot:
    external: true

services:
  gsuid_core:
    container_name: GsCore
    image: docker.cnb.cool/gscore-mirror/gsuid_core:latest
    container_name: gsuid_core

    ports:
      - "${PORT:-8765}:8765"

    volumes:
      - ./gscore_data:/gsuid_core/data
      - ./gscore_plugins:/gsuid_core/gsuid_core/plugins
      - venv-data:/venv

    restart: always
    extra_hosts:
      - "host.docker.internal:host-gateway"

    environment:
      - PYTHONUNBUFFERED=1
      - UV_INDEX=${GSCORE_PYTHON_INDEX:-}
      - UV_NO_CONFIG=${UV_NO_CONFIG:-false}
      - http_proxy=${GSCORE_HTTP_PROXY:-}
      - https_proxy=${GSCORE_HTTPS_PROXY:-}
      - no_proxy=${GSCORE_NO_PROXY:-localhost,127.0.0.1,.local,cnb.cool,mirrors.aliyun.com,pypi.tuna.tsinghua.edu.cn,mirrors.volces.com}

    networks:
      - GsCoreBot

volumes:
  venv-data:
  • 需开放端口 8765

2. NapCat 镜像

  • docker-compose.yml
networks:
  GsCoreBot:
    external: true

services:
    napcat:
        environment:
            - NAPCAT_UID=${NAPCAT_UID}
            - NAPCAT_GID=${NAPCAT_GID}
        ports:
            - 3000:3000
            - 3001:3001
            - 6099:6099
        container_name: NapCat
        restart: always
        image: mlikiowa/napcat-docker:latest
        # 新增 volumes 配置,实现数据持久化
        volumes:
            # 映射 QQ 持久化数据路径
            - ./data/.config/QQ:/app/.config/QQ
            # 映射 NapCat 配置文件路径
            - ./data/napcat/config:/app/napcat/config
            # 映射 NapCat 插件目录路径
            - ./data/napcat/plugins:/app/napcat/plugins
        networks:
            - GsCoreBot
  • 需开放端口 6099
  • 构建镜像命令 NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d

3. OneBot 镜像

  • docker-compose.yml
networks:
  GsCoreBot:
    external: true

services:
  nonebot:
    container_name: OneBot
    build: .
    ports:
      - "8080:8080"
    env_file:
      - .env.prod
    environment:
      ENVIRONMENT: prod
      HOST: 0.0.0.0
      PORT: 8080
    restart: always
    networks:
      - GsCoreBot
  • Dockerfile
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY pyproject.toml .
RUN pip install --no-cache-dir -e .

# 复制项目文件
COPY . .

# 暴露端口(对应 docker-compose.yml 中的端口)
EXPOSE 8080

# 启动命令
CMD ["python", "bot.py"]
  • .env.prod
### 用户配置项 ###
# 各种插件的配置项可以放这里
# 如果这里有配置项为空,NoneBot 会去环境变量中寻找

gsuid_core_ws_token= #输入你的token
gsuid_core_host=172.22.2.10
gsuid_core_port=8765

# 重定向 localstore 插件的存储路径,便于后续迁移 Bot
LOCALSTORE_USE_CWD=true

# LogPile 日志文件保存路径
# LOGPILE_PATH=./log

# LogPile 日志输出等级,可以为列表
LOGPILE_LEVEL=INFO

# LogPile 日志保留天数
# LOGPILE_RETENTION=14

### NoneBot 配置项 ###

# 机器人超级用户
# 超级用户拥有对 Bot 的最高权限
SUPERUSERS=[]

# 机器人的昵称
# 消息以机器人昵称开头可以代替艾特
NICKNAME=[]

# 命令起始字符
# 一般只有 on_command 匹配规则适用
# 如果有一个指令为 查询,当该配置项为 ["/"] 时使用 /查询 才能够触发
COMMAND_START=["", "/", "#"]

# 命令分割字符
# 一般用于二级指令(不常见)
COMMAND_SEP=[".", " "]

# NoneBot2 监听的 IP 或 主机名
# 如果要对公网开放,请改成 0.0.0.0
HOST=0.0.0.0

# NoneBot2 监听的端口
# 请保证该端口号与连接端配置相同 或与端口映射配置相关
PORT=8080

# NoneBot2 运行所使用的驱动器
# 见 https://nonebot.dev/docs/next/advanced/driver
DRIVER=~fastapi+~httpx+~websockets

# NoneBot2 日志输出等级
LOG_LEVEL=INFO


### OneBot 适配器配置 ###

# OneBot Access Token 配置
# ONEBOT_ACCESS_TOKEN=你的访问令牌

# OneBot V11 Secret 配置
# ONEBOT_SECRET=你的签名

# OneBot V11 正向 Universal WebSocket 配置
# 参考 https://onebot.adapters.nonebot.dev/docs/guide/setup#%E6%AD%A3%E5%90%91-websocket-%E8%BF%9E%E6%8E%A5
# 请确保你的 NoneBot 使用的是 ForwardDriver,否则无法使用此连接方式。
# ONEBOT_WS_URLS=["ws://127.0.0.1:5700"]

# OneBot V11 HTTP POST 配置
# 参考 https://onebot.adapters.nonebot.dev/docs/guide/setup#http-post
# 请确保你的 NoneBot 使用的是 ForwardDriver 和 ReverseDriver,否则无法使用此连接方式。
# ONEBOT_API_ROOTS={"Bot QQ号": "http://127.0.0.1:5700/"}

# OneBot V12 正向 WebSocket 配置
# 参考 https://onebot.adapters.nonebot.dev/docs/guide/setup#%E6%AD%A3%E5%90%91-websocket-%E8%BF%9E%E6%8E%A5-1
# 请确保你的 NoneBot 使用的是 ForwardDriver,否则无法使用此连接方式。
# ONEBOT_V12_WS_URLS=["ws://127.0.0.1:5700"]

# OneBot V12 HTTP Webhook 配置
# 参考 https://onebot.adapters.nonebot.dev/docs/guide/setup#http-webhook
# 请确保你的 NoneBot 使用的是 ForwardDriver 和 ReverseDriver,否则无法使用此连接方式。
# ONEBOT_V12_API_ROOTS={"Bot QQ号": "http://127.0.0.1:5700/"}
  • 其他文件需要看官网自行生成,此处不提供代码
  • 无须对外开放端口

4. napcat-plugin-gscore-adapter 插件

  • 下载插件解压到对应 NapCat 插件目录,并重启 NapCat

3. 运行对应容器

1. Gscore 容器

  • docker compose up -d
  • 将 IP 改为 172.22.2.10 注:需要与前面设置的网络在同一子网中,且与 OneBot 的 .env.prod 配置文件的 gsuid_core_host 变量值相同,否则将无法内网访问
  • 配置 Github 代理地址:git config --global url."https://gh-proxy.com/https://github.com/".insteadOf https://github.com/
  • 其他配置参考 GScore 官方文档

2. NapCat 容器

  • docker compose up -d
  • 将 IP 改为 172.22.2.11
  • 查看日志二维码,扫码登录
  • 登录后台,Token在映射路径下的 ../data/napcat/config/webui.json 文件中
  • 网络配置 -- 新建 -- WebSocket 客户端 ws://172.22.2.12:8080/onebot/v11/ws?token=#你的Token 注:IP 为 OneBot IP,若没有设置 Token 将链接 ? 和其后的内容删除

3. OneBot 容器

  • docker compose up -d
  • 作为中间协议适配器 IP 需设置为 172.22.2.12
  • 若链接成功则可以从日志中看到一下信息
图片[1] - Docker 部署鸣潮机器人 - 云晓晨 KaiQi.Wang

这样就成功了,查看 Gscore 使用相关命令安装插件即可

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共20条
访客头像 - 云晓晨 KaiQi.Wang
欢迎您留下宝贵的见解!
提交
访客头像 - 云晓晨 KaiQi.Wang

昵称

取消
昵称表情代码图片快捷回复