コンテンツへスキップ

Daytona

Daytonaを使うと、Termbridge のターミナルとプレビューをクラウドサンドボックスで実行できます。再現可能な環境やクラウドプレビューが必要な場合、またはノートパソコンをスリープ状態にしておきたい場合に便利です。

必要条件

  • Daytona API キー
  • サンドボックスがクローンできるリポジトリ URL
  • 非公開リポジトリの場合はGit認証情報

クイックスタート

バックエンドをDaytonaに設定し、リポジトリの設定を指定します。

シェル
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_DAYTONA_API_KEY=your_key
export TERMBRIDGE_SANDBOX_REPO=https://github.com/you/your-repo.git
export TERMBRIDGE_SANDBOX_BRANCH=main
export TERMBRIDGE_SANDBOX_PATH=your-repo
export TERMBRIDGE_SANDBOX_NAME=termbridge-sandbox
export TERMBRIDGE_SANDBOX_PUBLIC=true
export TERMBRIDGE_SANDBOX_PREVIEW_PORT=5173
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true

その後、通常どおり Termbridge を実行します。

シェル
npx termbridge

必ず TERMBRIDGE_SANDBOX_REPO(または --sandbox-repo)を設定してください。指定がない場合、Termbridge は現在、一般公開されていない組み込みのデフォルトリポジトリを使用するため、サンドボックスは作成されてもクローンに失敗します(#2)。

Daytona接続

変数 用途
TERMBRIDGE_DAYTONA_API_KEY Daytona API キー
TERMBRIDGE_DAYTONA_API_URL API エンドポイント(デフォルトは https://app.daytona.io/api)
TERMBRIDGE_DAYTONA_TARGET Daytonaの対象リージョン(任意)

これらはDaytona SDKに渡されます。いずれかが未設定の場合、SDKは独自の DAYTONA_API_KEY、DAYTONA_API_URL、または DAYTONA_TARGET 変数を使用します。

ダイレクトサンドボックスモード(トンネルなし)

ダイレクトモードでは Termbridge サーバーをサンドボックス内で実行し、Cloudflareは使用しません。共有 URL は、サンドボックス内のサーバーを指すDaytonaプレビューリンクです。

シェル
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_SANDBOX_DIRECT=true
export TERMBRIDGE_SANDBOX_SERVER_PORT=8080

TERMBRIDGE_SANDBOX_SERVER_PORT(または --port)のデフォルトは 8080 です。TERMBRIDGE_SANDBOX_PUBLIC=false を設定しない場合、ダイレクトモードでは公開サンドボックスが作成され、UI によってターミナル切り替えメニューが非表示になります。

TERMBRIDGE_SANDBOX_PREVIEW_PORT を設定すればプレビューも有効にできます。ダイレクトモードでは、サーバーの --proxy ポートとして転送されます。

リポジトリのクローン

Termbridge はサンドボックスを作成し、リポジトリをサンドボックスの作業ディレクトリにクローンします。

次の設定を使用します。

変数 用途
TERMBRIDGE_SANDBOX_REPO クローンするリポジトリURL(クイックスタートを参照し、必ず設定してください)
TERMBRIDGE_SANDBOX_BRANCH チェックアウトするブランチ(任意)
TERMBRIDGE_SANDBOX_PATH サンドボックス内のリポジトリのパス(任意)
TERMBRIDGE_SANDBOX_NAME サンドボックス名(任意、既定値はtermbridge-<random hex>)

TERMBRIDGE_SANDBOX_PATHが設定されていない場合、Termbridgeはリポジトリ名からその値を決定します。

プライベートリポジトリ

プライベートリポジトリをクローンする際は、gitの認証情報を指定してください。

シェル
export TERMBRIDGE_SANDBOX_GIT_USERNAME=your_github_username
export TERMBRIDGE_SANDBOX_GIT_TOKEN=your_github_token

TERMBRIDGE_SANDBOX_GIT_PASSWORDもサポートされており、設定するとトークンより優先されます。

コーディングエージェント

Termbridgeはサンドボックス内にコーディングエージェントをインストールし、ローカルの認証情報を同期して、すぐに使える状態にできます。

詳しい設定方法、自動モード、セキュリティについては、コーディングエージェントガイドを参照してください。

プレビューモード

プレビュー画面を表示するには、TERMBRIDGE_SANDBOX_PREVIEW_PORTにサンドボックス内で開発サーバーが使用するポートを設定してください。

Viteでは、すべてのインターフェースにバインドするようにしてください:

シェル
npm run dev -- --host 0.0.0.0 --port 5173

TermbridgeはDaytonaのプレビューリンクを取得し、Termbridgeサーバー経由でプロキシして、UI内にプレビューを表示します。

パブリックサンドボックスとプライベートサンドボックス

変数 機能
TERMBRIDGE_SANDBOX_PUBLIC=true パブリックサンドボックスを作成
TERMBRIDGE_SANDBOX_PUBLIC=false プライベートサンドボックスを作成

変数が設定されていない場合、直接モードではパブリック、それ以外ではプライベートのサンドボックスが作成されます。

プライベートサンドボックスでは、プレビューをプロキシする際にTermbridgeがプレビュートークンを自動的に転送します。

クリーンアップとライフサイクル

Termbridgeの終了時にサンドボックスを削除するには:

シェル
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true

短時間の利用やテスト用のサンドボックスには、プレフィックスを使用してください:

シェル
export TERMBRIDGE_SANDBOX_NAME=termbridge-test-$(date +%s)
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true

これによりサンドボックスの使用量を管理しやすくなり、ディスク容量の上限に達するのを防げます。

CLIフラグ

フラグを使ってDaytonaを設定することもできます。フラグは対応する環境変数より優先されます。

フラグ 環境変数 用途
--backend sandbox-daytona TERMBRIDGE_BACKEND Daytonaバックエンドを使用
--sandbox-repo <url> TERMBRIDGE_SANDBOX_REPO リポジトリURL
--sandbox-branch <branch> TERMBRIDGE_SANDBOX_BRANCH ブランチ
--sandbox-path <path> TERMBRIDGE_SANDBOX_PATH サンドボックス内のリポジトリのパス
--sandbox-name <name> TERMBRIDGE_SANDBOX_NAME サンドボックス名
--sandbox-preview-port <port> TERMBRIDGE_SANDBOX_PREVIEW_PORT プレビューポート
--sandbox-public TERMBRIDGE_SANDBOX_PUBLIC=true パブリックサンドボックスを作成
--sandbox-direct TERMBRIDGE_SANDBOX_DIRECT=true サンドボックス内でサーバーを実行(トンネルなし)

プライベートサンドボックス用のフラグはありません。TERMBRIDGE_SANDBOX_PUBLIC=falseを使用してください。組み込みのtermbridge --help出力には、拒否される--daytona-*名と--backend daytonaも引き続き表示されます(#1)。

トラブルシューティング

プレビュー画面が空白になる

  • サンドボックス内で開発サーバーが実行中であることを確認してください。
  • プレビューポートに到達できるよう、--host 0.0.0.0を使用してください。
  • TERMBRIDGE_SANDBOX_PREVIEW_PORTが開発サーバーのポートと一致していることを確認してください。

サンドボックスの作成がクォータエラーで失敗する

  • Daytonaダッシュボードで古いサンドボックスを削除してください。
  • 短時間のセッションにはTERMBRIDGE_SANDBOX_DELETE_ON_EXIT=trueを使用してください。

リポジトリのクローンに失敗する

  • リポジトリURL、ブランチ、認証情報を確認してください。
  • Gitトークンにリポジトリの読み取り権限があることを確認してください。