月額$6のAI頭脳:
Hetzner CPX11 VPSガイド
/** ファストフードより安い24/7クラウドエージェント。 */
安価なLinux VPSと小型モデル(4ビット量子化Llama 3 8B)でTelegram/WhatsAppの返信、日次フィード要約、Webスクレイピングが完璧に動作します。$1000のGPUは不要です。
1. Hetznerサーバーを作成
- Hetzner Cloudアカウントを作成。
- 新しいプロジェクトを作成して「新しいサーバー」を選択。
- 場所:最寄りのデータセンターを選択。
- イメージ:Ubuntu 24.04 LTS。
- タイプ:共有vCPU、CPX11(2 vCPU、2GB RAM、40GBディスク)。
- SSHキーを追加して作成をクリック。
2. 重要:Swapスペースを作成
2GBのRAMでは4GB以上のLLMを読み込めません。Swapファイルを必ず作成してください。
3. DockerでOpenClawをデプロイ
Docker ComposeでOpenClawとOllamaを完全CPU専用で起動します。
CPU最適化の秘訣
どのHetznerプランを選ぶか、そして実際に何が得られるか
Hetznerの安価な共有vCPUプランにはGPUがないため、VPSはCPU推論マシンです。オーケストレーションと小さいモデルには十分ですが、それ以外では厳しくなります。プランはまずRAMを基準に選んでください。収まらないモデルはスワップし、スループットの差は微妙どころではありません。
| プラン | RAM | 現実的な用途 |
|---|---|---|
| CX22(2 vCPU) | 4 GB | ゲートウェイ・チャネル・スキルを動かし、モデルは別の場所に置く構成。1B〜3Bも載りますが低速です。 |
| CX32(4 vCPU) | 8 GB | ローカルで3Bモデル、加えてゲートウェイとDBの余裕あり。セルフホストのエージェントで一般的な最適点です。 |
| CX42(8 vCPU) | 16 GB | CPUで7B〜8B。動きますが毎秒トークンは一桁台で、チャットではなくバッチ向けです。 |
| 専有vCPU | 構成による | 共有vCPUでsteal timeが実際に発生している場合のみ検討する価値があります。支払う前に計測してください。 |
共有vCPUプランでのCPU推論は、同じモデルをApple Siliconで動かす場合よりおよそ一桁遅く、さらに共有プランでは他テナントによるsteal timeも起こり得ます。ローカルモデルに対話的な速度を求めるならVPSは形が合いません。VPSは常時稼働のゲートウェイに使い、モデルは自前のハードウェアかホスト型APIに置いてください。
サーバーの用意
この順序で進めてください。SSHを固める前に非特権ユーザーを作るのは、締め出された場合にHetznerのWebコンソールから復旧できるからです。とはいえ、締め出されない方がはるかに楽です。
# On your laptop — generate a key if you do not already have one: ssh-keygen -t ed25519 -C "openclaw-vps" # Paste the PUBLIC key (~/.ssh/id_ed25519.pub) into Hetzner Cloud # when creating the server. Never upload the private key anywhere.
公開サーバーのパスワードログインは、IPが有効になってから数分で攻撃されます。最初から鍵を使ってください。秘密鍵は手元のマシンから出しません。
ssh root@<server-ip> apt update && apt full-upgrade -y apt install -y curl git ufw fail2ban unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades
unattended-upgradesは自宅よりVPSで重要です。このマシンは常時インターネットに晒され、あなたは見ていないからです。
adduser --disabled-password --gecos "" deploy usermod -aG sudo deploy rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy/ # verify you can log in as deploy in a SECOND terminal # before you close this one: # ssh deploy@<server-ip>
rootセッションを閉じる前に、別のターミナルで新ユーザーがログインできることを確認してください。飛ばして後悔するのがこの手順です。
curl -fsSL https://openclaw.ai/install.sh | bash openclaw --version openclaw doctor
rootではなくdeployユーザーで導入します。このサービスにroot権限は不要で、与えると単一の脆弱性が全体の侵害に直結します。
何かを公開する前に固める
セルフホストのエージェントは各種アカウントの認証情報を持ち、しばしば他マシンへのシェルアクセスも持ちます。一般的な趣味のVPSより価値の高い標的なので、この節は任意ではなく必須と考えてください。
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config sudo sshd -t && sudo systemctl reload ssh
sshd -t はreload前に設定を検証します。この確認を飛ばすのは、リモートマシンから締め出される典型的な手順です。
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH sudo ufw enable sudo ufw status verbose # Note what is NOT here: port 18789 is never opened.
重要なのは書かれていない行です。ゲートウェイのポートは一度も公開しません。インターネットから到達可能なエージェントのエンドポイントは、あなたの認証情報を背後に持つリモートコード実行面です。
# Bind the gateway to loopback only. openclaw config set gateway.bind 127.0.0.1 openclaw config set gateway.port 18789 # Reach it from your laptop over an SSH tunnel instead: # ssh -N -L 18789:127.0.0.1:18789 deploy@<server-ip> # then open http://127.0.0.1:18789 locally.
SSHトンネルなら、ポートを公開せず、追加のサービスを守る必要もなく、手元でWeb UIを開けます。Webhook用に公開HTTPSエンドポイントが必要な場合も、ポートを開けるのではなく認証付きのトンネルを使ってください。
sudo systemctl enable --now fail2ban sudo fail2ban-client status sshd # and confirm the firewall survived a reboot: sudo reboot # ... then: sudo ufw status
次の再起動までしか存在しない設定はルールではありません。再起動して再確認してから、このマシンを完了とみなしてください。
VPSが正解でない場合
- ✗ローカルモデルに速度を求める場合。GPUがなければ、どのプランでも実現しません。
- ✗扱う内容が機微で、データが他社のハードウェア上に置かれることを受け入れられない場合。
- ✗どのみち常時稼働しているマシンを既に持っている場合。月額料金と比べれば、自宅のMac MiniやPiの電気代はほぼ増分になりません。
- ✗GPUが必要なのは時々だけの場合。その処理はGPUを時間借りし、それができないCPUマシンに月額を払わないでください。