2026 年 OpenClaw 阿里云部署保姆级教程:从零到可用,含 HTTPS + 双 Agent + Skill 配置
折腾了整整一个周末,终于在阿里云轻量服务器上把 OpenClaw 跑通了。说实话,整个部署过程踩的坑比我想象中多得多——国内服务器拉镜像慢、容器权限报错、ICP 备案导致 80 端口被拦截、ACME 证书签不下来……每一个问题单拿出来都能让人卡半天。
网上现有的教程要么太简略,要么版本已经过时,很多关键细节(比如 docker compose run 和 docker compose exec 的区别、DNS-01 验证的正确姿势)根本没人提。所以我决定把自己的完整部署过程记录下来,写成这篇保姆级教程,希望能帮你少走弯路。
本教程面向的读者:有基本的 Linux 操作经验,但不熟悉 Docker / Nginx / HTTPS 证书配置。每一步我都会给出可以直接复制粘贴的完整命令。
一、前置准备
1.1 服务器要求
| 项目 | 推荐配置 | 说明 |
| 服务器 | 阿里云轻量应用服务器 | ECS 也行,轻量更便宜 |
| 内存 | 2GB 以上 | 实测 1.87GB 也能跑,但比较紧张 |
| 系统 | Alibaba Cloud Linux 3 / Ubuntu 22.04 | 本教程以 Alibaba Cloud Linux 3 为例 |
| 带宽 | 3Mbps+ | 太低会影响 Web 界面响应 |
1.2 你还需要
- 一个域名,已经解析到服务器公网 IP(A 记录)
- DeepSeek API Key(或其他 OpenClaw 支持的模型 Key)
- 一个 SSH 工具(推荐 Windows Terminal / MobaXterm / 阿里云控制台自带的 Web Terminal)
1.3 域名解析
在你的域名服务商控制台(比如阿里云 DNS 控制台),添加一条 A 记录:
主机记录: @(或你想要的子域名前缀,如 claw)
记录类型: A
记录值: 你的服务器公网 IP
解析生效一般需要几分钟,可以用 ping 你的域名 验证。
二、安装基础环境
SSH 登录服务器后,先检查当前环境:
docker --version
node --version
nginx -v
2.1 安装 Docker(如果没有)
# Alibaba Cloud Linux / CentOS
yum install -y docker
启动并设置开机自启
systemctl start docker systemctl enable docker
验证
docker --version
Ubuntu 用户用 apt install -y docker.io 或者通过 Docker 官方脚本安装。
2.2 安装 Docker Compose 插件
阿里云的 Docker 包通常自带 compose 插件。如果没有:
# 验证是否有 compose
docker compose version
如果没有,手动安装插件
mkdir -p /usr/local/lib/docker/cli-plugins curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \ -o /usr/local/lib/docker/cli-plugins/docker-compose chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
⚠️ 国内服务器下载 GitHub Release 可能很慢。如果卡住,可以用南京大学镜像。
2.3 安装 Nginx
yum install -y nginx
systemctl start nginx
systemctl enable nginx
2.4 安装 Node.js 20+(可选)
OpenClaw 本身在 Docker 里运行,宿主机不强制要求 Node.js。但如果你想在宿主机上调试或使用 CLI 工具:
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
yum install -y nodejs
node --version # 应该显示 v20.x.x
三、部署 OpenClaw Docker 容器
3.1 创建项目目录
mkdir -p /opt/openclaw/data/config
cd /opt/openclaw
3.2 生成 Gateway Token
openssl rand -hex 16
输出类似 a3f8c2d1e9b0456781234567890abcde,把它保存好,后面多处要用。
3.3 编写 docker-compose.yml
cat > /opt/openclaw/docker-compose.yml << 'EOF'
services:
openclaw-gateway:
image: ghcr.nju.edu.cn/openclaw/openclaw:latest
container_name: openclaw-gateway
restart: unless-stopped
ports:
- "127.0.0.1:18789:18789"
- "127.0.0.1:18790:18790"
volumes:
- ./data/config:/home/node/.openclaw
environment:
- OPENCLAW_GATEWAY_TOKEN=替换为你的token
- TZ=Asia/Shanghai
- DEEPSEEK_API_KEY=替换为你的key
- TERM=xterm-256color
stdin_open: true
tty: true
openclaw-cli: image: ghcr.nju.edu.cn/openclaw/openclaw:latest volumes: - ./data/config:/home/node/.openclaw environment: - OPENCLAW_GATEWAY_TOKEN=替换为你的token - TZ=Asia/Shanghai - DEEPSEEK_API_KEY=替换为你的key stdin_open: true tty: true profiles: - cli EOF
⚠️ 镜像源说明:这里用的是南京大学镜像 ghcr.nju.edu.cn/openclaw/openclaw:latest,国内服务器拉 GitHub Container Registry 的镜像非常慢,南大镜像是 ghcr.io 的国内代理。
⚠️ 安全说明:端口绑定的是 127.0.0.1,外部无法直接访问。所有外部流量必须经过 Nginx 反向代理。
3.4 修复目录权限(超级重要!)
chown -R 1000:1000 /opt/openclaw/data
⚠️ OpenClaw 容器内部使用 node 用户(UID 1000),而 root 创建的目录归属 root(UID 0)。不修复会导致 EACCES 错误。
3.5 拉取镜像并启动
cd /opt/openclaw
docker compose pull
docker compose up -d openclaw-gateway
查看容器状态和日志确认启动成功:
docker compose ps
docker compose logs -f openclaw-gateway
四、初始配置
⚠️ 必须用docker compose run --rm -T openclaw-cli ...,不要用docker compose exec!
run 创建临时容器执行命令后自动销毁,exec 会连到正在运行的 gateway 进程导致卡死。
4.1 设置 Gateway 模式
docker compose run --rm -T openclaw-cli node dist/index.js config set gateway.mode local
4.2 设置 AI 模型
docker compose run --rm -T openclaw-cli node dist/index.js config set model deepseek/deepseek-v4-flash
4.3 设置允许的访问来源
docker compose run --rm -T openclaw-cli node dist/index.js config set allowedOrigins '["https://你的域名"]'
4.4 关闭设备认证(可选)
docker compose run --rm -T openclaw-cli node dist/index.js config set dangerouslyDisableDeviceAuth true
4.5 重启并验证
docker compose restart openclaw-gateway
docker compose run --rm -T openclaw-cli node dist/index.js config list
五、配置 Nginx 反向代理
5.1 创建 Nginx 配置文件
cat > /etc/nginx/conf.d/openclaw.conf << 'EOF'
server {
listen 80;
server_name 你的域名;
return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; server_name 你的域名;
ssl_certificate /etc/nginx/ssl/你的域名.cer; ssl_certificate_key /etc/nginx/ssl/你的域名.key; ssl_protocols TLSv1.2 TLSv1.3;
location / { proxy_pass http://127.0.0.1:18789; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; proxy_cache off; proxy_read_timeout 600s; proxy_send_timeout 600s; } } EOF
三个关键:WebSocket 支持(Upgrade/Connection)、关闭 proxy_buffering(流式响应)、超时 600s。
六、签发 HTTPS 证书(DNS-01)
6.1 安装 acme.sh 并切换 CA
curl https://get.acme.sh | sh -s email=你的邮箱
source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt
6.2 DNS-01 手动验证
acme.sh --issue -d 你的域名 --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
按提示在 DNS 控制台添加 TXT 记录,等待生效后:
acme.sh --renew -d 你的域名 --yes-I-know-dns-manual-mode-enough-go-ahead-please
6.3 安装证书并重载 Nginx
acme.sh --install-cert -d 你的域名 \
--cert-file /etc/nginx/ssl/你的域名.cer \
--key-file /etc/nginx/ssl/你的域名.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "systemctl reload nginx"
nginx -t && systemctl reload nginx
七、验证访问
访问 https://你的域名,输入 Gateway Token 登录,发送消息确认 AI 正常回复。
常用运维命令
cd /opt/openclaw && docker compose ps # 查看状态
docker compose logs -f openclaw-gateway # 查看日志
docker compose restart openclaw-gateway # 重启
docker compose pull && docker compose up -d openclaw-gateway # 更新更多推荐
所有评论(0)