文章

在AWS ECS部署Clawdbot并配置Qwen+Telegram+Brave搜索

详细教程介绍如何在AWS ECS上部署Clawdbot机器人,并配置Qwen模型、Telegram频道和Brave搜索功能

在AWS ECS部署Clawdbot并配置Qwen+Telegram+Brave搜索

在AWS ECS部署Clawdbot并配置Qwen+Telegram+Brave搜索

概述

Clawdbot是一个强大的多渠道AI助手框架,支持多种消息平台和AI模型。本文将详细介绍如何在AWS ECS(Elastic Container Service)上部署Clawdbot,并配置Qwen模型、Telegram集成和Brave搜索功能。

准备工作

在开始之前,您需要准备以下资源:

  1. AWS账户及访问权限
  2. AWS CLI已安装并配置
  3. Docker已安装
  4. AWS ECS集群
  5. Qwen Portal账户(用于免费的Qwen Coder模型)
  6. Telegram Bot Token
  7. Brave Search API密钥

第一步:创建ECS任务定义

首先,我们需要创建一个ECS任务定义,用于运行Clawdbot容器。创建clawdbot-task-definition.json文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
  "family": "clawdbot-service",
  "executionRoleArn": "arn:aws:iam::YOUR_ACCOUNT_ID:role/ecsTaskExecutionRole",
  "taskRoleArn": "arn:aws:iam::YOUR_ACCOUNT_ID:role/ecsTaskRole",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "1024",
  "memory": "2048",
  "runtimePlatform": {
    "cpuArchitecture": "X86_64",
    "operatingSystemFamily": "LINUX"
  },
  "containerDefinitions": [
    {
      "name": "clawdbot-container",
      "image": "node:22-bookworm",
      "cpu": 1024,
      "memory": 1536,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 18789,
          "protocol": "tcp"
        }
      ],
      "environment": [
        {
          "name": "NODE_ENV",
          "value": "production"
        },
        {
          "name": "CLAWDBOT_GATEWAY_BIND",
          "value": "0.0.0.0"
        },
        {
          "name": "CLAWDBOT_GATEWAY_PORT",
          "value": "18789"
        },
        {
          "name": "CLAWDBOT_GATEWAY_TOKEN",
          "value": "your-gateway-token-here"
        },
        {
          "name": "TELEGRAM_BOT_TOKEN",
          "value": "your-telegram-bot-token"
        },
        {
          "name": "BRAVE_API_KEY",
          "value": "your-brave-api-key"
        },
        {
          "name": "HOME",
          "value": "/home/node"
        }
      ],
      "mountPoints": [
        {
          "sourceVolume": "clawdbot-config",
          "containerPath": "/home/node/.clawdbot"
        },
        {
          "sourceVolume": "clawdbot-workspace",
          "containerPath": "/home/node/clawd"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/clawdbot-service",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "clawdbot-config",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-your-efs-id",
        "rootDirectory": "/clawdbot/config"
      }
    },
    {
      "name": "clawdbot-workspace",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-your-efs-id",
        "rootDirectory": "/clawdbot/workspace"
      }
    }
  ]
}

第二步:构建自定义Docker镜像

为了确保Clawdbot能正常运行,我们需要创建一个包含所有必要依赖的自定义Docker镜像。创建Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
FROM node:22-bookworm

# 安装必要的系统工具
RUN apt-get update && apt-get install -y \
    socat \
    curl \
    ca-certificates \
    git \
    && rm -rf /var/lib/apt/lists/*

# 安装Clawdbot
RUN npm install -g @clawbot/clawdbot

# 安装额外的二进制工具(如果需要)
# 示例:Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# 创建非root用户
RUN groupadd -r nodejs && useradd -r -g nodejs node

# 设置工作目录
WORKDIR /app

# 切换到非root用户
USER node

# 创建必要的目录
RUN mkdir -p /home/node/.clawdbot
RUN mkdir -p /home/node/clawd

EXPOSE 18789

CMD ["clawdbot", "gateway", "--bind", "0.0.0.0", "--port", "18789"]

然后构建并推送镜像到ECS:

1
2
3
4
5
6
7
8
# 构建镜像
docker build -t your-registry-url/clawdbot:latest .

# 登录到ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin your-registry-url

# 推送镜像
docker push your-registry-url/clawdbot:latest

更新任务定义中的镜像地址:

1
2
3
{
  "image": "your-registry-url/clawdbot:latest"
}

第三步:配置Qwen模型

Clawdbot支持通过Qwen Portal的OAuth流程使用Qwen模型。以下是配置步骤:

启用Qwen插件

1
2
# 在容器启动后执行此命令
clawdbot plugins enable qwen-portal-auth

认证Qwen

1
2
# 执行认证流程
clawdbot models auth login --provider qwen-portal --set-default

这将运行Qwen设备码OAuth流程,并在models.json中写入提供程序条目(以及qwen别名用于快速切换)。

Qwen模型ID

  • qwen-portal/coder-model - Qwen Coder模型
  • qwen-portal/vision-model - Qwen Vision模型

切换模型:

1
clawdbot models set qwen-portal/coder-model

第四步:配置Telegram集成

创建Telegram Bot

  1. 在Telegram中与@BotFather对话
  2. 运行/newbot,按照提示创建新机器人
  3. 复制生成的令牌并安全保存

配置Clawdbot

在Clawdbot配置中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "YOUR_TELEGRAM_BOT_TOKEN",
      "dmPolicy": "pairing",
      "groups": {
        "*": {
          "requireMention": true
        }
      }
    }
  }
}

或者通过环境变量设置:

1
export TELEGRAM_BOT_TOKEN=your_bot_token_here

Telegram配置选项

  • dmPolicy: 控制DM访问策略(pairing, allowlist, open, disabled)
  • groupPolicy: 控制群组访问策略(open, allowlist, disabled)
  • groups.*.requireMention: 控制是否需要提及机器人才能响应

第五步:配置Brave搜索

获取Brave Search API密钥

  1. 访问 https://brave.com/search/api/ 创建Brave Search API账户
  2. 在仪表板中选择Data for Search计划并生成API密钥
  3. 将密钥存储在配置中或设置BRAVE_API_KEY环境变量

配置示例

1
2
3
4
5
6
7
8
9
10
11
12
{
  "tools": {
    "web": {
      "search": {
        "provider": "brave",
        "apiKey": "YOUR_BRAVE_API_KEY",
        "maxResults": 5,
        "timeoutSeconds": 30
      }
    }
  }
}

重要注意事项

  • 数据AI计划兼容web_search
  • Brave提供免费套餐加付费计划,检查Brave API门户了解当前限制

第六步:部署到ECS

注册任务定义

1
aws ecs register-task-definition --cli-input-json file://clawdbot-task-definition.json

创建服务

1
2
3
4
5
6
7
aws ecs create-service \
  --cluster your-cluster-name \
  --service-name clawdbot-service \
  --task-definition clawdbot-service:1 \
  --desired-count 1 \
  --launch-type FARGATE \
  --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxx],securityGroups=[sg-xxxxx],assignPublicIp=ENABLED}"

创建负载均衡器(可选)

如果您希望从外部访问Clawdbot控制界面,可以创建Application Load Balancer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建目标组
aws elbv2 create-target-group \
  --name clawdbot-target-group \
  --protocol HTTP \
  --port 18789 \
  --vpc-id your-vpc-id \
  --health-check-path "/" \
  --health-check-protocol HTTP

# 创建负载均衡器
aws elbv2 create-load-balancer \
  --name clawdbot-load-balancer \
  --subnets subnet-xxxxx subnet-yyyyy \
  --security-groups sg-xxxxx

第七步:持久化配置

由于容器是临时的,我们需要确保Clawdbot的配置和状态能够持久保存:

  1. 使用Amazon EFS存储配置文件
  2. 配置卷挂载到/home/node/.clawdbot/home/node/clawd
  3. 确保适当的权限设置

持久化组件

组件位置持久化机制说明
网关配置/home/node/.clawdbot/EFS卷挂载包括clawdbot.json、令牌
模型认证/home/node/.clawdbot/EFS卷挂载OAuth令牌、API密钥
技能配置/home/node/.clawdbot/skills/EFS卷挂载技能级状态
代理工作区/home/node/clawd/EFS卷挂载代码和代理工件
WhatsApp会话/home/node/.clawdbot/EFS卷挂载保留QR登录
Gmail密钥环/home/node/.clawdbot/EFS卷挂载需要GOG_KEYRING_PASSWORD

第八步:监控和维护

日志管理

配置CloudWatch日志组来收集容器日志:

1
2
3
4
5
6
7
8
9
10
{
  "logConfiguration": {
    "logDriver": "awslogs",
    "options": {
      "awslogs-group": "/ecs/clawdbot-service",
      "awslogs-region": "us-east-1",
      "awslogs-stream-prefix": "ecs"
    }
  }
}

健康检查

定期检查服务状态:

1
aws ecs describe-services --cluster your-cluster-name --services clawdbot-service

自动扩展

根据需要配置自动扩展策略:

1
2
3
4
5
6
aws application-autoscaling register-scalable-target \
  --service-namespace ecs \
  --scalable-dimension ecs:service:DesiredCount \
  --resource-id service/your-cluster-name/clawdbot-service \
  --min-capacity 1 \
  --max-capacity 3

故障排除

常见问题

  1. Telegram机器人不响应
    • 检查Bot Token是否正确
    • 确认Telegram隐私设置是否关闭
    • 检查防火墙和网络连接
  2. Qwen模型无法使用
    • 确认插件已启用:clawdbot plugins enable qwen-portal-auth
    • 检查认证状态:clawdbot models auth login --provider qwen-portal --set-default
  3. Brave搜索API错误
    • 验证API密钥是否有效
    • 检查配额是否已满
  4. 容器启动失败
    • 检查IAM角色权限
    • 验证环境变量设置
    • 查看CloudWatch日志获取详细错误信息

性能优化

  1. 根据实际使用情况调整CPU和内存分配
  2. 配置适当的健康检查参数
  3. 使用缓存机制减少重复请求
  4. 定期清理日志和临时文件

总结

通过以上步骤,您已经成功在AWS ECS上部署了Clawdbot,并配置了Qwen模型、Telegram集成和Brave搜索功能。这种架构提供了高可用性、可扩展性和安全性,适合生产环境使用。

记得定期监控服务状态,备份重要配置,并根据使用需求调整资源配置。Clawdbot的强大功能结合AWS ECS的弹性能力,为您提供了可靠的AI助手服务。

注意: 在生产环境中,请确保所有敏感信息(如API密钥、令牌等)都通过安全的方式进行管理和传输。

本文由作者按照 CC BY 4.0 进行授权