Agent ZeroをVPSで安全にセルフホストする方法
Agent ZeroはWeb UIからコード、ブラウザー、シェルを操作できます。VPSでの導入手順と、-p 80:80などによる無認証公開を防ぐ設定を解説します。
Agent Zeroとは何か、危険がある場所
Agent Zeroは、Dockerを前提としたオープンソースのエージェントフレームワークです。プライマリエージェントは、タスクを専門的な単位に分割するために下位エージェントを起動できます。各エージェントは、Agent ZeroのDockerコンテナ内でコードを実行し、ブラウザーを操作し、シェルコマンドを実行できます。すべてをWeb UIから制御します。高機能で実際に使っていて楽しく、6ドルのVPSのような小規模なハードウェアでも動作します。フレームワークではなく、マルチエージェント構成だけが必要であれば、同じホスト上の2つのClaude Codeセッションが直接メッセージを交換できます。こちらは導入とセキュリティ対策がはるかに小規模です。
危険なのはWeb UIです。Web UIはコマンドを実行し、ファイルを書き込むシステムの制御パネルです。そのため、外部公開され、認証のないWeb UIは、そのシステムへのリモートアクセス手段になります。さらに、ほとんどのセットアップガイドには、次の落とし穴があります。docker runの例では、アドレスを指定せずにインターフェースを公開しています。2026-10-12時点では、READMEの直接実行コマンドはホストの80番ポートを割り当てます(-p 80:80)。A0 Installランチャーは5080ポートを使用し、VPSデプロイガイドは50080を推奨しています。一方、v0.9.x系列までのリリースを対象にしたガイドでは、50001ポートが使用されています。どのポートを選んでも、アドレスを指定しないポートマッピングはすべてのネットワークインターフェースで待ち受けます。公開VPSでは、コンテナの起動直後からインターネット全体から到達可能になるということです。これを修正することは最後ではなく、最初に行うべき作業です。
必要なもの
Docker をインストールした VPS、言語モデルの API key、または接続先として指定できるローカルモデルが必要です。まずは数 GB の RAM があれば十分です。Agent Zero は、Docker が動作する環境であれば、小規模な VPS から GPU サーバーまで実行できます。Docker に慣れていない場合は、Docker の基礎ガイドで、以下のコマンドが前提とする内容を確認できます。
Docker で loopback にバインドしてインストールする
公式に記載されているクイックスタートは、単一の docker run です。ほかの場所にあるコピー&ペースト用の手順と異なる重要な点は、公開するアドレスです。-p 80:80 のように、すべてのインターフェースへ公開しないでください。loopback に公開します。
docker run -d --name agent-zero \
-p 127.0.0.1:5080:80 \
-v a0_usr:/a0/usr \
agent0ai/agent-zero-p 127.0.0.1:5080:80 は Web UI をサーバーの loopback アドレスだけにバインドするため、インターネットから到達できません。SSH トンネルを使用して、自分のマシンからアクセスします。
ssh -L 5080:127.0.0.1:5080 you@your-vps次に、ローカルで http://127.0.0.1:5080 を開き、UI でモデルプロバイダーを設定します。さらに、Settings の Authentication で UI のログイン名とパスワードを設定します。公式ドキュメントでも、インスタンスを他のユーザーに公開する前に設定するよう説明されています。恒久的なマルチユーザー構成では、代わりに VPN または認証機能を持つリバースプロキシの背後に配置してください。ただし、生の UI をオープンインターネットへ公開してはいけません。この習慣は、インターフェースで機密性の高い操作を制御する、サーバー上のほかのツールにも適用する価値があります。自己ホスト型のオープンクリットスキャナーにも同じ方法で、公開ポートではなく UI へのトンネル経由でアクセスします。
他のガイドが説明を終える場所と、そこで終えてはいけない理由
Agent Zero のインストール方法を検索すると、ホスティング会社が公開しているものを含め、Web UI を公開ポートで利用できる状態にして、そこで説明を終えるガイドが多数見つかります。古いガイドではポートは 50001、新しいガイドでは 80、5080、または 50080 です。しかし、そこはリスクが終わる場所ではなく、始まる場所です。対策を完了するには、2 つの作業が必要です。まず、前述のとおり UI を非公開にします。次に、サーバーの前段にデフォルト拒否のファイアウォールを配置します。そうすれば、忘れていたサービスがインターネットからの要求に応答することを防げます。
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableただし、制限を理解しておく必要があります。Docker は、UFW のルールが適用される前に、公開されたコンテナポートへのトラフィックをルーティングします。そのため、全インターフェースに公開されたコンテナポートはファイアウォールで保護されません。前述の loopback bind が重要なのはこのためです。詳しくは Docker のポートが UFW を回避する仕組みを参照してください。全体像については ファイアウォールの基本を確認してください。また、IPv6 の見落としにも注意が必要です。:: 上のサービスは、IPv4 のルールを厳格に設定していても IPv6 経由で到達可能です。
コンテナ分離が保護するのはエージェントであり、サーバーではありません
Agent Zero の設計は、ある種の分離に関しては適切です。フレームワークと、そこから起動されるすべてのエージェントは、ホスト上で直接実行されるのではなく、Docker コンテナ内で実行されます。そのため、エージェントが作成して実行するコードは、ホームディレクトリではなくコンテナ内に配置されます。これは有用な分離です。下位エージェントはプライマリエージェントと同じコンテナを共有します。したがって、分離されるのはエージェント同士ではなく、エージェントとホストです。これを「サンドボックス化されているから安全だ」と解釈して、それ以上確認しなくなるのは簡単です。コンテナ分離によって、エージェントの作業がホストに及ぶことは防げます。しかし、インターネットからサーバーを保護したり、公開された Web UI が第三者に制御を渡したりすることは防げません。これらはホスト側で対処する必要があります。誰も監視していない間にエージェントへどこまでの操作を許可するかを、事前に決めてください。これは Claude Code の権限モード と同じ判断です。無人で運用するサーバーには、目の前に置いたノート PC より厳しい設定を適用します。
Secrets、ユーザー、ホスト
Agent Zero の config または環境ファイルには、モデル API key やその他の認証情報を保存してください。これらのファイルは、必要なアカウントだけが読み取れるようにし、shell の履歴やリポジトリには残さないでください。同じ考え方は、ホスト上で Secret を保護する他の要素にも当てはまります。たとえば Vaultwarden のハードニングでは、アプリが適切に実行している暗号化よりも、admin token と backup file の保護が重要です。最小権限のユーザーに従い、root ではなく権限のないユーザーでホストを管理してください。SSH は SSH のハードニングのように、key-only authentication に変更します。そのうえで、以下のチェックリストを確認し、見落としがないようにします。
Agent を比較する場合も、基本的なセキュリティ対策は同じです。OpenClaw のハードニングガイドとOpenHands ガイドでは、control surface を非公開にし、権限のないユーザーで実行し、デフォルトで firewall を有効にし、ホストを自分が作成していないコードを実行する環境として扱います。5 つの Agent を横並びで比較するには、2026 年に最適な self-hosted AI agentsを参照してください。
これらの基礎となる概念については、VPS 上で独自の AI agent を構築するで説明しています。Difyも、比較対象として検討できる self-hostable platform です。
FAQ
Agent Zero をセルフホストしても安全ですか?
Web UI を非公開にし、ホストを強化すれば安全に運用できます。Agent Zero はコード、ブラウザー、シェルを実行し、公開したホストポート上の Web UI から制御します。そのため、危険なのはフレームワーク自体ではなく、インターフェースの外部公開です。UI を loopback にバインドし、SSH または VPN 経由でアクセスします。UI のログイン名とパスワードを設定し、前段にデフォルト拒否のファイアウォールを配置して、非特権ユーザーとして実行します。
Agent Zero はデフォルトで Web UI をインターネットに公開しますか?
ドキュメントに記載された docker run コマンドは、アドレスを指定せずにインターフェースを公開します(README では -p 80:80 を使用しています)。このようなマッピングではすべてのネットワークインターフェースで待ち受けるため、パブリック VPS ではコンテナの起動直後からインターネット経由でアクセスできます。Docker は公開ポートを経由してルーティングするため、UFW では阻止できません。公開アドレスに 127.0.0.1 を追加して、UI が loopback でのみ待ち受けるようにします。その後、SSH トンネルまたは VPN 経由でアクセスします。
Agent Zero は小規模な VPS で実行できますか?
実行できます。Agent Zero は Docker が動作する環境であれば、小規模で安価な VPS でも動作します。ただし、負荷の高いタスクや大規模なローカルモデルには、より多くのメモリが必要です。ホスト型 API ではなくセルフホストモデルを指定する場合は、Agent Zero だけでなくモデルに必要なリソースを基準にサーバーの仕様を決めます。
Agent Zero は OpenClaw や Hermes とどう違いますか?
機能は重なりますが、目的は異なります。Agent Zero は Docker を中心に設計されたフレームワークで、コンテナ内で主エージェントが下位エージェントを起動し、Web UI から操作します。OpenClaw と Hermes は、チャットアプリから利用するパーソナルアシスタントです。いずれもセキュリティ上の基本方針は同じです。制御インターフェースを非公開にし、ホストを強化します。