阿里云2核2G服务器玩转OpenClaw:Docker安全部署完全指南

4 阅读8分钟

SSH隧道+容器隔离双重防护,新手也能轻松上手,低配置也有高安全


📌 导读

本教程将带你从零开始在阿里云服务器上部署 OpenClaw,采用 Docker 容器化方案实现环境隔离,并通过 SSH 隧道安全访问管理界面。文章包含完整的命令代码、故障排查方案和安全加固建议,适合有一定 Linux 基础的用户。


一、为什么选择Docker部署?

Docker容器化部署相比直接在服务器上安装,具有以下核心安全优势:

安全特性Docker部署直接部署
权限隔离容器内进程被限制,无法操作宿主机进程直接运行在宿主机,被攻破即全盘沦陷
文件系统保护根文件系统只读,恶意代码无法写入任意文件可读写,易被植入后门
资源限制可限制CPU/内存,防止挖矿等攻击无限制,恶意程序可耗尽资源
快速恢复容器被污染后秒级重建需要重装系统或逐文件排查

根据国家互联网应急中心(CNCERT)与中国网络空间安全协会联合发布的《OpenClaw安全使用实践指南》,Docker容器化是推荐的隔离方案之一,可有效防止攻击者从OpenClaw突破到宿主机。


二、准备工作

2.1 服务器环境确认

登录服务器,确认系统信息:

# 登录服务器(注意端口号)
ssh -p 23561 root@你的服务器IP

# 确认系统版本
cat /etc/os-release

本教程基于 Alibaba Cloud Linux 3(兼容CentOS 8)环境编写,其他Linux发行版可适当调整命令。

2.2 创建项目目录

# 创建OpenClaw专用目录
mkdir -p /opt/openclaw/config /opt/openclaw/logs
cd /opt/openclaw

2.3 配置SWAP交换空间(2核2G内存优化)

2核2G内存运行Docker可能紧张,建议增加SWAP空间:

# 增加2GB swap空间
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

# 验证swap已启用
free -h

三、安装Docker

3.1 安装必要插件(Alibaba Cloud Linux 3专用)

# 安装dnf源兼容插件(关键步骤)
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus

# 添加Docker官方源
sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo

3.2 安装Docker

# 安装Docker及相关组件
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装(示例输出,实际版本号可能更高)
docker --version
# 示例输出:Docker version 26.1.3, build b72abbb

docker compose version
# 示例输出:Docker Compose version v2.27.0

📌 说明:以上版本号为示例,实际安装时版本号可能更高,以你服务器实际输出为准,不影响后续使用。


四、配置Docker镜像加速

国内访问Docker Hub较慢,配置镜像加速器可大幅提升镜像拉取速度。

# 创建配置文件
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

# 重启Docker使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证加速是否生效
docker info | grep "Registry Mirrors" -A 5

如果看到配置的镜像源地址,说明加速已生效。


五、部署OpenClaw

5.1 创建配置文件(⚠️ 关键:配置必须正确)

cat > /opt/openclaw/config/openclaw.json << 'EOF'
{
  "gateway": {
    "bind": "0.0.0.0",
    "port": 18789,
    "auth": {
      "mode": "token"
    }
  }
}
EOF

⚠️ 重要说明

  • bind: "0.0.0.0" 允许容器外访问(必须配置)
  • 不要添加 controlUiagentstoolsapprovals 等旧版配置字段,否则容器无法启动
  • 新版OpenClaw会自动处理安全配置,最简配置即可正常运行

5.2 创建docker-compose.yml

cat > /opt/openclaw/docker-compose.yml << 'EOF'
services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    container_name: openclaw-gateway
    restart: unless-stopped

    # ===== 安全加固配置 =====
    cap_drop:
      - ALL                    # 丢弃所有Linux Capabilities
    read_only: true            # 只读根文件系统
    user: "1000:1000"          # 非root用户运行
    security_opt:
      - no-new-privileges:true # 禁止获取新权限

    # ===== 网络配置 =====
    ports:
      - "127.0.0.1:23478:18789"

    # ===== 数据持久化 =====
    volumes:
      - ./config:/home/node/.openclaw:ro
      - ./logs:/home/node/logs:rw
    tmpfs:
      - /tmp:rw,noexec,nosuid,size=256m

    # ===== 环境变量 =====
    environment:
      - NODE_ENV=production
      - LOG_LEVEL=info
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_TOKEN}

    # ===== 资源限制(适配2核2G)=====
    deploy:
      resources:
        limits:
          memory: 1536M

networks:
  default:
    driver: bridge
EOF

5.3 创建环境变量文件

# 生成随机Token(保存好,只显示一次)
echo "OPENCLAW_TOKEN=$(openssl rand -hex 32)" > /opt/openclaw/.env

# 设置权限(仅所有者可读)
chmod 600 /opt/openclaw/.env

# 查看并保存Token
cat /opt/openclaw/.env

⚠️ 重要:输出的Token请妥善保存,后续登录需要用到。

5.4 启动OpenClaw

cd /opt/openclaw
docker compose up -d

5.5 验证部署

# 查看容器状态
docker compose ps

# 测试服务是否正常(关键步骤)
curl http://localhost:23478/health

成功输出{"ok":true,"status":"live"}

如果返回这个结果,说明部署成功!


六、配置SSH隧道访问

OpenClaw端口只绑定到127.0.0.1,无法直接从公网访问。需要通过SSH隧道将远程端口映射到本地。

6.1 在本地电脑建立SSH隧道

Windows(PowerShell或CMD)

ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N

macOS / Linux

ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N

参数说明

  • -p 23561:指定SSH端口
  • -L 18789:127.0.0.1:23478:将本地18789端口转发到服务器的23478端口
  • -N必须加,不执行远程命令,只做端口转发

⚠️ 重要提示

  • 执行后终端会卡住不动,这是正常现象,表示隧道正在运行
  • 请保持这个终端窗口打开,关闭后隧道会断开
  • 不要忘记 -N 参数,否则会登录到服务器而不是建立隧道

6.2 在浏览器访问

打开浏览器,访问:

http://localhost:18789

页面会提示输入Gateway Token,输入之前在.env文件中生成的Token即可登录。


七、安全加固配置

7.1 阿里云安全组配置

登录阿里云控制台 → 云服务器ECS → 安全组:

入方向规则

端口范围授权对象说明
23561(TCP)你的家庭公网IPSSH管理(建议限制来源IP)
23478(TCP)不开放通过SSH隧道访问,无需开放

⚠️ 关键不要在安全组中开放23478端口!只通过SSH隧道访问。


八、常用运维命令

# 进入项目目录
cd /opt/openclaw

# 查看容器状态
docker compose ps

# 查看实时日志
docker compose logs -f

# 重启服务
docker compose restart

# 停止服务
docker compose down

# 启动服务
docker compose up -d

# 更新镜像
docker compose pull
docker compose up -d

# 查看Token
cat /opt/openclaw/.env

九、故障排查

9.1 容器无法启动或不断重启

原因:配置文件包含旧版不兼容的字段

解决方法

# 确保配置文件只有gateway配置
cat > /opt/openclaw/config/openclaw.json << 'EOF'
{
  "gateway": {
    "bind": "0.0.0.0",
    "port": 18789,
    "auth": { "mode": "token" }
  }
}
EOF

# 重启容器
docker compose restart

9.2 curl返回 Connection reset by peer

原因:服务未正常启动

解决方法

# 查看日志定位问题
docker compose logs --tail=50

# 确认配置文件正确
cat /opt/openclaw/config/openclaw.json

# 重启容器
docker compose restart
sleep 5
curl http://localhost:23478/health

9.3 浏览器报 origin not allowed

原因:SSH隧道命令忘记加 -N 参数

解决方法

# 正确命令(本地电脑执行,注意加 -N)
ssh -p 23561 -L 18789:127.0.0.1:23478 root@你的服务器IP -N

9.4 镜像拉取慢或失败

解决方法

# 使用国内镜像加速(已配置)
# 或手动拉取
docker compose pull

# 重新启动
docker compose up -d

9.5 端口被占用

# 检查端口是否被占用
netstat -tlnp | grep 23478

# 如果被占用,修改docker-compose.yml中的端口
# 将 "127.0.0.1:23478:18789" 改为 "127.0.0.1:新端口:18789"

十、常见错误配置(避免踩坑)

错误配置后果正确做法
添加 agents.defaults.workspacePath容器无法启动只保留 gateway 配置
添加 tools.allow / tools.deny容器无法启动新版自动处理,无需配置
添加 controlUi.allowedOrigins容器无法启动新版自动添加白名单
bind: "loopback"容器外无法访问使用 bind: "0.0.0.0"
SSH命令忘记 -N隧道不生效必须加 -N 参数
安全组开放23478端口暴露服务,增加风险不开放,只用SSH隧道

十一、安全要点总结

安全措施配置位置状态
修改默认端口ports: 23478:18789
仅本地监听127.0.0.1:23478
SSH隧道访问不在安全组开放端口
Token认证.env随机Token
容器非root运行user: "1000:1000"
只读根文件系统read_only: true
资源限制deploy.resources.limits.memory

十二、参考资料

本教程参考了以下官方文档和安全指南:

  1. 国家互联网应急中心(CNCERT)与中国网络空间安全协会:《OpenClaw安全使用实践指南》(2026年3月22日联合发布)

  2. 华为云帮助中心:《OpenClaw 开始使用》文档

  3. 华为云帮助中心:《OpenClaw 准备工作》文档

  4. 阿里云容器镜像服务:《官方镜像加速》文档

  5. OpenClaw官方文档:《Docker部署指南》


部署完成后,你就可以通过 http://localhost:18789 安全地访问OpenClaw管理界面了。

如果在配置过程中遇到任何问题,可以查阅上述参考资料或根据报错信息进行排查。


版权声明:本文为原创技术教程,欢迎转载,请注明出处。 更新日期:2026年4月8日