Infrastructure / Self-hosted AI Agent
Ubuntu 24.04 に OpenClaw をインストールしてみた #
Windows Server 2019・Windows 11 に続き、今回は Ubuntu 24.04 への OpenClaw インストールを検証しました。
Linux ネイティブ環境は公式サポート対象であり、Windows 環境と比べて大幅にシンプルです。
ただしリモートダッシュボードアクセスにはデバイスペアリング承認が必要という落とし穴がありました。
その手順も含めて全記録を公開します。
Ubuntu 24.04
Linux
nginx
HTTPS
GPUStack
本記事は「Windows Server 2019」「Windows 11」への OpenClaw インストール記録の続編です。
Windows 環境で苦労した PATH 問題・npm バグ・NODE_OPTIONS 問題は Ubuntu では一切発生しませんでした。
環境構成 #
OpenClaw ホスト
- Ubuntu 24.04 LTS
- OpenClaw v2026.4.10(npm インストール)
- Node.js v22.22.2(インストーラが自動セットアップ)
- nginx リバースプロキシ(443/HTTPS)
- Gateway ポート:18789(loopback)
モデル・検索バックエンド
- GPUStack + vLLM 0.17.1
- Qwen2.5-14B-Instruct
- SearXNG(オンプレ)
- Custom Provider(OpenAI 互換)
Ubuntu では公式インストーラ(
install.sh)一本で Node.js のセットアップから OpenClaw のインストール・オンボーディングまで完結します。systemd が使えるため Gateway のサービス化も自動で行われます。
インストール手順 #
パッケージ更新と必要ツールのインストール #
sudo apt update && sudo apt upgrade -y sudo apt install -y curl gitOpenClaw をインストール #
公式インストーラを実行します。Node.js のセットアップも含めて自動で処理されます。
curl -fsSL https://openclaw.ai/install.sh | bashインストーラが以下を自動で行います。
- Node.js v22 のインストール(NodeSource 経由)
- ビルドツール(make / g++ / cmake)のインストール
- OpenClaw npm パッケージのインストール
- オンボーディングウィザードの起動
Windows との違い
Ubuntu では npm インストールで MODULE_NOT_FOUND が発生しませんでした。
pnpm への切り替えも不要です。公式インストーラがそのまま動作します。オンボーディング #
インストール完了後、自動でウィザードが起動します。設定項目は以下の通りです。
- セキュリティ警告:
Yesで続行 - Setup mode:
QuickStart - モデルプロバイダー:Custom Provider
- Base URL:
http://<GPUStack の IP>/v1 - API Key の提供方法:Paste API key now
- Endpoint compatibility:
OpenAI-compatible - Model ID:GPUStack で動いているモデル名
- チャンネル:Skip for now
- スキル依存関係:Skip for now
- Web 検索:SearXNG Search → URL を入力
- Hooks:
session-memoryのみ有効化
オンボーディング完了後、systemd サービスが自動でインストール・起動されます。
- セキュリティ警告:
コンテキスト上限とモデル設定を修正(重要) #
オンボーディング直後に会話すると
Context limit exceededが出ることがあります。
インストール直後に以下の設定を行うことで回避できます。方法①:ダッシュボードの UI から設定する(推奨) #
ダッシュボード左メニューの 「AI とエージェント」 →
「Models」タブ → 該当モデルの 「Compat」 セクションを開き、
以下の値を設定して 「Save」 を押します。方法②:コマンドラインから設定する #
# compaction バッファを増やす openclaw config set agents.defaults.compaction.reserveTokensFloor 20000 # contextWindow を手動修正(プロバイダー名は環境に合わせて変更) python3 - << 'EOF' import json, os path = os.path.expanduser("~/.openclaw/openclaw.json") with open(path) as f: c = json.load(f) for k, v in c["models"]["providers"].items(): for m in v.get("models", []): m["contextWindow"] = 65536 m["maxTokens"] = 4096 with open(path, "w") as f: json.dump(c, f, indent=2, ensure_ascii=False) print("更新完了") EOF openclaw gateway restartUI から設定する方が確実です
ダッシュボードから設定すると変更が即座に反映され、設定ミスも防げます。
CLI での設定後は必ずopenclaw gateway restartが必要です。Gateway の起動確認 #
openclaw gateway status systemctl --user is-enabled openclaw-gateway.serviceenabledと表示されれば OS 起動時に自動起動します。
別端末からのリモートアクセス設定(nginx + 自己証明書) #
ダッシュボードをネットワーク越しの別端末から使いたい場合、nginx でリバースプロキシを構成します。
WebSocket も使うため、nginx の設定に Upgrade ヘッダーの転送が必要です。
nginx と自己証明書をセットアップ #
sudo apt install -y nginx # 自己証明書を生成(有効期限10年) sudo mkdir -p /etc/nginx/ssl sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /etc/nginx/ssl/openclaw.key \ -out /etc/nginx/ssl/openclaw.crt \ -subj "/CN=openclaw.local"nginx 設定ファイルを作成 #
sudo tee /etc/nginx/sites-available/openclaw << 'EOF' server { listen 443 ssl; server_name _; ssl_certificate /etc/nginx/ssl/openclaw.crt; ssl_certificate_key /etc/nginx/ssl/openclaw.key; location / { proxy_pass http://127.0.0.1:18789; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 86400; } } server { listen 80; return 301 https://$host$request_uri; } EOF sudo ln -sf /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/ sudo rm -f /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl restart nginx sudo systemctl enable nginxOpenClaw の設定を変更 #
# 非 localhost からの接続を許可 openclaw config set gateway.controlUi.allowInsecureAuth true # アクセス元のオリジンを許可 openclaw config set gateway.controlUi.allowedOrigins '["*"]' openclaw gateway restartファイアウォールを開ける #
sudo ufw allow 443/tcp sudo ufw allow 80/tcp
リモートアクセス時のデバイスペアリング承認 #
別端末からダッシュボードにアクセスすると pairing required エラーが表示されます。
これは OpenClaw のセキュリティ機能で、初回アクセス時に管理者の承認が必要です。
一度承認すれば以降は不要です。
チャンネル(Telegram・Discord など)のペアリングに使う
openclaw pairing コマンドはここでは使いません。ダッシュボードのデバイス承認は
openclaw devices コマンドを使います。ブラウザでダッシュボードにアクセス #
トークン付き URL をブラウザで開きます。サーバー側で確認します。
openclaw dashboard # 表示された URL(#token=...)をブラウザで開くブラウザに
pairing requiredと表示された状態のまま次へ進みます。Pending リストを確認して承認 #
# ペアリング待ちのデバイスを一覧表示 openclaw devices list # 表示された Request ID をすべて承認 openclaw devices approve <Request ID>Pending に複数のリクエストがある場合は全て承認します。
ブラウザで再接続 #
承認後、ブラウザの「接続」ボタンを押すとダッシュボードが開きます。
一度承認したデバイスは Gateway を再起動しても再承認不要です。
ブラウザのキャッシュをクリアしたり別のブラウザを使うと新たなデバイスとして扱われ、再承認が必要になります。
GPUStack 側の設定 #
GPUStack 管理画面でモデルのバックエンドパラメータに以下を追加してモデルを再起動します。
--max-model-len 32768
--generation-config vllm
--enable-auto-tool-choice
--tool-call-parser hermesWindows 環境との比較 #
Ubuntu で楽になった点
install.sh一本で Node.js から全部自動セットアップ- MODULE_NOT_FOUND が発生しない(pnpm 不要)
- PATH 問題・NODE_OPTIONS 問題が発生しない
- systemd で Gateway が自動サービス化
- nginx でリバースプロキシが簡単に構成できる
Ubuntu でも必要だった作業
- contextWindow / compaction の手動設定
- GPUStack バックエンドパラメータの設定
動作確認チェックリスト #
openclaw --versionが表示されるsystemctl --user is-enabled openclaw-gateway.serviceがenabledopenclaw gateway statusでRPC probe: okが表示される- 別端末のブラウザで
https://<サーバーIP>にアクセスできる openclaw devices approveでデバイス承認が完了しているmainセッションでチャットに返答が返ってくる- セッション画面の TOKENS が
xxxxx / 32768になっている - SearXNG 検索が機能する
まとめ #
Ubuntu 24.04 への OpenClaw インストールは、Windows 環境と比べて圧倒的にシンプルでした。
インストーラを実行するだけで Node.js のセットアップからサービス化まで完結します。
唯一の落とし穴はリモートダッシュボードアクセス時のデバイスペアリングです。openclaw pairing(チャンネル用)ではなく openclaw devices を使う点に注意してください。
また、インストール直後に contextWindow と compaction の設定を行うことで、
会話開始直後のコンテキストオーバーフローを防げます。
インストールの難易度は Ubuntu 24.04 << Windows 11 < Windows Server 2019 の順です。
Linux 環境が選べるなら Ubuntu が断然おすすめです。

