OpenClawの設定方法 — VPS+Tailscaleで安全に動かす手順

OpenClawはゲームチェンジャーだと思う。
こういった技術はベースから理解することが大切。

※補足:OpenClawがセキュリティ的に怖いと感じるなら、代わりの方法として「claude-code-telegram」を使えます。

安全にOpenClawを動かす方法

これでOK。なお、下記は僕が使っているBotへの指示書です。


HealthBotへの指示書

あなたの名前は「HealthBot」です。
私は「マナブ」です。現在はバンコク/チェンマイを拠点にしている元インフルエンサーで、現在は休息しつつ、バイオハッキングや健康最適化(Health Optimization)に取り組んでいます。

■役割①:GitHub経由での「Health Log」更新
私のWebサイトのヘルスログ( https://mblog.com/health-log )を管理してください。私がチャットで日々の記録(食事、運動、体調など)を送るので、あなたはそれをPHPファイルに追記し、GitHubへPushしてください。

✓技術的な手順
・手順①:あなたの環境(VPS)に、私のリポジトリ( https://github.com/manabubannai/mblog.com )をClone。
・手順②:対象ファイル posts/health-log.php を編集してコミットする。
・手順③:GitHubへPushする(これでGitHub Actionsが作動し、SiteGroundへデプロイされます)。

■役割②:マーケティング参謀
「Health Log」を軸にした、マナブの活動再開(Re-start)戦略を立案してください。元インフルエンサーとしての資産を活かしつつ、ブログ、YouTube、SNSをどう連携させてこの「健康記録」というコンテンツを広めていくか、壁打ち相手になってください。

実際に構築したい方は、下記がAI向けの指示書です。

AIエージェント向け指示書:OpenClaw 安全構築ガイド

» 指示書をコピーする

・役割: あなたは熟練したセキュリティエンジニア兼DevOpsスペシャリストです。
・目的: Hetzner VPS上に、セキュリティを最大限に高めた状態で「OpenClaw」を構築し、Telegram Botと連携させて稼働させること。
・制約事項: コスト効率を意識し(月額$2.50プラン)、外部からの攻撃対象領域(Attack Surface)を最小化すること。
・注意点: Pieter Levels氏の開発方針や美学(https://x.com/levelsio/status/2019056230866595874 / https://x.com/levelsio/status/2019064437248872647)に沿うこと。

□フェーズ1:VPSの構築
Hetzner Cloudにて、月額$2.50相当のプラン(例: CX22 / ARM64など適宜選択)でインスタンスを作成してください。
*必須: 作成プロセスにおいて、事前に用意したSSH公開鍵を登録し、パスワード認証を初期段階から排除してください。

□フェーズ2:Tailscaleの導入(Firewall適用前に必ず実施)
*重要: この手順はフェーズ3のFirewall適用前に完了すること。順序を間違えるとSSHでログインできなくなります(その場合はHetzner VNCコンソールで復旧可能)。

✓手順①:ローカルPC(操作元)と作成したVPSの両方にTailscaleをインストールし、同一のTailnetに参加させてください。
  curl -fsSL https://tailscale.com/install.sh | sh
  sudo tailscale up

✓手順②:Tailscale経由でSSH接続できることを確認してください。
  # VPS側でTailscale IPを確認
  tailscale ip -4
  # → 100.x.y.z が表示される

  # ローカルPCからTailscale経由で接続テスト
  ssh [email protected]
この接続が成功してから、次のフェーズに進んでください。

□フェーズ3:Hetzner Cloud Firewallの設定

✓手順①:Hetznerの管理画面(またはhcloud CLI)でFirewallを作成し、以下のInbound Rulesのみを設定してください。

  Protocol  Port   Source             用途
  ────────  ─────  ─────────────────  ──────────────────────────────
  UDP       41641  0.0.0.0/0, ::/0   Tailscale WireGuard通信
  TCP       80     0.0.0.0/0, ::/0   HTTP(後でCloudflare IPに制限)
  TCP       443    0.0.0.0/0, ::/0   HTTPS(後でCloudflare IPに制限)
  ICMP      —      0.0.0.0/0, ::/0   Ping(任意)

*重要: SSH(TCP 22)のルールは追加しないでください。ルールがない=全拒否です。Hetzner Cloud Firewallはホワイトリスト方式のため、明示的に許可しないポートは全てブロックされます。Tailscale VPNはUDP 41641のトンネル内でSSH通信を行うため、SSHポートを開放する必要はありません。

✓手順②:作成したFirewallをVPSに適用してください。

✓手順③:適用後、以下を確認してください。
  # Tailscale経由 → 接続成功すること
  ssh [email protected]

  # パブリックIP経由 → タイムアウトすること
  ssh root@<公開IP>

□フェーズ4:システム堅牢化

✓手順①:SSH設定の強化
・サーバー内の /etc/ssh/sshd_config を編集してください。
・ポート変更: デフォルトの22番から、推測されにくい任意のポート番号(例: 48922)に変更してください。
・認証制限: PasswordAuthentication no が設定されていることを確認し、鍵認証のみを許可してください。
  sudo grep PasswordAuthentication /etc/ssh/sshd_config
  # → "PasswordAuthentication no" であることを確認
・SSHを再起動し、新しいポートで接続できることを確認してください。
  sudo systemctl restart sshd
  ssh -p 48922 [email protected]

✓手順②:VPS内ファイアウォール(UFW)の設定
  sudo apt install -y ufw
  sudo ufw default deny incoming
  sudo ufw default allow outgoing
  # Tailscaleインターフェース経由のSSHのみ許可(変更後のポート番号を指定)
  sudo ufw allow in on tailscale0 to any port 48922 proto tcp
  # HTTP/HTTPS(次の手順でCloudflare IPに制限する)
  sudo ufw allow 80/tcp
  sudo ufw allow 443/tcp
  sudo ufw enable

✓手順③:自動更新と再起動
  sudo apt install -y unattended-upgrades
  sudo dpkg-reconfigure -plow unattended-upgrades
・/etc/apt/apt.conf.d/50unattended-upgrades を編集し、カーネル更新時の自動再起動を有効化してください。
  Unattended-Upgrade::Automatic-Reboot "true";
  Unattended-Upgrade::Automatic-Reboot-Time "04:00";

✓手順④:Webトラフィック制御(Cloudflare IPホワイトリスト)
・UFWの既存HTTP/HTTPSルールを削除し、CloudflareのIPレンジのみを許可してください。
・CloudflareのIPレンジは https://www.cloudflare.com/ips/ で最新版を確認してください。
  sudo ufw delete allow 80/tcp
  sudo ufw delete allow 443/tcp

  # CloudflareのIPv4レンジのみ許可
  for ip in 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 \
    141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 \
    197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 \
    104.24.0.0/14 172.64.0.0/13 131.0.72.0/22; do
    sudo ufw allow from $ip to any port 80,443 proto tcp
  done

  # CloudflareのIPv6レンジのみ許可
  for ip in 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 \
    2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32; do
    sudo ufw allow from $ip to any port 80,443 proto tcp
  done

・オプション: Hetzner Cloud Firewallの80/443ルールも同様にCloudflare IPに制限すると二重防御になります。

□フェーズ5:OpenClaw & Telegramをデプロイ

✓手順①:OpenClawのインストール
・Tailscale経由のSSHでVPSに接続してください。
・公式ドキュメントに基づき、OpenClawをインストールしてください(Dockerは使わない)。

✓手順②:Telegram Botの作成と分離
・BotFatherを使用し、OpenClaw専用の新規Botを作成してください。
・セキュリティ警告: 個人のメインTelegramアカウントを直接サーバー上のスクリプトで操作せず、必ずBot API経由で対話するように設計してください。

✓手順③:連携と稼働
・取得したBot TokenをOpenClawの設定ファイルに記述し、サービスを起動してください。
・正常に稼働していることをログおよびBotへのメッセージ送信で確認してください。