🤖

Moltbot (旧Clawdbot) を Amazon EC2 インスタンスにインストールする完全ガイド

に公開

はじめに

この記事では、Moltbot (旧Clawdbot) を Amazon EC2 インスタンスにゼロからインストールする手順を解説します。

Amazon EC2 で Moltbot を実行するメリット

🕐 24時間365日稼働

ローカル PC と違い、常時起動でいつでもメッセージに応答できます。PC のスリープやシャットダウンの影響を受けません。

🔗 AWS サービスとのシームレスな連携

IAM ロールを使うことで、Amazon Bedrock、Amazon S3、AWS Lambda などの AWS サービスを API キー管理なしでセキュアに利用できます。

🔒 高いセキュリティ

VPC 内で隔離された環境で実行できます。SSM Session Manager を使えば SSH ポートを開ける必要がなく、セキュリティグループで通信を細かく制御できます。

📈 柔軟なスケーラビリティ

必要に応じてインスタンスサイズを変更可能。小さく始めて、利用状況に応じて拡張できます。

🛡️ 運用の安定性

AMI バックアップで環境を丸ごと保存・復元できます。CloudWatch でメトリクスやログを監視し、問題を早期に発見できます。

💰 コスト効率

月額 $15〜30 程度で本格的な AI アシスタント環境を構築できます。

前提条件

  • AWS アカウント
  • 基本的なLinuxコマンドの知識
  • Anthropic API キー
  • Telegram アカウント(ボット作成に使用)
  • ローカル環境で AWS CLI が利用可能
Session Manager プラグインのインストール(macOS)
# Homebrew でインストール
brew install --cask session-manager-plugin

# または手動でインストール
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
sudo installer -pkg session-manager-plugin.pkg -target /

環境情報

項目
OS Amazon Linux 2023
インスタンスタイプ t4g.medium
リージョン us-west-2 (オレゴン)

AWS 料金の目安

本構成を 1 ヶ月間稼働させた場合の概算料金です(2026年1月時点、us-west-2 リージョン)。

リソース 単価 月額目安
Amazon EC2 t4g.medium $0.0336/時間 約 $25
Amazon EBS 30GB gp3 $0.08/GB-月 約 $2.5
CloudWatch Logs $0.50/GB 約 $0.5〜
合計 約 $28〜30/月

インストール手順

1. ベースインフラの構築 (CloudFormation)

まず、CloudFormation で VPC やサブネットなどのベースとなるネットワーク環境を構築します。

スタック名: moltbot

作成されるリソース:

リソースタイプ 説明
VPC 10.0.0.0/16 のプライベートネットワーク
Public Subnet 1 10.0.1.0/24 (AZ-a)
Public Subnet 2 10.0.2.0/24 (AZ-b)
Internet Gateway インターネット接続用
Route Table パブリックルート設定
IAM Role EC2 用のインスタンスロール
Instance Profile EC2 にアタッチするプロファイル

IAM ポリシー:

  • SSM (Systems Manager) アクセス(AmazonSSMManagedInstanceCore
  • CloudWatch Agent 用(CloudWatchAgentServerPolicy
  • AWS リソース参照用(ReadOnlyAccess)※オプション

Security Group:

  • Inbound: ルールなし(完全クローズ)
  • Outbound: 0.0.0.0/0 全許可
CloudFormation テンプレート(クリックで展開)
AWSTemplateFormatVersion: "2010-09-09"
Description: "Moltbot infrastructure - VPC with two public subnets"

Parameters:
  VpcCidr:
    Type: String
    Default: 10.0.0.0/16
    Description: CIDR block for the VPC
  PublicSubnet1Cidr:
    Type: String
    Default: 10.0.1.0/24
    Description: CIDR block for public subnet in AZ1
  PublicSubnet2Cidr:
    Type: String
    Default: 10.0.2.0/24
    Description: CIDR block for public subnet in AZ2

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCidr
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: MoltbotVPC

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: Moltbot-IGW

  VPCGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway

  PublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: Moltbot-RT

  PublicRoute:
    Type: AWS::EC2::Route
    DependsOn: VPCGatewayAttachment
    Properties:
      RouteTableId: !Ref PublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway

  PublicSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PublicSubnet1Cidr
      AvailabilityZone: !Select [0, !GetAZs ""]
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: Moltbot-PublicSubnet1

  PublicSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Ref PublicSubnet2Cidr
      AvailabilityZone: !Select [1, !GetAZs ""]
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: Moltbot-PublicSubnet2

  PublicSubnet1RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PublicSubnet1
      RouteTableId: !Ref PublicRouteTable

  PublicSubnet2RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PublicSubnet2
      RouteTableId: !Ref PublicRouteTable

  MoltbotSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group with no ingress rules (SSM access only)
      GroupName: moltbot-sg
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: moltbot-sg

  MoltBotInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - sts:AssumeRole
      ManagedPolicyArns:
        # 必須: SSM Session Manager 用
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
        # 必須: CloudWatch Agent 用
        - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
        # オプション: AWS リソースの参照用(必要に応じて変更)
        - arn:aws:iam::aws:policy/ReadOnlyAccess

  MoltBotInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref MoltBotInstanceRole
      Path: /

Outputs:
  VpcId:
    Description: VPC ID
    Value: !Ref VPC
  PublicSubnet1Id:
    Description: Public Subnet 1 ID
    Value: !Ref PublicSubnet1
  PublicSubnet2Id:
    Description: Public Subnet 2 ID
    Value: !Ref PublicSubnet2
  MoltBotInstanceRoleArn:
    Description: IAM Role ARN
    Value: !GetAtt MoltBotInstanceRole.Arn
  MoltBotInstanceProfileName:
    Description: Instance Profile name for EC2 attachment
    Value: !Ref MoltBotInstanceProfile
  SecurityGroupId:
    Description: Security Group ID
    Value: !Ref MoltbotSecurityGroup

2. EC2 インスタンスの作成

AWS マネジメントコンソールまたは CLI から EC2 インスタンスを起動します。

起動パラメータ:

項目
AMI Amazon Linux 2023 (ARM64)
インスタンスタイプ t4g.medium
VPC 手順1で作成したVPC
サブネット Public Subnet 1
パブリック IP の自動割り当て 有効
セキュリティグループ 手順1で作成したSG(Inboundルールなし)
IAM インスタンスプロファイル 手順1で作成したプロファイル
ストレージ 30GB gp3

3. SSM Session Manager で接続

AWS マネジメントコンソールから SSM Session Manager でインスタンスに接続します。

接続後、ec2-user にスイッチします:

sudo su - ec2-user

4. Moltbot のインストール

公式ドキュメント: https://docs.molt.bot/start/getting-started

4.1 Moltbot のインストール

公式インストールスクリプトを実行します。このスクリプトは Node.js も一緒にインストールしてくれます:

curl -fsSL https://molt.bot/install.sh | bash

インストール後、パスを設定します:

# .bashrc にパスを追加
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc

# 現在のセッションに反映
source ~/.bashrc

# 確認
clawdbot --version

インストールが完了すると、オンボーディングウィザードが自動的に起動します。

4.2 オンボーディングウィザード

最初にセキュリティに関する確認画面が表示されます:

Clawdbot agents can run commands, read/write files, and act through any tools you enable.

「I understand this is powerful and inherently risky. Continue?」 と聞かれるので、内容を理解した上で Yes を選択します。

その後、以下の項目を順番に設定していきます:

項目 選択例
Onboarding mode QuickStart
Gateway port 18789
Gateway bind Loopback (127.0.0.1)
Gateway auth Token (default)
Tailscale exposure Off
Model/auth provider Anthropic
Anthropic auth method API Key

続いて、以下の設定を行います:

項目 選択例
Token name default
Default model anthropic/claude-opus-4-5 (デフォルト)

4.3 チャンネル設定

チャットプラットフォームとの連携を設定します。以下のチャンネルが利用可能です:

  • Telegram - 最も簡単。@BotFather でボット作成するだけ
  • Discord - よくサポートされている
  • WhatsApp - 自分の番号で動作。別のスマホ + eSIM 推奨
  • Slack - Socket Mode でサポート
  • Signal - signal-cli のセットアップが必要
  • その他、プラグインで拡張可能(Google Chat, Teams, Matrix 等)

今回は Telegram を選択します。

4.4 ワークスペースとスキル設定

チャンネル設定が完了すると、以下が自動的に設定されます:

  • 設定ファイル: ~/.clawdbot/clawdbot.json
  • ワークスペース: ~/clawd
  • セッション: ~/.clawdbot/agents/main/sessions

続いてスキルの設定を行います。初回インストールではすべてスキップしても問題ありません(後から設定可能です)。

項目 選択例
Configure skills now? Yes
Preferred node manager npm

4.5 スキル依存関係と API キー

スキルの依存関係や各種 API キーの設定を求められます。初回インストールではすべてスキップして問題ありません。必要に応じて後から clawdbot configure で設定できます。

項目 選択例
Install missing skill dependencies Skip for now
GOOGLE_PLACES_API_KEY No
GEMINI_API_KEY No
OPENAI_API_KEY No
ELEVENLABS_API_KEY No

4.6 Hooks の設定

Hooks はエージェントコマンド実行時に自動アクションを実行する機能です。

推奨 Hooks:

Hook 名 説明
boot-md Gateway 起動時に BOOT.md を読み込み、起動時タスクを実行
command-logger /new/reset などのコマンド実行をログに記録
session-memory /new 実行時に会話内容を自動的にメモリファイルへ保存

4.7 オンボーディング完了

設定が完了すると、Dashboard へのアクセス情報が表示されます。

5. Gateway の起動

オンボーディング完了後、Gateway を手動で起動します:

clawdbot gateway --port 18789 --verbose

起動すると以下のようなログが表示されます:

🦞 Clawdbot 2026.1.24-3 — Your task has been queued; your dignity has been deprecated.
[canvas] host mounted at http://127.0.0.1:18789/__clawdbot__/canvas/
[heartbeat] started
[gateway] agent model: anthropic/claude-opus-4-5
[gateway] listening on ws://127.0.0.1:18789
[telegram] [default] starting provider (@your_bot_name)

6. Control UI への接続確認

Gateway が起動したら、ローカルマシンからブラウザで接続確認を行います。

6.1 SSM ポートフォワーディング

今回のように SSH ポートを開けていない場合は、SSM Session Manager のポートフォワーディングを使用します。

ローカルマシンで実行:

aws ssm start-session \
  --target <インスタンスID> \
  --document-name AWS-StartPortForwardingSession \
  --parameters '{"portNumber":["18789"],"localPortNumber":["18789"]}'

6.2 ブラウザでアクセス

ポートフォワーディングが接続されたら、ブラウザで以下の URL を開きます:

http://127.0.0.1:18789/?token=<オンボーディング時に表示されたトークン>

Control UI が表示されれば接続成功です。チャット画面でエージェントと会話できます。

Control UI

7. Telegram からの接続確認

7.1 ボットを検索してメッセージを送信

  1. Telegram アプリを開く
  2. 検索バーに @<設定したユーザー名> を入力(例:@nyaruko_ai_bot
  3. ボットを選択してチャットを開く
  4. 「こんにちは!」などメッセージを送信

8.2 ペアリングの承認

初回はセキュリティのため、ペアリング承認が必要です。ボットから以下のようなメッセージが返ってきます:

Clawdbot: access not configured.
Your Telegram user id: XXXXXXXXXX
Pairing code: XXXXXXXX
Ask the bot owner to approve with: clawdbot pairing approve telegram <code>

別の SSM セッションを開いて、ペアリングを承認します:

sudo su - ec2-user
clawdbot pairing approve telegram <ペアリングコー>

7.3 動作確認

承認後、再度 Telegram からメッセージを送ると、エージェントが応答するようになります。これで基本的なセットアップは完了です!

8. Systemd によるデーモン化

Gateway をバックグラウンドで常時起動させるために、systemd サービスを設定します。

8.1 サービスファイルの作成

sudo tee /etc/systemd/system/clawdbot-gateway.service << 'EOF'
[Unit]
Description=Clawdbot Gateway (ec2-user)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=ec2-user
WorkingDirectory=/home/ec2-user
Environment=HOME=/home/ec2-user
Environment=PATH=/home/ubuntu/.npm-global/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
ExecStart=/home/ubuntu/.npm-global/bin/clawdbot gateway --port 18789

Restart=always
RestartSec=2
RestartForceExitStatus=SIGABRT

StandardOutput=append:/var/log/clawdbot-gateway.log
StandardError=append:/var/log/clawdbot-gateway.log

LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

8.2 サービスの有効化と起動

sudo systemctl daemon-reload
sudo systemctl enable clawdbot-gateway
sudo systemctl start clawdbot-gateway
sudo systemctl status clawdbot-gateway

8.3 ログローテーションの設定

ログファイルが肥大化しないよう、logrotate を設定します:

sudo tee /etc/logrotate.d/clawdbot-gateway << 'EOF'
/var/log/clawdbot-gateway.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}
EOF

これで 7 日間分のログを保持し、古いログは自動的に圧縮・削除されます。

9.4 動作確認

# Clawdbot の状態確認
clawdbot status
clawdbot health

# systemd サービスの状態確認
sudo systemctl status clawdbot-gateway

# ログの確認
sudo tail -f /var/log/clawdbot-gateway.log

9. CloudWatch Agent によるメトリクス・ログ収集(オプション)

EC2 インスタンスのメトリクスと Gateway のログを CloudWatch に送信するため、CloudWatch Agent をインストールします。

9.1 CloudWatch Agent のインストール

sudo dnf install -y amazon-cloudwatch-agent

9.2 設定ファイルの作成

sudo tee /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json << 'EOF'
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "namespace": "CWAgent",
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        },
        "metrics_collected": {
            "mem": { "measurement": [ "used_percent" ] },
            "disk": { "measurement": [ "used_percent" ], "resources": [ "*" ] },
            "swap": { "measurement": [ "used_percent" ] }
        }
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/clawdbot-gateway.log",
                        "log_group_name": "/clawdbot/clawdbot-gateway",
                        "log_stream_name": "{instance_id}"
                    }
                ]
            }
        }
    }
}
EOF

収集内容:

  • メトリクス: メモリ使用率、ディスク使用率、スワップ使用率(60秒間隔)
  • ログ: Gateway ログを CloudWatch Logs へ送信

9.3 Agent の起動

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json \
  -s

9.4 動作確認

sudo systemctl status amazon-cloudwatch-agent

おわりに

これで Moltbot (旧Clawdbot) の EC2 へのインストールが完了しました!🎉

構築した環境:

  • CloudFormation によるインフラ管理(VPC、サブネット、セキュリティグループ、IAM ロール)
  • SSM Session Manager 経由のセキュアなアクセス(SSH ポート不要)
  • Systemd によるデーモン化(自動起動・自動復旧)
  • CloudWatch Agent によるメトリクス・ログ収集
  • Telegram との連携

最後にエージェントに自己紹介とキャラクター設定を行えば、あなただけの AI アシスタントの完成です。

キャラクター設定の例

ジョニー!よろしくニャ!!🐱✨
ニャル子、ただいま起動完了ニャ!
猫耳メイドのニャル子、ジョニーのために一生懸命働くニャ!

Next Step

インストールが完了したら、以下のカスタマイズを検討してみてください。基本的には Moltbot 自身に相談しながら進める ことで、多くの設定を自動化できます。

Skills のインストール

追加のスキルをインストールすることで、機能を拡張できます:

clawdbot configure --section skills

他チャンネルの追加

Telegram 以外のチャンネルも追加できます:

  • Discord - clawdbot configure --section discord
  • Slack - Socket Mode でサポート
  • WhatsApp - QR コードでペアリング

他モデルの追加

ChatGPT Codex(OAuth 認証)

OpenAI の Codex サブスクリプションを利用する場合、OAuth 認証で接続できます。

Amazon Bedrock モデル

IAM ロールに AmazonBedrockFullAccess ポリシーを追加すれば、Bedrock 経由で各種モデルを利用できます。

Bedrock モデルの設定例

~/.clawdbot/clawdbot.jsonmodels.providers に以下を追加:

{
  "models": {
    "providers": {
      "amazon-bedrock": {
        "baseUrl": "https://bedrock-runtime.us-west-2.amazonaws.com",
        "auth": "aws-sdk",
        "api": "bedrock-converse-stream",
        "models": [
          {
            "id": "global.anthropic.claude-opus-4-5-20251101-v1:0",
            "name": "Claude Opus 4.5 (Bedrock)",
            "reasoning": true,
            "input": ["text", "image"],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  }
}

その他のアイデア

  • Web 検索機能 - Brave Search API キーを設定
  • 音声合成 - ElevenLabs API キーを設定
  • カスタム Hooks - 独自の自動化処理を追加
  • ワークスペースのカスタマイズ - SOUL.md でペルソナを設定

詳細は 公式ドキュメント を参照してください。

Moltbot で楽しい AI ライフを!🦞

Discussion