コンテンツにスキップ

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 のトークンなど

最短で動かしたい方は、この4ステップで進めましょう。

  1. リポジトリをクローンし、fly.toml を自分の環境に合わせて書き換える
  2. Fly App と Volume を作成し、API キーなどの Secret を設定する
  3. fly deploy を実行してデプロイする
  4. SSH でコンソールに入り、設定ファイルを作成する

まずは、ターミナルで以下のコマンドを実行して、アプリの土台を作ります。

Terminal window
# リポジトリをクローン
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# 新しい Fly App を作成(名前は好きなものに変えてください)
fly apps create my-openclaw
# データを保存するための Volume を作成(1GBあれば十分です)
fly volumes create openclaw_data --size 1 --region iad

ヒント: リージョンは自分に近い場所を選んでください。ロンドンなら lhr、バージニアなら iad、サンノゼなら sjc が一般的です。成田なら nrt が使えます。

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"
設定項目理由
--bind lanFly のプロキシが Gateway にアクセスできるように 0.0.0.0 にバインドします
--allow-unconfigured設定ファイルがまだなくても起動できるようにします(後で作成します)
internal_port = 3000Gateway のポート番号と一致させる必要があります
memory = "2048mb"512MB では不足します。2GB 以上を強く推奨します
OPENCLAW_STATE_DIR = "/data"Volume 上にデータを永続化させます

API キーなどの機密情報は、環境変数として Fly.io に安全に保管します。

Terminal window
# 必須: 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)に書くよりも、環境変数で渡す方が安全です。

準備ができたらデプロイしましょう。

Terminal window
fly deploy

初回は Docker イメージのビルドに 2〜3 分かかります。完了したら、ログを確認して正常に動いているか見てみましょう。

Terminal window
fly status
fly logs

ログに [gateway] listening on ws://0.0.0.0:3000 と表示されていれば成功です。

次に、SSH でマシンにログインして、具体的な動作設定(openclaw.json)を作成します。

Terminal window
fly ssh console

コンソールに入ったら、以下のコマンドを貼り付けてファイルを作成してください。

Terminal window
mkdir -p /data
cat > /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

作成が終わったら、マシンを再起動して設定を反映させます。

Terminal window
exit
fly machine restart <machine-id>

ブラウザで以下のコマンドを打つか、URL を直接開きます。

Terminal window
fly open

認証を求められたら、ステップ 3 で設定した OPENCLAW_GATEWAY_TOKEN を入力してください。


よくある問題と解決策をまとめました。

“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 が含まれているか確認してください。

SIGABRT や突然の再起動が発生する場合、メモリが足りていません。 解決策: fly.toml の memory を 2048mb に増やしてください。512MB や 1GB では、負荷がかかった時に落ちやすくなります。

Gateway が “already running” と言って起動しない

Section titled “Gateway が “already running” と言って起動しない”

異常終了した時にロックファイルが残ってしまうことがあります。 解決策: SSH で入り、ロックファイルを消してから再起動します。

Terminal window
fly ssh console --command "rm -f /data/gateway.*.lock"
fly machine restart <machine-id>

再起動するたびに設定が消える場合は、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 を解放します。

Terminal window
# 公開 IP を解放する
fly ips release <public-ipv4>
fly ips release <public-ipv6>
# ローカルからアクセスする場合
fly proxy 3000:3000

これで、http://localhost:3000 を通じて安全に Gateway を操作できるようになります。


セットアップで困ったことがあれば、いつでも相談してください。

AI Setup Assistant

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。