Chutes Validator 部署全流程教程(完整详细版)

🚀 Chutes Validator 部署全流程教程(完整详细版)

本文为 Chutes AI Validator(验证者节点) 的详细部署指南,涵盖从服务器准备、Ansible 自动化配置、Kubernetes 集群搭建,到各类密钥与数据库初始化的完整步骤。
适用于希望在 Bittensor 子网中运行独立验证节点的高级用户。


一、🧩 项目概述

Chutes 是一个去中心化 AI 平台,用于运行验证者(Validator)和矿工(Miner)节点,支持 GPU 算力共享、模型部署与收益分配,介绍如何独立部署一套完整的验证者 API 服务。


二、💡 为什么部署 Validator?

✅ 适合部署的情况:

  • 希望增强网络去中心化与稳定性;
  • 想自定义域名、收益分配机制;
  • 希望深入理解 Chutes 的 API 与验证体系。

⚠️ 不建议部署的情况:

  • 缺乏运维经验(Kubernetes、Postgres、Redis、TLS 等);
  • 无法长期维护高成本节点;
  • 仅为获取收益(官方 0% 验证者抽成,收益更推荐通过子热键)。

三、🖥️ 节点硬件要求

建议部署:

  • CPU 节点 ×2
    高性能多核服务器(≥16 核 / 64GB RAM / 数 TB SSD)
    运行核心组件:API、Socket、Redis、Postgres、Forge、Registry。
  • GPU 节点 若干
    至少 8× H200 或 A100(80GB VRAM 级别),用于 GraVal 加密验证。

四、🪄 使用 Ansible 自动化安装

1️⃣ 安装 Ansible

Mac

1
2
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ansible

Ubuntu

1
sudo apt update && sudo apt install -y ansible python3-pip

CentOS/Fedora

1
2
sudo dnf install epel-release -y
sudo dnf install ansible -y

2️⃣ 安装所需集合

1
2
ansible-galaxy collection install community.general
ansible-galaxy collection install kubernetes.core

克隆 Chutes api 矿工仓库

1
2
git clone https://github.com/chutesai/chutes-api.git
cd chutes-api/ansible

3️⃣ 编辑节点清单并执行 Playbook

进入 ansible 目录,修改 inventory.yml,写入各节点 IP 与角色信息。

执行初始化:

1
ansible-playbook -i inventory.yml site.yml

加入集群:

1
ansible-playbook -i inventory.yml join-cluster.yml

安装额外组件(如 GPU Operator):

1
ansible-playbook -i inventory.yml extras.yml

五、☁️ 配置依赖服务

1️⃣ S3 对象存储

用于保存镜像、构建上下文、Logo 等。可选:

  • AWS S3
  • Cloudflare R2
  • GCS(推荐)
  • MinIO 自建

创建 Kubernetes Secret:

1
2
3
4
5
6
7
microk8s kubectl create secret generic s3-credentials \
--from-literal="access-key-id=[AccessKey]" \
--from-literal="secret-access-key=[Secret]" \
--from-literal="bucket=[BucketName]" \
--from-literal="endpoint-url=[EndpointURL]" \
--from-literal="aws-region=[Region]" \
-n chutes

2️⃣ Postgres 数据库

强烈建议使用托管数据库(Aurora / AlloyDB)保证安全性与备份。

1
2
3
4
5
6
7
8
microk8s kubectl create secret generic postgres-secret \
--from-literal="username=chutes" \
--from-literal="password=[Password]" \
--from-literal="url=postgresql+asyncpg://chutes:[Password]@[Host]:5432/chutes" \
--from-literal="hostname=[Host]" \
--from-literal="port=5432" \
--from-literal="database=chutes" \
-n chutes

六、🔐 关键密钥与配置

Validator 身份密钥

1
2
3
4
microk8s kubectl create secret generic validator-credentials \
--from-literal="ss58=[ValidatorHotkey]" \
--from-literal="seed=[SecretSeedWithout0x]" \
-n chutes

Docker 登录凭据

1
2
3
4
5
6
microk8s kubectl create secret docker-registry regcred \
--docker-server=docker.io \
--docker-username=[User] \
--docker-password=[Pass] \
--docker-email=[Email] \
-n chutes

本地 Registry 密钥

1
2
3
4
5
6
7
8
microk8s kubectl create secret generic registry-secret \
--from-literal="password=[RandomStrongPass]" \
-n chutes

microk8s kubectl create secret generic docker-pull \
--from-literal="username=[User]" \
--from-literal="password=[SamePass]" \
-n chutes

钱包加密密钥

1
2
3
import secrets
print(secrets.token_bytes(32).hex()) # 64字符
print(secrets.token_bytes(64).hex()) # 128字符

创建:

1
2
3
4
microk8s kubectl create secret generic wallet-secret \
--from-literal="wallet-key=[64hex]" \
--from-literal="pg-key=[128hex]" \
-n chutes

Redis 密钥

1
2
3
4
5
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic redis-secret \
--from-literal="password=[UUID]" \
--from-literal="url=redis://:[UUID]@redis.chutes.svc.cluster.local:6379/0" \
-n chutes

GraVal 数据库密码

1
2
3
4
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic gravaldb-secret \
--from-literal="password=[UUID]" \
-n chutes

IP 校验盐值

1
2
3
4
python3 -c 'import uuid; print(uuid.uuid4())'
microk8s kubectl create secret generic ip-check-salt \
--from-literal="salt=[UUID]" \
-n chutes

七、🔒 TLS 证书配置

购买 通配符证书(Wildcard TLS),例如:

1
*.yourdomain.com

确保以下子域支持 HTTPS:

1
2
3
4
5
api.yourdomain.com
registry.yourdomain.com
socket.yourdomain.com
events.yourdomain.com
graval.yourdomain.com

八、☸️ 使用 Helm 部署服务

进入 charts 目录,修改 values.yaml 中:

  • subtensor 地址(如需自建)
  • 副本数 / 域名设置

执行部署:

1
2
helm template . > prod.yaml
microk8s kubectl apply -f prod.yaml -n chutes

查看部署状态:

1
microk8s kubectl get po -n chutes -o wide

九、🌐 反向代理与负载均衡

配置 Nginx 或 Cloud Load Balancer,将以下端口对应映射:

子域名 目标端口
api.[domain] 32000
socket.[domain] 32001
graval.[domain] 32002
registry.[domain] 32003
events.[domain] 32004

确保所有端口与 Helm Chart 一致。


十、⛏️ 连接矿工

将以下信息发送给矿工社区(如 Discord Subnet Channel):

  • Validator Hotkey 地址
  • Registry 子域(如 registry.yourdomain.com
  • API 子域(如 api.yourdomain.com
  • Socket 子域(如 socket.yourdomain.com

矿工更新配置后,即可向你的 Validator 分配 GPU 算力资源。


✅ 总结

至此,你已完成:

  • 完整的 Chutes Validator 节点搭建;
  • Kubernetes 集群与安全配置;
  • 自定义域名、TLS 与对象存储绑定;
  • 准备好与矿工节点协作运行子网验证任务。