Skip to content

使用 Docker Compose 部署(同时使用 Mirai 和 本项目)

Dark Litss edited this page Dec 11, 2022 · 10 revisions

这个教程适合第一次使用 Mirai 的用户。

本教程将会教你如何安装 Docker、 Docker-compose,以及使用本项目提供的 docker-compose.yaml 启动 Mirai + 本项目。

1. 安装 Docker

Docker 是一种应用容器引擎。它允许开发者(比如我)把一个应用所需要的容器打包,然后在其他计算机(比如你)上运行。

在开始前, 我们需要先安装 Docker (装在你要跑机器人的电脑/服务器上)。

Linux 用户可执行:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Windows 用户可以在这里下载: https://docs.docker.com/desktop/install/windows-install/

2. 安装 Docker Compose

一个完整的服务可能由多个应用组成(比如说咱们现在这个),一个个启动它会比较麻烦,所以我们使用 Docker Compose 来帮助我们管理。

Linux 用户: 可以选择通过 pip 安装

sudo pip install docker-compose

也可以下载安装

# 下载
sudo curl -L https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 如果上面那个命令下载不动,用下面这个
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/v2.14.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 给权限
sudo chmod +x /usr/local/bin/docker-compose

Windows 用户: 自带

3. 下载 docker-compose.yaml

找个空旷的位置(空的文件夹),新建一个名为 docker-compose.yaml 的文件,然后把这里面的内容丢进去。

4. 配置 Mirai

因为 MCL 的交互似乎有点问题,所以接下来我们需要先启动 Mirai,登录好你的机器人QQ,配置自动登录。

docker-compose run -rm mirai

当你看见终端出现

2022-12-10 04:30:19 I/MCL Addon: iTXTech MCL Version: 2.1.2-61c8bd8
2022-12-10 04:30:19 W/MCL Addon: iTXTech Soyuz 未安装,Soyuz MCL Handler 特性已禁用
2022-12-10 04:30:19 I/main: 3 plugin(s) enabled.
2022-12-10 04:30:19 I/main: Auto-login 2956927341
2022-12-10 04:30:20 W/stderr: ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
>

的时候,意味着 Mirai 启动完毕。 接下来执行命令登录机器人 QQ。

login <机器人QQ号> <机器人密码> ANDROID_PAD

然后根据提示进行即可。

当机器人账号登录成功以后,执行

autologin add <机器人QQ号> <机器人密码> MD5
autologin setConfig <机器人QQ号> protocol ANDROID_PAD

让 Mirai 可以自动登录。

5. 配置 mirai-http-api

编辑 mirai/config/net.mamoe.mirai-api-http/setting.yml,填入以下内容:

adapters:
  - http
  - ws
debug: true
enableVerify: true
verifyKey: CHANGEME # 这个是可以改的,改了之后要记得,下面要用
singleMode: false
cacheSize: 4096
persistenceFactory: 'built-in'
adapterSettings:
  ## HTTP 服务的主机, 端口和跨域设置
  http:
    host: mirai
    port: 8080
    cors: ["*"]

  ## Websocket 服务的主机, 端口和事件同步ID设置
  ws:
    host: mirai
    port: 8080
    reservedSyncId: -1

6. 配置本项目

复制一份 config.example.json, 命名为 config.json,然后打开编辑。
编辑的教程和这里一样。 只不过有些地方这么填:

        "api_key": "CHANGEME", // 上面改了的化这里也记得改哈
        "http_url": "http://mirai:8080", // mirai-http-api 中的 http 回调地址
        "ws_url": "http://mirai:8080" // mirai-http-api 中的 ws 回调地址

7. 启动!

接下来就可以启动整个项目了。 你可以用

docker-compose up

来启动。 如果没问题的话,可以 Ctrl + C 退出来,然后换成

docker-compose up -d

在后台启动。

8. 维护

如果你发现你的机器人不回你了,看看是 mirai 那边出问题了,还是 chatgpt 那边出问题了。

docker-compose logs mirai

可以看见 Mirai 的运行输出。

docker-compose logs chatgpt 

可以看见本项目 chatgpt 的运行输出。

如果 Mirai 出现问题(比如说需要验证,或者重新登录等),你可以这么做:

  1. 关闭当前正在运行的 Mirai
docker-compose stop mirai
  1. 手动启动 Mirai
docker-compose run mirai

然后参考步骤 4 搞定它。

搞定之后 Ctrl + C 退出来, 然后执行

docker-compose restart

重启就行了。