链接

精简docker安装

首先,确保你的macOS环境中安装了Homebrew:

# 检查版本
brew --version
# 安装Homebrew
curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash

然后,安装orbstack作为docker的运行平台,再安装docker和compose:

brew install --cask orbstack docker docker-compose

orbstack相关命令:

# 开机
orb start
# 状态
orb status
# 下机
orb stop
# 配置docker
orb config docker

确保orbstack处于运行状态,最后运行命令 配置docker,设置一下镜像源:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live/"
  ]
}

这里用到了vim编辑器,首次进入是 查看 模式,轻触 I 键进入写入模式,ESC 退出当前模式,键入 : 进入命令模式,输入 wq 进行保存和退出。

部署astrbot和napcat

这里使用官方文档自带的部署方式,同时安装napcat:

mkdir astrbot
cd astrbot
wget https://raw.githubusercontent.com/NapNeko/NapCat-Docker/main/compose/astrbot.yml
sudo docker compose -f astrbot.yml up -d

如果网络问题获取不到compose文件,下面是官方的 astrbot.yml:

# docker-compose.yml
# NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose -f ./compose/astrbot.yml up -d
services:
  napcat:
    environment:
      - NAPCAT_UID=${NAPCAT_UID:-1000}
      - NAPCAT_GID=${NAPCAT_GID:-1000}
      - MODE=astrbot
    ports:
      - 6099:6099
    container_name: napcat
    restart: always
    image: mlikiowa/napcat-docker:latest
    volumes:
      - ./data:/AstrBot/data
      - ./napcat/config:/app/napcat/config
      - ./ntqq:/app/.config/QQ
    networks:
      - astrbot_network
    #mac_address: "02:42:ac:11:00:02"
  astrbot:
    environment:
      - TZ=Asia/Shanghai
    image: soulter/astrbot:latest
    container_name: astrbot
    restart: always
    ports:
      - "6185:6185"
      #- "6195:6195"
      #- "6199:6199"
    volumes:
      - ./data:/AstrBot/data
    networks:
      - astrbot_network
networks:
  astrbot_network:
    driver: bridge

部署完成后,查看容器日志:

sudo docker logs napcat
sudo docker logs astrbot

注意查看astrbot和napcat的WebUI地址和token信息:

  • astrbot的账密默认为 astrbot
  • napcat的默认token在日志中随机生成

随后进入astrbot的webui,设置适配器:

AstrBot WebUI 中选择机器人消息适配器的设置

随后进入napcat的webui,登录要作为机器人的QQ号,进行网络设置:

NapCat WebUI 中登录 QQ 账号并配置网络的页面

至此,就可以在astrbot的平台日志中,看到机器人接收消息的logs了。

最后就是配置模型服务商,进行astrbot本体插件的必要设置后,就可以使用了。

sandbox沙箱环境配置

在astrbot中,如果让大模型调用电脑能力来实现功能(python、matlab画图),一般需要配置沙箱环境,让AI的操作不伤害到宿主机。

官方推荐使用 Shipyard 项目来实现沙箱环境:

mkdir astrbot-shipyard
cd astrbot-shipyard
wget https://raw.githubusercontent.com/AstrBotDevs/shipyard/refs/heads/main/pkgs/bay/docker-compose.yml -O docker-compose.yml
# 修改 compose-with-shipyard.yml 文件中的环境变量配置,例如 Shipyard 的 access token 等
docker compose -f docker-compose.yml up -d
docker pull soulter/shipyard-ship:latest

这里还是给出compose文件的内容:

version: '3.8'
 
services:
  shipyard:
    image: soulter/shipyard-bay:latest
    ports:
      # API port (public, for agent access)
      - "8156:8156"
      # Dashboard port (optional, can be hidden behind NAT)
      - "8157:8157"
    environment:
      - PORT=8156
      - DATABASE_URL=sqlite+aiosqlite:///./data/bay.db
      - ACCESS_TOKEN=secret-token
      - MAX_SHIP_NUM=10
      - BEHAVIOR_AFTER_MAX_SHIP=reject
      - CONTAINER_DRIVER=docker
      - DOCKER_IMAGE=soulter/shipyard-ship:latest
      - DOCKER_NETWORK=shipyard_network
      - SHIP_DATA_DIR=${PWD}/data/shipyard/ship_mnt_data
      - DEFAULT_SHIP_CPUS=1.0
      - DEFAULT_SHIP_MEMORY=512m
    volumes:
      - ${PWD}/data/shipyard/bay_data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - shipyard
 
networks:
  shipyard:
    name: shipyard_network
    external: true

可以在compose文件里设置 ACCESS_TOKEN:将 secret-token 改为预设值即可。

随后在astrbot的 配置文件 -> 普通配置 中即可设置启用sandbox环境:

AstrBot 普通配置中启用 Sandbox 环境的选项

插件的安装

在astrbot插件市场中有非常多各种各样的插件,这使得astrbot机器人的功能变得丰富多样,这里以 API聚合 插件为例。

AstrBot 插件市场中的 API 聚合插件页面

一般来说点击安装即可,随后会弹出该插件的说明文档,这里通常有一些注意事项:

AstrBot 插件安装后的说明与 API Key 配置提示

这里提到的 倾梦API 需要自行手动获取key,再去到webui界面进行配置。

由于我们的astrbot安装在docker中,docker的网络端口只有映射出来的,宿主机才能访问。

因此我们需要对 astrbot.yml 进行修改:

# ...
  astrbot:
# ...
    ports:
      - "6185:6185"
# 在这里添加4141的端口映射
      - "4141:4141"
# ...

然后重新以docker-compose重启astrbot即可:

cd ~/astrbot
sudo docker stop astrbot
sudo docker compose -f astrbot.yml up -d

这时再访问4141端口就可以访问到 API聚合 插件的webUI界面了。