Fly.ioでOpenClaw Gatewayを動かす最短ガイド
自分で作ったボットやGatewayをどこで動かすか、迷ったことはありませんか?自宅のPCをつけっぱなしにするのは電気代が気になるし、かといってVPSをいちからセットアップするのは正直面倒ですよね。
私も以前はサーバーの管理に追われて、肝心の開発が進まないことがよくありました。そんな時に見つけたのが Fly.io です。Docker感覚でデプロイできて、運用も驚くほど簡単になります。今回は OpenClaw Gateway を Fly.io で安定して動かすためのベストな手順を紹介します。
作業を始める前に、以下の準備ができているか確認してください。
- flyctl CLI: インストールガイドに従って設定済みであること
- Fly.io アカウント: クレジットカードの登録が必要ですが、無料枠の範囲内で十分試せます
- Model API Key: Anthropic や OpenAI などの API キー
- Channel Credentials: Discord のボットトークンや Telegram のトークンなど
Quick Start (5分で完了)
Section titled “Quick Start (5分で完了)”最短で動かしたい方は、この4ステップで進めましょう。
- リポジトリをクローンし、
fly.tomlを自分の環境に合わせて書き換える - Fly App と Volume を作成し、API キーなどの Secret を設定する
fly deployを実行してデプロイする- SSH でコンソールに入り、設定ファイルを作成する
1) Fly App の作成
Section titled “1) Fly App の作成”まずは、ターミナルで以下のコマンドを実行して、アプリの土台を作ります。
# リポジトリをクローンgit clone https://github.com/openclaw/openclaw.gitcd openclaw
# 新しい Fly App を作成(名前は好きなものに変えてください)fly apps create my-openclaw
# データを保存するための Volume を作成(1GBあれば十分です)fly volumes create openclaw_data --size 1 --region iadヒント: リージョンは自分に近い場所を選んでください。ロンドンなら lhr、バージニアなら iad、サンノゼなら sjc が一般的です。成田なら nrt が使えます。
2) fly.toml の設定
Section titled “2) fly.toml の設定”fly.toml を開き、アプリ名やスペックを調整します。
app = "my-openclaw" # あなたのアプリ名primary_region = "iad"
[build] dockerfile = "Dockerfile"
[env] NODE_ENV = "production" OPENCLAW_PREFER_PNPM = "1" OPENCLAW_STATE_DIR = "/data" NODE_OPTIONS = "--max-old-space-size=1536"
[processes] app = "node dist/index.js gateway --allow-unconfigured --port 3000 --bind lan"
[http_service] internal_port = 3000 force_https = true auto_stop_machines = false auto_start_machines = true min_machines_running = 1 processes = ["app"]
[[vm]] size = "shared-cpu-2x" memory = "2048mb"
[mounts] source = "openclaw_data" destination = "/data"重要な設定ポイント
Section titled “重要な設定ポイント”| 設定項目 | 理由 |
|---|---|
--bind lan | Fly のプロキシが Gateway にアクセスできるように 0.0.0.0 にバインドします |
--allow-unconfigured | 設定ファイルがまだなくても起動できるようにします(後で作成します) |
internal_port = 3000 | Gateway のポート番号と一致させる必要があります |
memory = "2048mb" | 512MB では不足します。2GB 以上を強く推奨します |
OPENCLAW_STATE_DIR = "/data" | Volume 上にデータを永続化させます |
3) Secret の設定
Section titled “3) Secret の設定”API キーなどの機密情報は、環境変数として Fly.io に安全に保管します。
# 必須: Gateway トークン(セキュリティのためにランダムな文字列を生成)fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32)
# モデルプロバイダーの API キーfly secrets set ANTHROPIC_API_KEY=sk-ant-...fly secrets set OPENAI_API_KEY=sk-...
# チャネルのトークンfly secrets set DISCORD_BOT_TOKEN=MTQ...注意点:
OPENCLAW_GATEWAY_TOKENはパスワードと同じです。大切に保管してください。- API キーは設定ファイル(json)に書くよりも、環境変数で渡す方が安全です。
4) デプロイの実行
Section titled “4) デプロイの実行”準備ができたらデプロイしましょう。
fly deploy初回は Docker イメージのビルドに 2〜3 分かかります。完了したら、ログを確認して正常に動いているか見てみましょう。
fly statusfly logsログに [gateway] listening on ws://0.0.0.0:3000 と表示されていれば成功です。
5) 設定ファイルの作成
Section titled “5) 設定ファイルの作成”次に、SSH でマシンにログインして、具体的な動作設定(openclaw.json)を作成します。
fly ssh consoleコンソールに入ったら、以下のコマンドを貼り付けてファイルを作成してください。
mkdir -p /datacat > /data/openclaw.json << 'EOF'{ "agents": { "defaults": { "model": { "primary": "anthropic/claude-3-5-sonnet-latest", "fallbacks": ["openai/gpt-4o"] }, "maxConcurrent": 4 }, "list": [ { "id": "main", "default": true } ] }, "auth": { "profiles": { "anthropic:default": { "mode": "token", "provider": "anthropic" }, "openai:default": { "mode": "token", "provider": "openai" } } }, "bindings": [ { "agentId": "main", "match": { "channel": "discord" } } ], "channels": { "discord": { "enabled": true, "groupPolicy": "allowlist", "guilds": { "YOUR_GUILD_ID": { "channels": { "general": { "allow": true } }, "requireMention": false } } } }, "gateway": { "mode": "local", "bind": "auto" }}EOF作成が終わったら、マシンを再起動して設定を反映させます。
exitfly machine restart <machine-id>6) Gateway へのアクセス
Section titled “6) Gateway へのアクセス”Control UI
Section titled “Control UI”ブラウザで以下のコマンドを打つか、URL を直接開きます。
fly open認証を求められたら、ステップ 3 で設定した OPENCLAW_GATEWAY_TOKEN を入力してください。
トラブルシューティング
Section titled “トラブルシューティング”よくある問題と解決策をまとめました。
“App is not listening on expected address”
Section titled ““App is not listening on expected address””Gateway が 127.0.0.1 で起動している可能性があります。
解決策: fly.toml の起動コマンドに --bind lan が含まれているか確認してください。
メモリ不足 (OOM) で落ちる
Section titled “メモリ不足 (OOM) で落ちる”SIGABRT や突然の再起動が発生する場合、メモリが足りていません。
解決策: fly.toml の memory を 2048mb に増やしてください。512MB や 1GB では、負荷がかかった時に落ちやすくなります。
Gateway が “already running” と言って起動しない
Section titled “Gateway が “already running” と言って起動しない”異常終了した時にロックファイルが残ってしまうことがあります。 解決策: SSH で入り、ロックファイルを消してから再起動します。
fly ssh console --command "rm -f /data/gateway.*.lock"fly machine restart <machine-id>設定が保存されない
Section titled “設定が保存されない”再起動するたびに設定が消える場合は、Volume が正しくマウントされていません。
解決策: OPENCLAW_STATE_DIR=/data が設定されていること、fly.toml に [mounts] セクションがあることを確認してください。
Private Deployment (セキュリティ強化)
Section titled “Private Deployment (セキュリティ強化)”デフォルトでは https://your-app.fly.dev という公開 URL が割り当てられます。これをインターネットから隠したい場合は、プライベート設定を使いましょう。
メリット:
- インターネットスキャナーから見つからなくなる
- 直接攻撃を受けるリスクが減る
- VPN (WireGuard) や SSH プロキシ経由で安全に管理できる
- 外部へのアウトバウンド通信はそのまま利用可能
設定するには、fly.private.toml を作成してデプロイ時に指定するか、既存のパブリック IP を解放します。
# 公開 IP を解放するfly ips release <public-ipv4>fly ips release <public-ipv6>
# ローカルからアクセスする場合fly proxy 3000:3000これで、http://localhost:3000 を通じて安全に Gateway を操作できるようになります。
セットアップで困ったことがあれば、いつでも相談してください。
What’s Next
Section titled “What’s Next”OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。