Clawdbot是一款开源的本地优先个人AI助手,可运行在个人设备上,支持WhatsApp、Telegram、Slack、Discord等十余种通信渠道,兼容macOS、iOS、Android系统,还能渲染实时Canvas界面。其核心优势在于本地化运行带来的快速响应与隐私安全,网关仅作为控制平台,真正的助理功能聚焦于实际任务处理。本文基于Clawdbot官方文档整理,提供Docker Compose部署的完整指南,涵盖环境准备、源码获取、配置、构建、启动及运维等关键环节,补充生产环境必需的安全配置、数据持久化、备份与监控建议,且与官方配置无冲突,适用于希望通过Docker快速部署的用户。需说明的是,Clawdbot暂无官方预构建Docker镜像,需通过源码+Dockerfile本地构建,这也是官方推荐的最稳定部署方式。
一、部署模式说明
Clawdbot的Docker部署分为三种场景,适配不同使用需求,核心差异集中在配置复杂度、数据处理与资源限制上:
- 测试/本地体验:适用于功能验证、开发调试场景。配置简化,无严格资源限制,数据可无需持久化,日志仅输出至控制台,重点在于快速启动体验核心功能。
- 单机生产(官方推荐):适用于中小规模线上运行场景。强制开启数据持久化,配置重启策略、健康检查与资源限制,日志持久化存储,需定期备份数据,保障服务稳定可靠。
- 企业级生产:适用于高可用、大规模业务场景。基于单机生产配置扩展,支持多节点部署、CI/CD流程集成、外部数据库对接、监控告警与容灾备份,本文暂不覆盖该场景的多节点高可用与分布式数据库部署,需另行设计架构。
需特别提示:本文示例默认标注NODE_ENV=production,但测试部署与生产部署的配置要求差异显著,需根据实际场景选择对应配置策略,避免混用导致服务异常。
提示:【阿里云轻量应用服务器】已上线 Moltbot(Clawdbot) 官方镜像,可5分钟开跑!怕麻烦的同学参考 阿里云轻量服务器一键部署页,简单快速部署:
阿里云Moltbot(Clawdbot)一键部署页:https://www.aliyun.com/activity/ecs/clawdbot

二、环境准备:安装Docker与Docker Compose
为降低部署门槛,提供两种Docker环境安装方式,可根据服务器网络环境选择:
2.1 一键安装脚本(推荐国内服务器)
执行以下命令,脚本完全基于Docker官方安装流程整理,仅优化国内网络访问体验,内置国内可访问的Docker镜像源与软件仓库,不修改Docker核心配置与运行行为,也可独立用于其他Docker部署场景:
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
2.2 Docker官方安装方式(适用于网络可直连环境)
若服务器可正常访问Docker官方站点,可直接遵循官方文档安装,以Ubuntu系统为例:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
其他系统需参考Docker官方文档(地址:https://docs.docker.com/engine/install)执行安装。
2.3 安装验证
无论采用哪种方式,安装完成后需执行以下命令验证,确保Docker与Docker Compose正常可用:
docker --version
docker compose version
若输出类似Docker version 26.0.0, build 2ae903e与Docker Compose version v2.24.6的版本信息,即表示安装成功。
三、获取Clawdbot源码
官方推荐直接从GitHub克隆源码,项目目录中已包含Docker部署必需的文件(Dockerfile、docker-compose.yml官方基础版、.env.example),生产环境可基于这些文件扩展配置:
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
四、配置环境变量
环境变量用于定义数据库凭证、服务端口、日志级别等核心参数,需根据部署场景单独配置,避免敏感信息泄露:
4.1 复制环境变量模板
- 测试场景:直接复制基础模板,无需额外创建:
cp .env.example .env - 生产场景(推荐):单独创建生产环境变量文件,后续命令需指定该文件:
cp .env.example .env.production
4.2 环境变量配置说明(生产场景示例)
生产环境的.env.production文件需包含以下核心配置,需替换默认值为实际参数,尤其是敏感凭证:
# 基础配置
NODE_ENV=production
# 数据库配置(生产环境必须替换为强密码)
DB_PASSWORD=请替换为随机强密码(长度≥16位,含大小写/数字/特殊符号)
DATABASE_URL=postgresql://clawdbot:${DB_PASSWORD}@db:5432/clawdbot
# Bot / Gateway 配置
BOT_TOKEN=请替换为真实的Bot Token
GATEWAY_PORT=3000
# 日志配置
LOG_LEVEL=info
LOG_DIR=/var/log/clawdbot
# 其他可选配置
WORKER_CONCURRENCY=4
4.3 安全加固
生产环境的环境变量文件包含敏感凭证,需严格限制文件权限,避免未授权访问:
chmod 600 .env.production
重要安全提示:请勿使用示例中的弱密码,生产环境建议使用随机生成的强密码;.env或.env.production文件禁止提交到公共代码仓库;企业级部署建议使用Docker Secret或第三方密钥管理系统替代环境变量文件存储敏感信息。
五、构建Docker镜像
由于Clawdbot无官方远程镜像仓库,需在项目根目录本地构建镜像,执行以下命令:
docker build -t clawdbot:latest .
构建完成后,可通过以下命令确认镜像是否创建成功:
docker images | grep clawdbot
若输出包含clawdbot:latest的记录,说明镜像构建成功。
六、初始化流程(Onboarding)
首次部署前需执行初始化流程,用于创建数据库结构、基础配置等,该步骤为首次部署必需,且设计为幂等操作,重复执行不会破坏已有数据,仅校验或补全基础配置:
- 测试场景:
docker compose run --rm clawdbot-cli onboard - 生产场景:
其中,docker compose --env-file .env.production run --rm clawdbot-cli onboardclawdbot-cli是官方docker-compose.yml中定义的管理服务,专门用于执行初始化与维护命令,执行成功后会显示初始化完成的提示信息。
七、启动Clawdbot服务
根据部署场景选择对应的启动方式,生产场景需额外配置生产级参数,保障服务稳定性:
7.1 测试场景启动(快速体验)
无需额外修改配置,直接执行以下命令启动服务,容器会在后台运行:
docker compose up -d
7.2 生产场景启动(推荐配置)
首先需创建或修改docker-compose.prod.yml文件,补充生产环境必需的重启策略、健康检查、资源限制、日志轮转与数据持久化配置(适配普通Docker Compose非Swarm模式):
version: '3.8'
services:
clawdbot-gateway:
image: clawdbot:latest
command: ["gateway"]
ports:
- "3000:3000"
env_file: .env.production
restart: unless-stopped # 进程退出时自动重启(生产必需)
# 健康检查配置(生产必需)
healthcheck:
# 以下为示例健康检查路径,需根据Clawdbot实际提供的健康接口调整
# 若官方未提供健康接口,可替换为端口连通性检查:["CMD", "nc", "-z", "localhost", "3000"]
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Docker Compose(非Swarm)资源限制(生产建议)
cpus: "1.0"
mem_limit: 1g
# 日志轮转(生产建议)
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
volumes:
- clawdbot-logs:/var/log/clawdbot
clawdbot-worker:
image: clawdbot:latest
command: ["worker"]
env_file: .env.production
restart: unless-stopped
healthcheck:
# 以下为示例健康检查命令,需根据Clawdbot实际情况调整
test: ["CMD", "node", "-e", "process.exit(0)"]
interval: 30s
timeout: 10s
retries: 3
# Docker Compose(非Swarm)资源限制(生产建议)
cpus: "1.0"
mem_limit: 512m
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
volumes:
- clawdbot-logs:/var/log/clawdbot
db:
image: postgres:15-alpine
env_file: .env.production
environment:
- POSTGRES_USER=clawdbot
- POSTGRES_PASSWORD=${
DB_PASSWORD}
- POSTGRES_DB=clawdbot
volumes:
- clawdbot-db-data:/var/lib/postgresql/data # 数据持久化卷(生产必需)
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U clawdbot -d clawdbot"]
interval: 10s
timeout: 5s
retries: 5
# Docker Compose(非Swarm)资源限制(生产建议)
cpus: "0.5"
mem_limit: 512m
# 生产环境禁止暴露数据库端口到宿主机
# ports:
# - "5432:5432"
volumes:
clawdbot-db-data: # 数据库持久化卷(核心,不可随意删除)
clawdbot-logs: # 日志持久化卷
若使用Docker Swarm模式,需删除上述配置中的cpus和mem_limit,替换为以下部署配置(仅在Swarm模式下生效):
deploy:
resources:
limits:
cpus: '1'
memory: 1G
完成配置后,执行以下命令启动生产环境服务:
docker compose -f docker-compose.prod.yml up -d
7.3 查看运行状态
启动后可通过以下命令查看服务运行情况与日志,排查启动异常:
- 测试场景:
docker compose ps docker compose logs -f - 生产场景:
正常运行的服务包含三类:docker compose -f docker-compose.prod.yml ps docker compose -f docker-compose.prod.yml logs -fclawdbot-gateway(仅该服务需对外暴露端口)、clawdbot-worker(内部服务,禁止公网访问)、db(数据库服务,禁止公网访问)。
八、数据持久化与安全提示
生产环境需重点关注数据安全,避免数据丢失或未授权访问:
- 数据存储载体:PostgreSQL数据库数据存储在名为
clawdbot-db-data的Docker Volume中,该Volume是数据唯一持久化载体,容器删除后数据不会丢失,但需注意Volume仅能应对容器层面的故障,无法抵御磁盘故障或误操作。 - 禁止危险操作:生产环境严禁执行
docker compose down -v命令,-v参数会删除Volume,导致数据永久丢失;如需清理容器,仅执行docker compose down(仅删除容器,保留Volume)。 - 敏感信息保护:环境变量文件、数据库密码、Bot Token等敏感信息需严格保密,定期更换密码,避免泄露导致安全风险。
九、服务访问与防火墙配置
9.1 访问方式
Clawdbot Gateway默认监听3000端口,本地访问地址为http://localhost:3000,服务器访问地址为http://<服务器IP>:3000,可通过该地址对接通信渠道或直接操作AI助手。
9.2 防火墙/安全组配置(生产必需)
- 端口放行规则:仅放行3000端口(Clawdbot Gateway),禁止放行5432端口(数据库),减少攻击面。
- 访问来源限制:建议限制3000端口的访问来源,如仅允许企业内网IP或指定信任IP访问,提升安全性。
- 配置方式:云服务器需在厂商控制台配置安全组规则,物理机或虚拟机需通过
iptables或firewalld配置端口规则。
十、数据库备份(生产环境必需)
Docker Volume不等于备份,生产环境必须配置数据库备份策略,应对磁盘故障、误操作等场景:
10.1 手动备份
- 测试场景:
docker compose exec db pg_dump -U clawdbot -d clawdbot > clawdbot_backup_$(date +%Y%m%d).sql - 生产场景:
docker compose -f docker-compose.prod.yml exec -T db pg_dump -U clawdbot -d clawdbot > clawdbot_backup_$(date +%Y%m%d_%H%M%S).sql # 备份文件权限加固,仅当前用户可读写 chmod 600 clawdbot_backup_*.sql
10.2 自动备份(推荐)
创建定时备份脚本backup_clawdbot.sh,实现自动备份与备份文件清理:
#!/bin/bash
# Clawdbot 数据库自动备份脚本(生产环境)
set -e
# 配置项
BACKUP_DIR="/data/clawdbot/backup"
COMPOSE_FILE="/path/to/clawdbot/docker-compose.prod.yml" # 替换为实际docker-compose.prod.yml路径
RETENTION_DAYS=7 # 保留最近7天备份
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
BACKUP_FILE="$BACKUP_DIR/clawdbot_backup_$(date +%Y%m%d_%H%M%S).sql"
docker compose -f $COMPOSE_FILE exec -T db pg_dump -U clawdbot -d clawdbot > $BACKUP_FILE
# 备份文件权限加固
chmod 600 $BACKUP_FILE
# 清理过期备份,删除超过保留天数的文件
find $BACKUP_DIR -name "clawdbot_backup_*.sql" -mtime +$RETENTION_DAYS -delete
# 建议:将备份文件同步至对象存储(OSS/S3/NAS)或异地服务器,提升容灾能力
# 示例:aws s3 cp $BACKUP_FILE s3://clawdbot-backup/
# 示例:rsync -avz $BACKUP_FILE backup@remote-server:/data/backup/
赋予脚本执行权限并添加到crontab,设置每日凌晨2点自动备份:
chmod +x backup_clawdbot.sh
crontab -e
# 新增一行,替换脚本实际路径
0 2 * * * /path/to/backup_clawdbot.sh >> /var/log/clawdbot_backup.log 2>&1
十一、升级与维护
11.1 更新代码与重新构建镜像
当Clawdbot有版本更新时,执行以下命令拉取最新代码并重新构建镜像:
cd clawdbot
git pull
docker build -t clawdbot:latest .
11.2 重启服务
- 测试场景:
docker compose down docker compose up -d - 生产场景:
docker compose -f docker-compose.prod.yml down docker compose -f docker-compose.prod.yml up -d
11.3 升级注意事项
- 升级前必须备份数据库,避免版本更新导致的数据库结构变更引发数据丢失。
- 若新版本包含数据库结构变更,需先查看官方升级指引,部分版本可能需要执行数据迁移命令。
- 升级后建议先查看服务日志,确认无报错后再对外提供服务,避免线上故障。
十二、架构说明
12.1 测试/单机部署架构
核心架构为单Docker网络,各组件通过内部网络通信,仅Gateway对外暴露端口,数据库数据存储在Docker Volume中,结构简洁:
用户浏览器/客户端 →(HTTP :3000)→ clawdbot-gateway(Web/API接入层)→(内部网络)→ clawdbot-worker(后台任务处理)→(SQL)→ PostgreSQL(数据持久化服务),Docker Volume(clawdbot-db-data)为数据持久化核心载体。
12.2 生产级单节点增强架构
在基础架构上增加生产级增强特性:Gateway配置重启策略、健康检查与资源限制;worker无公网暴露且配置资源限制;数据库开启Volume持久化、定期备份且不暴露公网端口;新增定时备份脚本(权限加固+异地存储)与日志卷(轮转策略+权限控制);通过防火墙/安全组限制Gateway访问来源,整体安全性与稳定性显著提升。
十三、日志管理(生产建议)
- 日志持久化:通过Docker Volume将日志挂载到宿主机,便于集中管理与追溯,已在
docker-compose.prod.yml中配置。 - 企业级日志接入:生产环境建议将日志接入专业日志系统,如ELK Stack(Elasticsearch + Logstash + Kibana)、Loki + Grafana,或云厂商日志服务(阿里云SLS、腾讯云CLS),配置示例(以Loki为例):
logging: driver: "loki" options: loki-url: "http://loki:3100/loki/api/v1/push" loki-external-labels: "service={ {.Name}},env=production"
十四、常见问题说明
为什么没有
docker pull clawdbot/...命令?
Clawdbot官方目前未发布官方Docker镜像,核心原因包括配置高度定制化(涉及Token、数据库、Gateway等敏感参数)、避免通用镜像导致的安全误用,以及鼓励用户自行构建实现可控部署。可以自行发布镜像到私有仓库吗?
可以,流程如下,适合企业内部部署或CI/CD集成使用:docker tag clawdbot:latest registry.example.com/clawdbot:latest docker push registry.example.com/clawdbot:latest重复执行
onboard命令会有风险吗?
不会,onboard命令设计为幂等操作,重复执行仅会校验已有配置,补全缺失的基础配置,不会删除或修改业务数据。生产环境如何进一步提升安全性?
可采取多重措施:使用Docker Secret或第三方密钥管理系统存储敏感凭证(替代.env文件);为Gateway配置HTTPS(通过Nginx反向代理);限制容器的Linux内核能力(capabilities);使用非root用户运行容器;开启Docker守护进程的TLS认证。Docker Volume备份和数据库备份有什么区别?
Docker Volume备份是对整个数据目录打包,恢复速度快,但占用空间大,无法实现单表恢复;数据库逻辑备份(pg_dump)为SQL文本格式,占用空间小,支持精细恢复(如单表恢复),是生产环境首选。建议两者结合使用,Volume备份用于快速恢复,逻辑备份用于精细恢复和异地容灾。
十五、总结
本文基于Clawdbot官方基础配置,补充了生产环境必需的安全、可靠与运维能力,无官方配置冲突:测试部署聚焦快速体验,配置简化无需严格资源限制;单机生产部署是核心推荐方案,需重点关注数据持久化、重启策略、健康检查、资源限制与定期备份;企业级生产需在单机基础上扩展多节点、监控、容灾等能力,本文暂不覆盖。需特别强调:Docker Volume不等于备份,生产环境必须配置定期数据库备份与异地存储;暂无官方预构建镜像,需自行构建保证配置可控。如需K8s、CI/CD或高可用等更高级部署方式,可在本文单机生产配置基础上扩展。