指南-Openclaw云主机安全部署方法

指南-Openclaw云主机安全部署方法


Openclaw Inteligencia Artificial manual
Last updated on

本指南将指导您如何在云主机VPS上安全 OpenClaw 实例。实例将运行在Docker环境,以您的机器人行为的结果影响可控。后续,你可以通过 SSH 隧道从您自己的 PC浏览器安全地管理您的 OpenClaw 实例,无需担心黑客会攻破它。

以下配置可以直接拷贝使用,并已在以下环境中验证过:

Debian 12.2.0
Docker version 26.0.2
openclaw:2026.3.7
阿里云主机​2CPU/2G

1. VPS云主机上使用docker部署openclaw

步骤 1:准备目录与配置文件

安装docker

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git ca-certificates
sudo apt install -y docker.io docker-compose
docker --version
docker-compose --version
sudo usermod -aG docker $USER

创建运行环境目录

mkdir -p ~/openclaw
cd ~/openclaw

创建 .gitignore 文件,避免提交敏感信息

cat > .gitignore << EOF
.env
*.log
config/*
data/*
EOF

创建 .env 文件,存储敏感配置(务必设置权限)

cat > .env << EOF
OPENCLAW_CONFIG_DIR=~/.openclaw #openclaw实例在宿主机上的目录位置
OPENCLAW_WORKSPACE_DIR=~/.openclaw/workspace
OPENCLAW_GATEWAY_PORT=127.0.0.1:18789#gatway只在127.0.0.1上监听
OPENCLAW_BRIDGE_PORT=127.0.0.1:18790
OPENCLAW_GATEWAY_BIND=loopback #安全考虑必须绑定loopback
OPENCLAW_GATEWAY_ALLOWED_ORIGINS=http://localhost,http://127.0.0.1,http://yoursite.com
OPENCLAW_TOKEN=$(openssl rand -hex 32)  # 使用 openssl 生成随机令牌
OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:2026.3.7 #生产环境建议指定版本
OPENCLAW_EXTRA_MOUNTS=
OPENCLAW_HOME_VOLUME=
OPENCLAW_DOCKER_APT_PACKAGES=
OPENCLAW_EXTENSIONS=
OPENCLAW_SANDBOX=
OPENCLAW_DOCKER_SOCKET=/var/run/docker.sock
DOCKER_GID=
OPENCLAW_INSTALL_DOCKER_CLI=
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=
OPENCLAW_TZ=Asia/Shanghai
EOF

步骤 2:编写 Docker Compose 文件

创建docker-compose.yml

services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    restart: unless-stopped
    environment:
      HOME: /home/node
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-}
      OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: ${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-}
      CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY:-}
      CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY:-}
      CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE:-}
      TZ: ${OPENCLAW_TZ:-UTC}
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
      ## Uncomment the lines below to enable sandbox isolation
      ## (agents.defaults.sandbox). Requires Docker CLI in the image
      ## (build with --build-arg OPENCLAW_INSTALL_DOCKER_CLI=1) or use
      ## docker-setup.sh with OPENCLAW_SANDBOX=1 for automated setup.
      ## Set DOCKER_GID to the host's docker group GID (run: stat -c '%g' /var/run/docker.sock).
      # - /var/run/docker.sock:/var/run/docker.sock
    # group_add:
    #   - "${DOCKER_GID:-999}"
    ports:
      #- "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
      #- "${OPENCLAW_BRIDGE_PORT:-18790}:18790"
      - "127.0.0.1:18789:18789"      
    network_mode: host #必须设置,否则容器内gateway监听的loopback端口无法收到宿主机端口转发的数据
    init: true
    read_only: true #无法更改容器内的文件,黑客即使攻破也无法安装或运行恶意软件
    security_opt:
      - no-new-privileges:true
    cap_drop: #降级能力,只留下绑定网络端口的能力
      - ALL
    cap_add:
      - NET_BIND_SERVICE
    tmpfs: #限制零时文件大小且不能运行程序
      - /tmp:rw,noexec,nosuid,size=64m
    deploy:
      resources: #限制容器资源
        limits:
          memory: 1536M
          cpus: '1'
          pids: 256
    #限制容器资源的另一种配置方式
    #cpus: 1 
    #mem_limit: 1536M
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND:-lan}",
        "--port",
        "18789",
      ]
    healthcheck:
      test:
        [
          "CMD",
          "node",
          "-e",
          "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
        ]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 20s
    dns: #防止某些情况下访问公网问题
      - 114.114.114.114
      - 223.5.5.5 #阿里dns
    user: "1000:1000" #降低用户权限
      #networks:
      #- openclaw_internal

  openclaw-cli:
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    network_mode: "service:openclaw-gateway"
    cap_drop:
      - NET_RAW
      - NET_ADMIN
    security_opt:
      - no-new-privileges:true
    environment:
      HOME: /home/node
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-}
      OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: ${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-}
      BROWSER: echo
      CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY:-}
      CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY:-}
      CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE:-}
      TZ: ${OPENCLAW_TZ:-UTC}
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    stdin_open: true
    tty: true
    init: true
    entrypoint: ["node", "dist/index.js"]
    depends_on:
      - openclaw-gateway

networks:
  openclaw_internal:
    driver: bridge
    internal: true # No external network access

步骤3:启动容器openclaw实例

docker compose -f ~/openclaw/docker-compose.yml up -d

步骤4:初始化配置

openclaw烧token很厉害,大家最好选择有限制的coding plan套餐。目前我用的是字节方舟coding plan,支持 Doubao、GLM、DeepSeek、Kimi 等模型,新人首月9.9,使用我的邀请码可以再打9折(老客户也行)。点击专属链接https://volcengine.com/L/tOvDAWumWLU/ 邀请码:PWFFSM5R

运行以下代码初始化配置

docker compose -f ~/openclaw/docker-compose.yml run --rm openclaw-gateway onboard

命令运行后会启动配置界面,基本选defaul,模型提供商根据你买的模型供应商信息填写,一般选OpenAI-compatible (custom endpoint),按要求输入API key,base URL之类。

结束后检查服务状态是否正常

docker compose -f ~/openclaw/docker-compose.yml ps
docker compose -f ~/openclaw/docker-compose.yml logs -f openclaw-gateway

2. 从本地工作电脑管理云龙虾

如果需要通过Web UI管理VPS上的openclaw实例,有2种比较安全的方式:一是利用SSH本地转发建立隧道,一是在VPS上配置HTTP反向代理。由于openclaw的安全机制会默认从127.0.0.1进入的connection都是安全的,导致使用HTTP反向代理反而会削弱整体安全性,所以推荐方式一。

1)云主机VPS上安全加固,修改SSH server监听的端口,并指定用户只能通过证书密钥接入而不是密码验证(相关方法可以搜网上教程,需生成相关证书并在工作电脑上配置)。

2)个人本地macOS上可以直接运行:

ssh -N -L 18789:127.0.0.1:18789 user@your-vps-ip

Windows系统也可运行上述命令(以管理员身份运行cmd),或者安装MoBaXterm并配置本地端口转发。

最后打开电脑上的浏览器,通过localhost:18789/?token=yourtoken访问,第一次访问时,需要配准device配对,如果换一个浏览器还需重新配对。

docker compose -f ~/openclaw/docker-compose.yml run --rm openclaw-gateway openclaw devices list
docker compose -f ~/openclaw/docker-compose.yml run --rm openclaw-gateway openclaw devices approve <requestId>

3. 安全建议

设置 .env 文件权限(关键:防止凭据泄露)

chmod 600 .env
chmod 700 ~/.openclaw
chmod 600 ~/.openclaw/openclaw.json
chmod 600 ~/.openclaw/credentials/*.json
find ~/.openclaw -type f -name "*.json" -exec chmod 600 {} \;

VPS防火墙加固(可选)

sudo ufw allow OpenSSH #或者是你指定的SSH端口
sudo ufw enable
sudo ufw status

4. 故障排查

重新配置

docker compose -f ~/openclaw/docker-compose.yml run --rm openclaw-cli configure

如果网关绑定模式没生效可以使用以下命令

docker compose -f ~/openclaw/docker-compose.yml run --rm openclaw-cli config set gateway.bind loopback

快速备份

tar -czf openclaw-backup.tar.gz ~/.openclaw