Novita SandboxテンプレートでClawdbot (OpenClaw) をホストする: 完全ガイド

Novita SandboxテンプレートでClawdbot (OpenClaw) をホストする: 完全ガイド

指示を待つだけでなく、リマインダーを送信してくれたり、メールボックスを管理してくれたり、フライトのチェックインを自動で行ってくれるAIアシスタントを想像してみてください。それがOpenClaw(旧Clawdbot)です。GitHubで107,000以上のスターを獲得したオープンソースプロジェクトです。

しかし、セルフホスト型AIエージェントをセットアップするとなると、通常はサーバーや依存関係、設定ファイルに悩まされることになります。そこでNovita Sandboxの出番です。事前構築済みのテンプレートと隔離された環境により、数時間かかる作業を数分で完了できます。

このガイドでは、初期セットアップからデプロイまでを網羅します。ワークフローの自動化、データプライバシーの維持、あるいはAIエージェントの可能性に興味がある方に最適です。

OpenClawとは?

OpenClawは、自分のハードウェア上で動作し、実際に自発的に行動するオープンソースのAIアシスタントです。WhatsApp、Telegram、Discord、Signal、Slackに接続できるため、以下のことが可能です。

  • スマートなリマインダーを送信
  • メールとカレンダーのタスクを処理
  • スマートホームデバイスを制御
  • フライトを予約し、自動でチェックイン
  • カスタムスクリプトを実行
  • 動画コンテンツを理解
  • 異なるプラットフォーム間で会話を開始

Mac Mini、VPS、またはNovita Sandbox上で動作するため、データを完全に管理できます。

Novita SDK/CLIのインストール

# Novita SDKのインストール
pip install novita-sandbox

# Novita CLIのインストール
npm i -g novita-sandbox-cli

サンドボックスの起動

CLI

# ログイン
novita-sandbox-cli auth login

# clawdbotテンプレートを使用してサンドボックスを作成
# 注: 終了時にサンドボックスは破棄されます
novita-sandbox-cli sandbox create clawdbot

SDK(推奨)

API KEYの取得

Novita Consoleにログインし、アバターをクリックしてAPI Keysにアクセスします。

Novita Consoleにログインし、アバターをクリックしてAPI Keysにアクセスします。

クリックしてAPI Keyを作成し、コピーします。

サンドボックスの作成

以降のデモで使用する簡単なSDKスクリプトsandbox_novita.py

#!/usr/bin/env python3
"""
Novita Sandbox SDK シンプルな例

使用方法:
    python sandbox_demo.py create [--template base] [--timeout 300]
    python sandbox_demo.py list
    python sandbox_demo.py set-timeout <SANDBOX_ID> <SECONDS>
    python sandbox_demo.py get-url <SANDBOX_ID> <PORT>

環境変数:
    NOVITA_API_KEY=sk_xxx
    NOVITA_DOMAIN=sandbox.novita.ai
"""

import os
import sys

from dotenv import load_dotenv
load_dotenv()

from novita_sandbox.core import Sandbox

API_KEY = os.getenv("NOVITA_API_KEY", "")
DOMAIN = os.getenv("NOVITA_DOMAIN", "sandbox.novita.ai")

def check_config():
    if not API_KEY:
        print("Error: NOVITA_API_KEY not set")
        sys.exit(1)

def cmd_create(args):
    """Create sandbox"""
    check_config()
    template = "base"
    timeout = 300
    
    i = 0
    while i < len(args):
        if args[i] == "--template" and i + 1 < len(args):
            template = args[i + 1]
            i += 2
        elif args[i] == "--timeout" and i + 1 < len(args):
            timeout = int(args[i + 1])
            i += 2
        else:
            i += 1
    
    sandbox = Sandbox.create(
        template=template,
        timeout=timeout,
        api_key=API_KEY,
        domain=DOMAIN,
    )
    print(f"Created: {sandbox.sandbox_id}")

def cmd_list():
    """List sandboxes"""
    check_config()
    paginator = Sandbox.list(api_key=API_KEY, domain=DOMAIN)
    
    sandboxes = []
    while paginator.has_next:
        sandboxes.extend(paginator.next_items())
    
    if not sandboxes:
        print("(no sandboxes)")
        return
    
    for sbx in sandboxes:
        print(f"{sbx.sandbox_id}  |  {sbx.template_id}  |  {sbx.started_at}  |  {sbx.end_at}")

def cmd_set_timeout(sandbox_id, seconds):
    """Set timeout"""
    check_config()
    Sandbox.set_timeout(sandbox_id, int(seconds), api_key=API_KEY, domain=DOMAIN)
    print(f"Set {sandbox_id} timeout to {seconds}s")

def cmd_get_url(sandbox_id, port):
    """Get URL"""
    check_config()
    sandbox = Sandbox.connect(sandbox_id, api_key=API_KEY, domain=DOMAIN)
    host = sandbox.get_host(int(port))
    print(f"https://{host}")

def print_help():
    print(__doc__)

def main():
    if len(sys.argv) < 2:
        print_help()
        return
    
    cmd = sys.argv[1]
    args = sys.argv[2:]
    
    if cmd == "create":
        cmd_create(args)
    elif cmd == "list":
        cmd_list()
    elif cmd == "set-timeout":
        if len(args) < 2:
            print("Usage: set-timeout <SANDBOX_ID> <SECONDS>")
            sys.exit(1)
        cmd_set_timeout(args[0], args[1])
    elif cmd == "get-url":
        if len(args) < 2:
            print("Usage: get-url <SANDBOX_ID> <PORT>")
            sys.exit(1)
        cmd_get_url(args[0], args[1])
    else:
        print_help()

if __name__ == "__main__":
    main()

# NOVITA_API_KEY: ご自身のAPI Keyを入力してください
# template: clawdbotを指定
# timeout: サンドボックスのライフサイクル(秒)。注: 最大3600、延長が必要な場合はお問い合わせください
NOVITA_API_KEY=sk_xxx python3 sandbox_novita.py create --template clawdbot --timeout 300

返されたサンドボックスIDを保存します。これはサンドボックスへのログインに使用します。

Clawdboltの起動

サンドボックスにログイン

novita-sandbox-cliを使用してサンドボックスにログインします。

novita-sandbox-cli sandbox connect <sandbox_id>

Clawdboltの初期化

以下のコマンドでClawdbotを初期化します。

clawdbolt onboard

clawdbot onboardを実行後、キーボードで以降の設定を完了します。

主な操作: 矢印キーでオプションを移動し、Enterで選択・確定します。

1. リスクへの同意

ここにリスクが記載されます。AIが誤ってファイルを削除することはよくあることですが、私たちのSandboxは安全な隔離を提供します。

Yesを選択します。

2. オンボーディングモードの選択

QuickStartを選択します。

3. モデルの設定

モデルプロバイダーと使用するデフォルトのモデルを選択し、API Keyを入力するよう求められます。

4. チャンネルの設定

Clawdbotの対話方法(Telegram Bot、WhatsApp、Discord Botなど)を設定するよう求められます。

ここではTelegramを選択します。

5. Telegram Botトークンの取得

Telegramを選択後、bot token(取得手順が表示されます)を入力します。

  1. Telegramで**@BotFather**を検索

  1. /newbotと入力して新しいボットを作成

6. スキルとフック

ここではスキップします。

注: スペースキーで選択、Enterで確定します。

Clawdbotの起動

以下のコマンドでClawdbotを起動します。

clawdbot gateway run --port 18789

Telegram Botのペアリングと使用

Telegramボットがペアリングを要求します。枠で囲まれたペアリングコードを使用して完了します。

別のターミナルを開き、サンドボックスにログインします。

novita-sandbox-cli sandbox connect <sandbox_id>

Telegramボットをペアリングします。

clawdbot pairing approve telegram <ペアリングコード>

ペアリングに成功すると、実際に使用を開始できます。

デモを試す

プロンプトを使ってアートなWebページを作成し、サンドボックス内に公開するよう依頼しました。

  1. ボットと直接チャットしてWebサイトをデプロイします。

  1. Webサイトにアクセス

SDKスクリプトを使用してアクセスリンクを取得します。サンドボックスIDとポートを渡すだけです。

NOVITA_API_KEY=sk_xxx python3 sandbox_novita.py get-url <sandbox_id> <port>

次に、ブラウザで取得したアクセスリンクを入力します。

結論

Novita Sandboxは、通常のデプロイの頭痛の種を取り除きます。サーバー設定に触れたり、セキュリティリスクを心配したりすることなく、動作するOpenClawインスタンスを手に入れられます。ボットは基本的なリマインダーからWebアプリの立ち上げまで対応でき、データは自分の管理下に置かれます。

試してみたいですか?Novita AIにアクセスしてインスタンスを起動しましょう。

Novita AI は、開発者に使いやすいAPIと手頃で信頼性の高いGPUインフラを提供する、主要なAIクラウドプラットフォームです。AIアプリケーションの構築とスケーリングをサポートします。