vpc-air-gapped について
プライベート VPC やエアギャップ環境で Rivet をセルフホストするためのスキルです。インストール、ストレージ、ネットワーク、監視、境界の保護を案内します。
主な機能
- 01単一バイナリでのエンジン導入
- 02単一ノード向けファイルシステムストレージ
- 03レジストリを使わない Docker イメージ転送
- 04プライベートネットワーク内の監視とヘルスチェック
- 05マルチノード導入の案内
活用シーン
- 01エアギャップ環境への Rivet の導入
- 02顧客の VPC 内でのソフトウェアとの同梱
- 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 の作業に適用されます。以下の内容は、すでに読んで理解していることを前提としています。
インターネットへの送信接続がない VPC、オンプレミスのラック、完全なエアギャップ環境など、プライベートネットワーク内でセルフホスト版 Rivet を実行するためのパターンです。エンジンは単一のサービスで、推奨される単一ノードのストレージバックエンドはローカルファイルシステムです。また、エンジンはデフォルトでは外部への接続を行いません。エアギャップネットワークに対応する Rivet のデプロイモデルはセルフホストのみです。BYOC との詳しい比較については、セルフホスティングの概要を参照してください。
境界内で実行されるもの
セルフホスト型のデプロイには3つのコンポーネントがあり、すべてネットワーク内に配置されます。
| コンポーネント | 役割 | 境界内 |
|---|---|---|
| お客様のバックエンド | アクターコードを実行するランナーを含む、お客様のアプリケーションサーバー | はい |
| Rivet Engine | アクターのライフサイクルを管理し、メッセージをルーティングし、ダッシュボードと API を提供するオーケストレーションサービス | はい |
| ストレージ | アクターの状態を永続化します。単一ノードではローカルファイルシステム、マルチノードでは PostgreSQL または FoundationDB を使用します | はい |
ライセンスサーバーも Rivet Cloud アカウントもなく、rivet.dev へのコールバックもありません。境界内のクライアントは、プライベートネットワーク経由でエンジンのゲートウェイを通じてアクターに接続します。アーキテクチャを参照してください。
単一バイナリのインストール
エンジンは単一の 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
次に、1つの 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 形式で、アプリがスタンドアロンで実行される代わりに、ランナーとしてエンジンに接続するための設定です。両方のサービスを起動した後、ダッシュボードまたはその API を通じてランナーをエンジンに登録します。マルチノードデプロイ向けの 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 を、顧客がインターネット経由でアクセスする必要のあるサービスではなく、製品の内部コンポーネントとして稼働させることができます。
- アプリと一緒にエンジンを提供します。 すでに提供している Compose ファイルまたはチャートに
rivetdev/engineを追加します。アプリはプライベートネットワーク経由でRIVET_ENDPOINTを使ってエンジンを検出するため、1 つのアーティファクトでスタック全体をデプロイできます。 - インストールごとに 1 つのネームスペースを使用します。 エンドポイント URL にネームスペースとトークンが含まれるため(
http://namespace:token@host:port)、顧客ごとのデプロイで同じイメージを使用できます。エンドポイントを参照してください。 - インストールごとに強力な管理者トークンを生成します。 デフォルトのトークンを置き換え、サーバー側で保持してください。管理者トークンを
RIVET_PUBLIC_ENDPOINTに含めたり、クライアントが読み取れる場所に置いたりしないでください。 - 必要な場合にのみパブリックエンドポイントを使用します。 パブリックトークン(
pk_)を使うRIVET_PUBLIC_ENDPOINTが必要なのは、ブラウザクライアントがサーバーレスランタイムモードのアクターに接続する場合のみです。バックエンドのみのデプロイでは、完全に省略できます。 - 顧客のエッジで TLS を終端します。 エンジンの前段にある顧客のリバースプロキシまたはロードバランサーで TLS を終端します。
1 ノードを超えるスケーリング
| バックエンド | 用途 | ステータス |
|---|---|---|
| ファイルシステム(RocksDB ベース) | エアギャップ環境へのインストールを含む、単一ノードのデプロイ | 本番環境対応、単一ノードのみ |
| PostgreSQL | マルチノードのデプロイ | 現時点でマルチノード向けに推奨されていますが、実験的です |
| FoundationDB | 最大規模の本番環境へのデプロイ | エンタープライズ |
マルチノードのデプロイでは、ロードバランサーの背後で 2 つ以上のエンジンノードを実行し、高スループット時にデフォルトの PostgreSQL LISTEN/NOTIFY 経路を置き換える pub/sub 用の NATS を追加します。単一ノードのファイルシステムインストールでは、どちらも必要ありません。本番環境チェックリストを参照してください。
境界セキュリティのチェックリスト
- 管理者トークン:エンジン認証用に強力でランダムなトークンを生成し、クライアントに公開されていないことを確認します。
- TLS 終端:リバースプロキシまたはロードバランサー経由で、エンジンへの接続を暗号化します。
- パブリック公開を避ける:境界外のクライアントからのアクセスが本当に必要な場合を除き、ポート
6420には境界内からのみアクセスできるようにします。 - ヘルスチェック:エンジンのヘルスエンドポイントに対するライブネスプローブとレディネスプローブを設定します。
- テレメトリー:OpenTelemetry のエクスポートをオフにするか、ネットワーク内のコレクターを指定します。
- バックアップ:ファイルシステムバックエンドの場合は、データディレクトリをバックアップします。PostgreSQL の場合は、自動バックアップとフェイルオーバーを設定します。
設定の詳細
- アーキテクチャとセルフホストと BYOC の比較については、セルフホスティングの概要を参照してください。
- Docker、バイナリー、ソースからのインストールについては、Rivet Engine のインストールを参照してください。
- コンテナのデプロイについては、Docker コンテナーとDocker Composeを参照してください。
- クラスターへのデプロイについては、Kubernetesを参照してください。
- すべてのオプションと完全な JSON スキーマについては、設定を参照してください。
- バックエンドとクライアントの接続については、エンドポイントを参照してください。
- 本番環境への移行前に、本番環境チェックリストを参照してください。
リファレンスマップ
アクター
- アクセス制御
- アクション
- アクターキー
- アクターランタイムソケット
- アクターのステータス
- 認証
- Cloudflare Workers クイックスタート
- アクター間の通信
- 接続
- カスタムインスペクタータブ
- デバッグ
- 設計パターン
- アクターの破棄
- Effect.ts クイックスタート(ベータ)
- エラー
- Fetch および WebSocket ハンドラー
- ヘルパー型
- アイコンと名前
- インメモリ状態
- 入力パラメーター
- ライフサイクル
- 制限
- 低レベル HTTP リクエストハンドラー
- 低レベル KV ストレージ
- 低レベル WebSocket ハンドラー
- メタデータ
- Next.js クイックスタート
- Node.js と Bun のクイックスタート
- キューと実行ループ
- React クイックスタート
- リアルタイム
- Rust クイックスタート(ベータ)
- スケーリングと並行処理
- スケジュールと Cron
- 状態の共有と参加
- SQLite
- SQLite と Drizzle
- Supabase Functions クイックスタート
- テスト
- トラブルシューティング
- 型
- 標準 HTTP API
- バージョンとアップグレード
- ワークフロー
CLI
クライアント
クックブック
- AI エージェント
- チャットルーム
- 共同編集テキストエディター
- Cron ジョブとスケジュールタスク
- テナントごとのデータベース
- VPC またはエアギャップネットワークへの Rivet のデプロイ
- ライブカーソルとプレゼンス
- マルチプレイヤーゲーム
デプロイ
- コンテナランナー
- Amazon Web Services Lambda へのデプロイ
- AWS ECS へのデプロイ
- Cloudflare Workers へのデプロイ
- Freestyle へのデプロイ
- Google Cloud Run へのデプロイ
- Hetzner へのデプロイ
- Kubernetes へのデプロイ
- Railway へのデプロイ
- Rivet Compute へのデプロイ
- Supabase Functions へのデプロイ
- Vercel へのデプロイ
- VM およびベアメタルへのデプロイ
全般
- アクター設定
- クロスオリジンリソース共有
- LLM および AI 向けドキュメント
- エッジネットワーキング
- エンドポイント
- 環境変数
- HTTP サーバー
- ロギング
- プール設定
- 本番環境チェックリスト
- レジストリ設定
- ランタイムモード
- WASM とネイティブ SDK の比較