打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

BandwagonHost 部署 Openclaw AI Agent

来自md5.pw
Rosa留言 | 贡献2026年2月13日 (五) 03:36的版本 (BandwagonHost 部署 Openclaw AI Agent)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

本文将详细介绍如何在 Debian 12 服务器上,从零开始构建一个安全、稳固的 OpenClaw AI Agent 环境。我们将涵盖系统初始化、Docker 环境构建、服务编排以及与 Telegram 的集成。

1. 服务器初始化

在开始安装 Docker 之前,需要对新装的 Debian 12 服务器进行一系列的初始化配置。

1.1 系统更新与基础工具安装

首先,我们需要确保所有的系统软件包都是最新的,以修补已知的安全漏洞。

# 更新软件包列表并升级所有已安装的包
sudo apt update && sudo apt upgrade -y

接下来,安装一系列在部署过程中必不可少的基础工具:

  • curl & wget: 用于从网络下载安装脚本。
  • git: 用于拉取代码仓库。
  • htop & net-tools: 系统监控工具。
sudo apt install -y curl wget git nano ca-certificates gnupg lsb-release htop net-tools ufw

1.2 创建非 Root 用户

出于安全考虑,绝对不建议直接以 root 用户身份运行 Docker 容器。我们将创建一个名为 sysadmin 的普通用户,并赋予其 sudo 权限。

# 创建用户 (-m 创建主目录, -s 指定 shell)
useradd -m -s /bin/bash sysadmin

# 设置密码
passwd sysadmin

# 将用户加入 sudo 组
usermod -aG sudo sysadmin

操作提示:完成此步后,建议注销 root,使用新用户 sysadmin 登录系统进行后续操作。

1.3 防火墙 (UFW) 策略配置

为了最大程度减少暴露,我们需要配置 UFW 防火墙。OpenClaw 默认监听 18789 (Gateway) 和 18790 (Bridge) 端口。

# 默认拒绝所有传入,允许所有传出
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH (非常重要!否则会断连)
sudo ufw allow 22/tcp

# 允许 HTTP/HTTPS (用于后续反向代理)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 启用防火墙
sudo ufw enable

安全提示:在生产环境中,建议不要直接开放 18789 端口,而是通过 Nginx 或 Caddy 配置反向代理(参考教程),并通过 443 端口访问。

2. Docker 引擎与 Compose 插件部署

为了确保对最新容器特性的支持,建议使用 Docker 官方仓库进行安装。

2.1 清理旧版本与配置仓库

如果系统预装了旧版的 docker,先进行清理,然后配置官方 GPG 密钥。

# 清理旧版本
sudo apt-get remove docker.io docker-doc docker-compose podman-docker containerd runc

# 创建密钥目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载官方 GPG 密钥
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 写入软件源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.2 安装并验证 Docker

安装 Docker Engine 及最新的 Compose 插件:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置权限并启动服务:

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户加入 docker 组 (免 sudo 执行)
sudo usermod -aG docker $USER
newgrp docker

# 验证安装
docker run hello-world

如果终端输出了 "Hello from Docker!",说明环境准备就绪。

3. OpenClaw 部署架构设计

我们将所有文件集中管理在 ~/openclaw-deploy 目录下。

3.1 目录结构规划

mkdir -p ~/openclaw-deploy
cd ~/openclaw-deploy
mkdir -p config workspace
  • config/: 存储 Agent 的记忆和配置。
  • workspace/: Agent 的工作台,生成的文件存放于此。

3.2 环境变量配置 (.env)

.env 文件是系统的中枢神经。创建并编辑该文件:

nano .env

填入以下配置(请务必修改 Token 和 API Key):

# =========================================
# OpenClaw 核心配置
# =========================================
OPENCLAW_IMAGE=coollabsio/openclaw:latest

# 网关安全令牌 (必须修改的一项!)
# 生成命令: openssl rand -hex 32
OPENCLAW_GATEWAY_TOKEN=请填入您的64位随机十六进制字符串

OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_BRIDGE_PORT=18790
OPENCLAW_GATEWAY_BIND=lan

# =========================================
# AI 模型提供商 (LLM Providers)
# =========================================
# 示例:使用 Anthropic
ANTHROPIC_API_KEY=sk-ant-api03-...
# 或者 OpenAI
# OPENAI_API_KEY=sk-...

# =========================================
# 渠道配置:Telegram 集成
# =========================================
# 通过 @BotFather 获取
TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIjkLmnOpqRsTuVwXyZ
TELEGRAM_DM_POLICY=pairing
# TELEGRAM_ALLOWED_USERS=你的TelegramID

3.3 核心编排文件 (docker-compose.yml)

我们需要一个增强版的 Compose 文件来确保服务高可用。

nano docker-compose.yml

写入以下内容:

services:
  # 服务一:OpenClaw Gateway (核心网关)
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE:-coollabsio/openclaw:latest}
    container_name: openclaw-gateway
    restart: unless-stopped
  
    env_file:
      - .env
  
    environment:
      - HOME=/home/node
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT:-18789}
      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND:-lan}
    
    volumes:
      - ./config:/home/node/.openclaw
      - ./workspace:/home/node/.openclaw/workspace

    ports:
      - "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
      - "${OPENCLAW_BRIDGE_PORT:-18790}:18790"

    init: true

    healthcheck:
      test: curl --fail http://localhost:18789/health || exit 1
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s

  # 服务二:OpenClaw CLI (管理工具)
  openclaw-cli:
    image: ${OPENCLAW_IMAGE:-coollabsio/openclaw:latest}
    container_name: openclaw-cli
    env_file:
      - .env
    volumes:
      - ./config:/home/node/.openclaw
      - ./workspace:/home/node/.openclaw/workspace
    entrypoint: ["tail", "-f", "/dev/null"]
    init: true

4. 启动服务与状态验证

4.1 启动

~/openclaw-deploy 目录下执行:

# 拉取镜像并后台启动
docker compose pull
docker compose up -d

4.2 验证与权限修复

查看日志确认服务是否正常启动:

docker compose logs -f openclaw-gateway

如果遇到 Permission denied 错误,说明容器内 node 用户无法写入挂载目录,需修复权限:

sudo chown -R 1000:1000 config workspace
docker compose restart

5. 连接 Telegram 神经系统

OpenClaw 默认启用了配对模式 (Pairing Protocol) 以防止未授权访问。

  1. 发起对话:在 Telegram 中向你的 Bot 发送 /start
  2. 获取配对码:Bot 会回复一个 6-8 位的代码,例如 X7Z-9Q2
  3. 授权配对:回到服务器终端,执行以下命令批准请求:
# 替换 <CODE> 为你的配对码
docker compose exec openclaw-cli node dist/index.js pairing approve telegram X7Z-9Q2

当终端显示 Approved telegram sender... 时,恭喜你,你的专属 AI Agent 已经上线了!现在开始你有什么问题统统都可以请教它了。

6. 进阶:浏览器自动化

要让 Agent 具备“上网”能力,我们可以添加一个无头浏览器服务。

修改 docker-compose.yml,添加 browser 服务:

  browser:
    image: kasmweb/chrome:1.14.0
    container_name: openclaw-browser
    restart: unless-stopped
    ports:
      - "9222:9222"
    environment:
      - VNC_PW=password
    shm_size: "2gb"

同时在 openclaw-gateway 的环境变量中添加: - BROWSER_CDP_URL=http://browser:9222

重启服务后,你就可以命令 Agent:“打开 Hacker News,总结头条新闻”。

7. 运维与维护

数据备份

创建一个简单的备份脚本 backup.sh

#!/bin/bash
BACKUP_DIR="/home/sysadmin/backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/openclaw_backup_$DATE.tar.gz -C /home/sysadmin/openclaw-deploy config workspace
# 删除 7 天前的备份
find $BACKUP_DIR -name "openclaw_backup_*.tar.gz" -mtime +7 -delete

通过 crontab -e 设置每日备份: 0 3 * * * /bin/bash /home/sysadmin/openclaw-deploy/backup.sh

版本更新

cd ~/openclaw-deploy
docker compose pull
docker compose up -d
docker image prune -f