mcpField
W
walrus-sites

walrus-sites

github.com/mystenlabsクラウド・DevOps19419 回インストール今日更新
リポジトリ

walrus-sites について

Walrus に静的サイトをデプロイするためのスキルです。サイトのリソースを Walrus に保存し、オンチェーンの Sui オブジェクトで管理します。分散型フロントエンドを作る開発者向けに、公開、更新、ローカルポータルの設定を扱います。

主な機能

  1. 01静的サイトの公開と更新
  2. 02サイトリソースと SPA ルーティングの設定
  3. 03保存期間とリソース一覧の管理
  4. 04テストネットサイト向けローカルポータルの設定
  5. 05ポータル設定と 404 のトラブルシューティング

活用シーン

  1. 01ビルド済みフロントエンドの Walrus へのデプロイ
  2. 02サイト更新とリソース保存期間の延長
  3. 03SPA のクライアントサイドルーティング用フォールバック設定
  4. 04ローカルポータルでのテストネットサイト表示

MCP 対応

利用可能な場合、最新情報の検証や参考ファイルにない詳細の確認に Sui ドキュメント MCP サーバーを使います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mystenlabs/skills --skill walrus-sites

インストール後、Claude Code で/walrus-sitesを入力して読み込まれたか確認します。

同梱ファイルportal/evals/evals.jsonpublishing/evals/evals.json

詳細

Walrus Sites — 分散型ウェブサイトホスティング

MCP ツール: お使いの環境で利用できる場合は、最新情報を得るために Sui ドキュメント MCP サーバー(https://sui.mcp.kapa.ai)にも問い合わせてください。情報の検証と、これらの参照ファイルに記載されていない詳細の確認に使用してください。

Walrus Sites を使うと、静的ウェブサイト(HTML/CSS/JS)を Walrus にデプロイできます。サイトのリソースは、オンチェーンの Sui オブジェクトによって追跡されます。ポータルサーバーがサイトのサブドメインを解決し、Walrus からリソースを取得して HTTP 経由で配信します。その結果、中央集権型のサーバー、CDN、DNS を必要としない、完全に分散化されたフロントエンドが実現します。

ソースに関する制約: このスキルの情報はすべて、MystenLabs/walrus-sites リポジトリとWalrus Sites のドキュメントを出典としています。このスキルを拡張または更新する際は、これらのソースのみを参照してください。サードパーティのブログや非公式のチュートリアルは使用しないでください。

よくある失敗:

  1. Blob の有効期限切れ。 エポック数が少なすぎる状態で公開したサイトは、気付かないうちに動作しなくなります。Blob の有効期限が切れると、ポータルは 404 を返します。必ず余裕のある --epochs の値(30 以上)を指定してください。
  2. ポータルの設定ミス。 ポータルの original_package_id は、アプリの Move パッケージではなく、Walrus Sites フレームワークパッケージ(site::Site)と一致している必要があります。testnet のサンプル設定には正しい値が含まれているため、変更しないでください。
  3. testnet のサイトでは wal.app を使用できません。 公開されている wal.app ポータルが配信するのは mainnet のサイトのみです。testnet では、セルフホストのローカルポータルが必要です。
  4. SPA のルーティング。 シングルページアプリでは、クライアント側のルーティングに対応するために ws-resources.json のルート設定が必要です。設定がない場合、/my-route に直接移動すると 404 が返されます。

サブスキル

publishing — サイトの構築とデプロイ

パス: publishing/SKILL.md 読み込むタイミング: 新しいサイトのデプロイ、既存サイトの更新、エポック期間の選択、ws-resources.json の設定、または site-builder エラーのトラブルシューティングを行うとき。 対象: site-builder publish、site-builder update、--epochs フラグ、Blob の有効期限切れ、ws-resources.json の設定、SPA のルーティング、サイト名、デバッグ用の site-builder sitemap、site-builder destroy。

portal — testnet 用ローカルポータルの実行

パス: portal/SKILL.md 読み込むタイミング: testnet のサイトの表示、ローカルポータルのセットアップ、ポータルの 404 の解決、またはポータルの解決処理の仕組みを確認するとき。 対象: ポータルのクローン、依存関係(Bun)のインストール、portal-config.yaml、original_package_id の注意点、サーバーの起動、URL 形式、ポートの競合、mainnet と testnet の違い。


ルーティングガイド

タスク読み込むスキル
フロントエンドを Walrus Sites にデプロイするpublishing/
デプロイ済みのサイトを更新するpublishing/
404 またはサイトの有効期限切れを解決するpublishing/ + portal/
testnet のサイトをローカルで表示するportal/
ローカルポータルをセットアップするportal/
ポータルに「ページが見つかりません」と表示されるportal/ + publishing/(Blob の有効期限を確認)
SPA のルーティングを設定するpublishing/
サイトが持つリソースを確認するpublishing/(site-builder sitemap)
デプロイ済みのサイトを削除するpublishing/
Walrus Sites と従来のホスティングを比較して選ぶ以下のスキルの内容

スキルの内容

主要な概念
  • Site オブジェクト。 Walrus Sites フレームワークパッケージの site::Site 型を持つ Sui オブジェクトです。メタデータ(名前、説明)と、リソースパスを Walrus の Blob 参照に対応付ける動的フィールドを保持します。site-builder publish で作成され、発行者のアドレスが所有します。

  • リソース。 デプロイしたディレクトリ内の各ファイルは、Walrus に保存されるリソースになります。小さなファイルは、1 つの「quilt」Blob にまとめられる場合があります。各リソースにはパス(例:/index.html、/assets/main.js)と、任意の HTTP ヘッダーがあります。

  • ポータル。 <base36-site-id>.localhost:3000 の URL をオンチェーンの Site オブジェクトに対応付けるサーバーです。Site の動的フィールドから要求されたリソースパスを探し、Walrus アグリゲーターから Blob を取得して、HTTP レスポンスとして返します。ポータルはフレームワークレベルのインフラストラクチャであり、アプリの一部ではありません。

  • ws-resources.json。 リソースヘッダー、ルーティング、Site のメタデータを制御する、Site のルートディレクトリ内の設定ファイルです。初回の発行時に Site オブジェクト ID とともに自動生成されます。2 回目以降の実行では、site-builder はこのファイルを読み取り、新しい Site を作成するか既存の Site を更新するかを判断します。

  • Blob の有効期限。 Walrus の Blob には、エポック数で測定される有限の保存期間があります。Blob の有効期限が切れると、ポータルは取得できなくなり、404 を返します。site-builder sitemap <object-id> を使って有効期限を確認してください。修正するには、より大きな --epochs 値で再発行します。

ルール
  1. テストネットへのデプロイでは、必ず --epochs 30 以上を指定してください。 低い値(5 など)では、数日以内に Blob の有効期限が切れます。本番のメインネットでは、さらに大きな値か --permanent を使用してください。
  2. 発行前にビルドしてください。 npm run build(または同等のコマンド)を実行して、静的な dist/ ディレクトリを生成します。site-builder は指定されたディレクトリをそのまま発行します。
  3. Walrus Sites フレームワークパッケージがアップグレードされたと分かっている場合を除き、ポータルの設定にある original_package_id は変更しないでください。 テストネットの例に記載されている値は正しいものです。
  4. wal.app はメインネット専用です。 テストネットでは、MystenLabs/walrus-sites リポジトリからポータルをセルフホストしてください。
  5. 初回発行後に ws-resources.json を確認してください。 Site オブジェクト ID が記録されています。今後の発行で新しい Site が作成されず既存の Site が更新されるよう、バージョン管理に含めてください。
よくある間違い
  • --epochs 5 で発行し、1 週間後に Site がなくなった理由が分からなくなる。 Blob の有効期限が切れています。--epochs 30+ で再発行してください。
  • ポータルの original_package_id をアプリのパッケージ ID に変更する。 ポータルに必要なのは Walrus Sites フレームワークパッケージの ID(site::Site)であり、Move コントラクトのパッケージ ID ではありません。この 2 つはまったく別のものです。
  • テストネットの Site に wal.app でアクセスしようとする。 wal.app が配信するのはメインネットのみです。テストネットではローカルのポータルが必要です。
  • 発行前にフロントエンドをビルドし忘れる。 site-builder publish dist/ は dist/ ディレクトリの内容を発行します。先に npm run build を実行していないと、ソースファイルや古いビルド結果を発行することになります。
  • フォールバックルーティングなしで SPA をデプロイする。 React/Vue/Svelte の SPA はクライアントサイドルーティングを使用します。/borrows に直接移動すると、ポータルは /borrows をリソースとして探しますが、そのリソースは存在しません。ws-resources.json でフォールバックを設定してください。
  • ポータルの起動前にポート 3000 を使用中のプロセスを終了しない。 Vite の開発サーバー、Next.js、その他のツールがポート 3000 を使用していることがよくあります。ポートが使用中の場合、ポータルはポートのバインドに失敗しても通知しません。

コメント