关于 vpc-air-gapped
用于在私有 VPC 和隔离网络中部署自托管 Rivet 的技能,涵盖安装、存储、网络、监控及边界防护。
主要功能
- 01单二进制文件安装引擎
- 02单节点文件系统存储
- 03无需镜像仓库的 Docker 镜像转移
- 04私有网络监控与健康检查
- 05多节点部署指导
适用场景
- 01在隔离网络中安装 Rivet
- 02在客户 VPC 中随软件交付 Rivet
- 03扩展到多节点时选择存储
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rivet-dev/ skills --skill vpc-air-gapped安装后在 Claude Code 中输入/vpc-air-gapped确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BASE_SKILL.mdindex.jsonopenapi.jsonreference/actors/access-control.mdactions.mdactor-runtime-socket.mdappearance.mdauthentication.mdcommunicating-between-actors.mdconnections.mddebugging.mddesign-patterns.mddestroy.mderrors.mdevents.mdfetch-and-websocket-handler.mdhelper-types.mdhttp-api.mdinput.mdinspector-tabs.mdkeys.mdkv.mdlifecycle.mdlimits.mdmetadata.mdqueues.mdreference/actors/quickstart/backend.mdcloudflare.mdeffect.mdnext-js.md详细介绍
在 VPC 或隔离网络中部署 Rivet
重要:开始任何操作前,必须先阅读此技能目录中的 BASE_SKILL.md。其中包含有关调试、错误处理、状态管理、部署和项目设置的重要指导。这些规则和模式适用于所有 RivetKit 工作。以下内容均假设你已阅读并理解这些内容。
在私有网络中运行可自托管 Rivet 的模式:没有互联网出口的 VPC、本地机架,或完全隔离的环境。引擎是一个服务;推荐的单节点存储后端是本地文件系统;引擎默认不会建立任何出站连接。自托管是唯一支持隔离网络的 Rivet 部署模式;如需与 BYOC 全面对比,请参阅自托管概述。
在网络边界内运行的组件
自托管部署包含三个组件,它们都位于你的网络内:
| 组件 | 作用 | 是否位于网络边界内 |
|---|---|---|
| 你的后端 | 你的应用服务器,包括执行 actor 代码的 runner | 是 |
| Rivet Engine | 编排服务,负责管理 actor 生命周期、路由消息,并提供仪表板和 API | 是 |
| 存储 | 持久化 actor 状态。单节点使用本地文件系统,多节点使用 PostgreSQL 或 FoundationDB | 是 |
无需许可证服务器、Rivet Cloud 账户,也不会回连 rivet.dev。网络边界内的客户端通过私有网络上的引擎网关访问 actor。请参阅架构。
单二进制文件安装
引擎会编译为单个 rivet-engine 二进制文件。在网络边界外从源代码构建,然后将二进制文件复制到边界内:
git clone https://github.com/rivet-dev/rivet.git
cd rivet
cargo build --release -p rivet-engine
# Copy target/release/rivet-engine into the perimeter.
预构建二进制文件即将推出;当前可用选项请参阅安装 Rivet Engine。
使用文件系统后端运行引擎,该后端会将所有内容存储在本地磁盘上,是单节点部署可用于生产环境的选择。文件系统文档将隔离环境列为主要使用场景,因为它无需数据库基础设施:
RIVET__database__file_system__path="/var/lib/rivet/data" ./rivet-engine
也可以通过文件提供配置。在 Linux 上,引擎会在 /etc/rivet/config.json 查找配置(支持 JSON、JSON5、JSONC、YAML 和 YML),而 --config 可覆盖该路径。环境变量使用 RIVET__ 前缀,并以 __ 作为分隔符。请参阅配置。
引擎会在端口 6420 上提供自己的仪表板,因此只需在网络边界内使用浏览器,即可进行检查和命名空间管理。
Docker Compose 部署
对于无法访问镜像仓库的 Docker 主机,可使用标准方式将引擎镜像传到网络边界内:
# Outside the perimeter.
docker pull rivetdev/engine:latest
docker save rivetdev/engine:latest -o rivet-engine.tar
# Inside the perimeter.
docker load -i rivet-engine.tar
然后在同一个 Compose 文件中同时运行引擎和应用:
services:
rivet-engine:
image: rivetdev/engine:latest
ports:
- "6420:6420"
volumes:
- rivet-data:/data
environment:
RIVET__FILE_SYSTEM__PATH: "/data"
restart: unless-stopped
my-app:
build: .
environment:
RIVET_ENDPOINT: "http://default:admin@rivet-engine:6420"
depends_on:
- rivet-engine
restart: unless-stopped
volumes:
rivet-data:
RIVET_ENDPOINT 的格式为 http://namespace:token@host:port,用于告知应用以 runner 身份连接到引擎,而不是以独立模式运行。两个服务启动后,通过仪表板或 API 向引擎注册 runner。完整操作指南(包括多节点部署的 PostgreSQL 设置)请参阅Docker Compose。
无出站遥测
只有在选择启用 OpenTelemetry 时,引擎才会导出跟踪和指标。除非设置 RIVET_OTEL_ENABLED=1,否则导出功能处于禁用状态;导出目标默认为本地收集器 http://localhost:4317。未进行任何配置时,不会有任何内容传出网络边界。
需要可观测性时,请将其保留在网络内:
- 设置
RIVET_OTEL_ENABLED=1,并将RIVET_OTEL_GRPC_ENDPOINT指向你在网络边界内运行的收集器。 - 调整
RIVET_OTEL_SAMPLER_RATIO以控制跟踪采样。 - 使用引擎的健康检查端点进行存活和就绪探测。
监控方面的指导请参阅生产环境检查清单。
在客户环境中嵌入 Rivet
如果你交付的软件运行在客户的 VPC 内,同样的设置可以让 Rivet 成为产品的内部组件,而不是客户必须通过互联网访问的服务:
- 将引擎与应用一同交付。 将
rivetdev/engine添加到你现有的 Compose 文件或 chart 中。应用通过RIVET_ENDPOINT在私有网络中找到引擎,因此一个制品即可部署整个堆栈。 - 每次安装使用一个命名空间。 端点 URL 中包含命名空间和令牌(
http://namespace:token@host:port),因此同一个镜像可用于不同客户的部署。请参阅端点。 - 每次安装都生成强管理员令牌。 替换默认令牌并将其保存在服务端。切勿将管理员令牌放入
RIVET_PUBLIC_ENDPOINT或任何客户端可读取的位置。 - 仅在需要时使用公共端点。 只有当浏览器客户端要连接到无服务器运行时模式中的 actors 时,才需要使用带有公共(
pk_)令牌的RIVET_PUBLIC_ENDPOINT。仅限后端的部署完全可以不配置它。 - 在客户的边缘终止 TLS。 在引擎前使用客户的反向代理或负载均衡器终止 TLS。
扩展到单节点以上
| 后端 | 适用场景 | 状态 |
|---|---|---|
| 文件系统(基于 RocksDB) | 单节点部署,包括隔离网络环境中的安装 | 可用于生产环境,仅支持单节点 |
| PostgreSQL | 多节点部署 | 目前推荐用于多节点部署,但仍属实验性功能 |
| FoundationDB | 最大规模的生产部署 | 企业版 |
对于多节点部署,请在负载均衡器后运行两个或更多引擎节点,并添加 NATS 用于发布/订阅;在高吞吐量下,NATS 会取代默认的 PostgreSQL LISTEN/NOTIFY 路径。单节点文件系统安装不需要这两者。请参阅生产环境检查清单。
边界安全检查清单
- 管理员令牌:生成强随机令牌用于引擎身份验证,并确认客户端无法访问该令牌。
- TLS 终止:通过反向代理或负载均衡器加密与引擎之间的连接。
- 不对外公开:确保端口
6420仅能从安全边界内部访问,除非边界外的客户端确实需要访问。 - 健康检查:针对引擎健康端点配置存活和就绪探针。
- 遥测:关闭 OpenTelemetry 导出,或将其指向网络内部的收集器。
- 备份:使用文件系统后端时,备份数据目录。使用 PostgreSQL 时,配置自动备份和故障转移。
完整配置
- 自托管概览,了解架构以及自托管与 BYOC 的比较
- 安装 Rivet Engine,了解 Docker、二进制文件和源代码安装方式
- Docker 容器和 Docker Compose,了解容器部署方式
- Kubernetes,了解集群部署方式
- 配置,查看所有选项和完整 JSON 架构
- 端点,了解如何连接后端和客户端
- 上线前请查看生产环境检查清单
参考索引
Actors
- 访问控制
- 操作
- Actor 密钥
- Actor 运行时套接字
- Actor 状态
- 身份验证
- Cloudflare Workers 快速入门
- Actor 之间的通信
- 连接
- 自定义检查器选项卡
- 调试
- 设计模式
- 销毁 Actor
- Effect.ts 快速入门(Beta)
- 错误
- Fetch 和 WebSocket 处理器
- 辅助类型
- 图标与名称
- 内存中状态
- 输入参数
- 生命周期
- 限制
- 底层 HTTP 请求处理器
- 底层 KV 存储
- 底层 WebSocket 处理器
- 元数据
- Next.js 快速入门
- Node.js 与 Bun 快速入门
- 队列与运行循环
- React 快速入门
- 实时功能
- Rust 快速入门(Beta)
- 扩展与并发
- 计划任务与 Cron
- 共享与加入状态
- SQLite
- SQLite + Drizzle
- Supabase Functions 快速入门
- 测试
- 故障排除
- 类型
- 原生 HTTP API
- 版本与升级
- 工作流
命令行工具
客户端
教程集
部署
- 容器运行器
- 部署到 Amazon Web Services Lambda
- 部署到 AWS ECS
- 部署到 Cloudflare Workers
- 部署到 Freestyle
- 部署到 Google Cloud Run
- 部署到 Hetzner
- 部署到 Kubernetes
- 部署到 Railway
- 部署到 Rivet Compute
- 部署到 Supabase Functions
- 部署到 Vercel
- 部署到虚拟机和裸金属服务器
通用
- Actor 配置
- 跨源资源共享
- 面向大模型和 AI 的文档
- 边缘网络
- 端点
- 环境变量
- HTTP 服务端
- 日志记录
- 池配置
- 生产环境检查清单
- Registry 配置
- 运行时模式
- WASM 与原生 SDK