Skip to content
AstrBot
Main Navigation 主页博客路线图HTTP API

简体中文

English

简体中文

English

切换日光/暗黑模式

简介和部署接入消息平台接入 AI使用开发
Sidebar Navigation

简介

关于 AstrBot

社区

常见问题

部署

包管理器部署

雨云一键云部署

桌面客户端部署

启动器一键部署

Docker 部署

Kubernetes 部署

宝塔面板部署

1Panel 部署

手动部署

其他部署方式

CasaOS 部署

优云智算 GPU 部署

社区提供的部署方式

支持我们

接入消息平台

快速接入指南

QQ 官方机器人

Websockets 方式(推荐)

Webhook 方式

OneBot v11

NapCat

Lagrange

其他端

企微应用

企微智能机器人

微信公众号

飞书

钉钉

Telegram

LINE

Slack

Misskey

Discord

KOOK

Satori

使用 LLOneBot

使用 server-satori

社区提供

Matrix

VoceChat

接入 AI

✨ 接入模型服务

NewAPI

AIHubMix

PPIO 派欧云

硅基流动

小马算力

302.AI

Ollama

LMStudio

⚙️ Agent 执行器

内置 Agent 执行器

Dify

扣子 Coze

阿里云百炼应用

DeerFlow

使用

WebUI

插件

内置指令

工具使用 Tools

技能 Skills

SubAgent 编排

主动型 Agent 能力

MCP

网页搜索

知识库

自定义规则

Agent 执行器

统一 Webhook 模式

自动上下文压缩

Agent 沙箱环境

开发

插件开发

🌠 从这里开始

最小实例

接收消息事件

发送消息

插件配置

调用 AI

存储

文转图

会话控制器

杂项

发布插件

插件指南(旧)

接入平台适配器

AstrBot HTTP API

AstrBot 配置文件

其他

自部署文转图

插件下载不了?试试自建 GitHub 加速服务

开源之夏

OSPP 2025

目录

使用 Kubernetes 部署 AstrBot ​

WARNING

通过 Kubernetes (K8s) 可以将 AstrBot 以高可用的方式部署在集群环境中,当出现故障时可以自动拉起恢复。

由于 AstrBot 当前使用 SQLite 数据库,此部署方案不支持多副本水平扩展。同时,若采用 Sidecar 模式,NapCat 的登录状态持久化需要您特别关注。

以下教程默认您的环境已安装并配置好 kubectl,且能够连接到您的 K8s 集群。

准备工作 ​

在开始之前,请确保您的 Kubernetes 集群满足以下条件:

  1. 拥有默认的 StorageClass:用于动态创建 PersistentVolumeClaim (PVC)。您可以通过 kubectl get sc 查看。如果没有,您需要手动创建 PersistentVolume (PV) 或安装相应的存储插件 (如 nfs-client-provisioner)。
  2. 网络访问:确保您的集群节点可以从 docker.io 或您指定的镜像仓库拉取镜像。

部署方式 ​

我们提供两种部署方案:

  • 集成部署 (Sidecar 模式):将 AstrBot 和 NapCat 部署在同一个 Pod 中,推荐用于 QQ 个人号。
  • 独立部署:只部署 AstrBot,适用于其他平台或您希望独立管理 NapCat 的场景。

方式一:和 NapCatQQ 一起部署 (Sidecar) ​

此方式位于 k8s/astrbot_with_napcat 目录。

1. 部署 ​

bash
# 1. 创建命名空间
kubectl apply -f k8s/astrbot_with_napcat/00-namespace.yaml

# 2. 创建持久化存储卷
# 注意:astrbot-data-shared-pvc 需要 ReadWriteMany (RWX) 访问模式。
# 如果您的集群不支持 RWX,您需要配置 NFS 等共享存储,并修改 01-pvc.yaml 中的 storageClassName。
kubectl apply -f k8s/astrbot_with_napcat/01-pvc.yaml

# 3. 部署应用
kubectl apply -f k8s/astrbot_with_napcat/02-deployment.yaml

2. 暴露服务 (二选一) ​

  • 方式 A: NodePort

    bash
    kubectl apply -f k8s/astrbot_with_napcat/03-service-nodeport.yaml

    服务将通过节点 IP 和一个由 Kubernetes 自动分配的端口暴露。您可以通过以下命令查看端口:

    bash
    kubectl get svc -n astrbot-ns

    在输出中找到 astrbot-webui-svc 和 napcat-web-svc 的 PORT(S) 列,格式为 <内部端口>:<NodePort端口>/TCP。例如 8080:30185/TCP,则访问地址为 http://<NodeIP>:30185。

  • 方式 B: LoadBalancer

    如果您的集群支持 LoadBalancer 类型的服务 (通常在云厂商的 K8s 服务中提供),可以使用此方式。

    bash
    kubectl apply -f k8s/astrbot_with_napcat/04-service-loadbalancer.yaml

    执行后,通过 kubectl get svc -n astrbot-ns 查看分配到的外部 IP (EXTERNAL-IP)。

3. 配置连接 ​

由于 AstrBot 和 NapCat 在同一个 Pod 中,它们可以通过 localhost 直接通信。

  1. 在 AstrBot 中添加消息平台:

    • 进入 AstrBot WebUI,选择 设置 -> 消息平台 -> 添加。
    • 选择消息平台类别: aiocqhttp
    • 机器人名称: napcat (或自定义)
    • 反向 Websocket 主机: 0.0.0.0
    • 反向 Websocket 端口: 6199
    • 保存配置。
  2. 在 NapCat 中配置 Websocket Client:

    • 进入 NapCat WebUI,选择 设置 -> 反向WS -> 添加。
    • 启用: 开启
    • URL: ws://localhost:6199/ws
    • 消息格式: Array
    • 保存配置。

方式二:只部署 AstrBot (通用方式) ​

此方式位于 k8s/astrbot 目录。

1. 部署 ​

bash
# 1. 创建命名空间
kubectl apply -f k8s/astrbot/00-namespace.yaml

# 2. 创建持久化存储卷
kubectl apply -f k8s/astrbot/01-pvc.yaml

# 3. 部署应用
kubectl apply -f k8s/astrbot/02-deployment.yaml

2. 暴露服务 (二选一) ​

  • 方式 A: NodePort

    bash
    kubectl apply -f k8s/astrbot/03-service-nodeport.yaml

    服务将通过节点 IP 和一个由 Kubernetes 自动分配的端口暴露。您可以通过以下命令查看端口:

    bash
    kubectl get svc -n astrbot-standalone-ns

    在输出中找到 astrbot-webui-svc 的 PORT(S) 列,格式为 <内部端口>:<NodePort端口>/TCP。例如 8080:30185/TCP,则访问地址为 http://<NodeIP>:30185。

  • 方式 B: LoadBalancer

    bash
    kubectl apply -f k8s/astrbot/04-service-loadbalancer.yaml

    执行后,通过 kubectl get svc -n astrbot-standalone-ns 查看分配到的外部 IP (EXTERNAL-IP)。


高级配置 ​

镜像加速 (中国大陆用户) ​

如果拉取 soulter/astrbot:latest 或 mlikiowa/napcat-docker:latest 镜像困难,可以手动修改对应的 02-deployment.yaml 文件,将 image 字段替换为国内的镜像加速地址,例如:

yaml
# 示例:
# image: soulter/astrbot:latest
# 替换为
image: m.daocloud.io/docker.io/soulter/astrbot:latest

启用 Docker 沙箱代码执行器 ​

如果您需要使用沙箱代码执行器,需要将 Docker 的 socket 文件挂载到 Pod 中。

编辑 02-deployment.yaml 文件,在 spec.template.spec 下添加 volumes 和 volumeMounts:

  1. 在 astrbot 容器的 volumeMounts 列表下添加以下内容:

    yaml
    - name: docker-sock
      mountPath: /var/run/docker.sock
  2. 在 spec.template.spec.volumes 列表下添加以下内容:

    yaml
    - name: docker-sock
      hostPath:
        path: /var/run/docker.sock
        type: Socket

WARNING

将 Docker socket 挂载到 Pod 中存在安全风险,请确保您了解其影响。

查看日志 ​

  • Sidecar 部署模式:

    bash
    # 查看 AstrBot 日志
    kubectl logs -f -n astrbot-ns deployment/astrbot-stack -c astrbot
    
    # 查看 NapCat 日志
    kubectl logs -f -n astrbot-ns deployment/astrbot-stack -c napcat
  • 独立部署模式:

    bash
    kubectl logs -f -n astrbot-standalone-ns deployment/astrbot-standalone

🎉 大功告成 ​

部署并暴露服务后,您就可以通过相应的 IP 和端口访问 AstrBot 管理面板了。

默认用户名和密码是 astrbot 和 astrbot。

发现文档有问题?在 GitHub 上编辑此页

Last updated:

Pager
上一篇Docker 部署
下一篇宝塔面板部署

Deployed on Rainyun Logo