Docker 部署鸣潮机器人

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

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

一. 使用到的框架技术

  1. GsUIDCore 作为后台使用 代码仓库 Github地址
  2. NapCat 作为 Linux QQ 客户端 代码仓库 Github地址
  3. NoneBot 作为 通讯协议 代码仓库 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/"}
  • 其他文件需要看官网自行生成,此处不提供代码
  • 无须对外开放端口

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 分享
评论 共4条
访客头像 - 云晓晨 KaiQi.Wang
欢迎您留下宝贵的见解!
提交
访客头像 - 云晓晨 KaiQi.Wang

昵称

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