VPS 选购建议
部署 OpenClaw 的第一步是选择一台合适的 VPS 服务器。国内云服务商
| 服务商 | 推荐配置 | 月费参考 | 特点 | |--------|----------|----------|------| | 腾讯云 | 2核4G | ¥50-100 | 国内访问快,有学生优惠 | | 阿里云 | 2核4G | ¥60-120 | 生态完善,文档丰富 | | 华为云 | 2核4G | ¥50-100 | 企业级稳定性 | 国内服务器优势: - 国内用户访问延迟低 - 支持备案,可以绑定域名 - 中文客服和文档 国内服务器劣势: - 访问国外 API(OpenAI、Anthropic)需要配置代理 - 需要备案才能使用 80/443 端口绑定域名国外云服务商
| 服务商 | 推荐配置 | 月费参考 | 特点 | |--------|----------|----------|------| | Hetzner | CX22 (2核4G) | €4-6 | 性价比极高,欧洲机房 | | DigitalOcean | Basic 2核4G | $24 | 简单易用,全球机房 | | Vultr | Cloud 2核4G | $24 | 按小时计费,灵活 | | Linode | Shared 2核4G | $24 | Akamai 旗下,稳定 | 国外服务器优势: - 直连 OpenAI/Anthropic 等 API,无需代理 - 无需备案 - 价格通常更便宜 国外服务器劣势: - 国内访问可能有延迟 - 部分 IP 段可能被屏蔽最低配置要求
| 资源 | 最低要求 | 推荐配置 | |------|----------|----------| | CPU | 1 核 | 2 核 | | 内存 | 1 GB | 2-4 GB | | 磁盘 | 20 GB SSD | 40 GB SSD | | 系统 | Ubuntu 22.04 LTS | Ubuntu 22.04/24.04 LTS | | Node.js | 22.14+ | 24.x(推荐) |系统初始化
以 Ubuntu 22.04 为例,完成基础系统配置。连接服务器
``bash
ssh root@your-server-ip
`
创建普通用户
不要用 root 用户运行 OpenClaw,创建一个专用用户:
`bash
创建用户
adduser openclaw
添加 sudo 权限
usermod -aG sudo openclaw
切换到新用户
su - openclaw
`
系统更新
`bash
sudo apt update && sudo apt upgrade -y
`
安装基础工具
`bash
sudo apt install -y curl wget git build-essential
`
安装 Node.js
推荐使用 NodeSource 官方源安装 Node.js 24:
`bash
安装 Node.js 24(推荐)
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt install -y nodejs
验证安装
node --version # 应该显示 v24.x.x
npm --version
`
如果你更习惯用 nvm 管理 Node.js 版本:
`bash
安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
安装 Node.js 24
nvm install 24
nvm use 24
nvm alias default 24
`
国内服务器加速 npm:
`bash
设置淘宝镜像
npm config set registry https://registry.npmmirror.com
`
OpenClaw 安装和配置
安装 OpenClaw
`bash
使用官方安装脚本
curl -fsSL https://get.openclaw.ai | bash
或者通过 npm 安装
npm install -g openclaw@latest
验证安装
openclaw --version
`
初始化配置
`bash
运行初始化向导
openclaw onboard
`
向导会引导你完成:
1. 选择 AI 模型提供商(OpenAI、Anthropic、DeepSeek 等)
2. 配置 API Key
3. 设置基本参数
配置文件
安装完成后,主要配置文件位于:
`
~/.openclaw/
├── openclaw.json # 主配置文件
├── agents/
│ └── default/
│ ├── SOUL.md # 智能体人设
│ ├── AGENTS.md # 操作说明
│ └── sessions/ # 会话存储
└── skills/ # 已安装的技能
`
编辑主配置文件:
`bash
nano ~/.openclaw/openclaw.json
`
基本配置示例:
`json
{
"gateway": {
"port": 18789,
"host": "127.0.0.1"
},
"models": {
"default": {
"provider": "deepseek",
"model": "deepseek-chat",
"apiKey": "sk-your-api-key"
}
}
}
`
启动测试
`bash
启动 Gateway
openclaw gateway start
检查状态
openclaw gateway status
访问仪表板(本地)
curl http://127.0.0.1:18789/
`
确认 Gateway 正常运行后,按 Ctrl+C 停止,接下来配置进程管理。
Gateway 远程访问配置
默认情况下,Gateway 只监听 127.0.0.1(本地),外部无法直接访问。有几种方式实现远程访问。
方式 1:Tailscale(推荐)
Tailscale 是最简单安全的远程访问方案,基于 WireGuard 协议创建私有网络。
`bash
安装 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
启动并登录
sudo tailscale up
查看分配的 IP
tailscale ip -4
输出类似:100.64.x.x
`
在你的本地电脑上也安装 Tailscale 并登录同一账号,然后就可以通过 Tailscale IP 访问 Gateway:
`
http://100.64.x.x:18789/
`
Tailscale 的优势:
- 端到端加密,无需额外配置 SSL
- 不需要开放公网端口
- 穿透 NAT,即使服务器在内网也能访问
- 免费版支持最多 100 台设备
方式 2:SSH 隧道
如果不想安装额外软件,SSH 隧道是最简单的临时方案:
`bash
在本地电脑执行,将远程 18789 端口映射到本地
ssh -L 18789:127.0.0.1:18789 openclaw@your-server-ip
然后在本地浏览器访问
http://127.0.0.1:18789/
`
SSH 隧道的特点:
- 无需安装额外软件
- 连接断开后隧道关闭
- 适合临时访问和调试
方式 3:Nginx 反向代理(公网访问)
如果你需要让 Gateway 通过域名公网访问(比如 WebChat),需要配置 Nginx 反向代理。详见下一节。
Nginx 反向代理
安装 Nginx
`bash
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
`
配置反向代理
创建 Nginx 配置文件:
`bash
sudo nano /etc/nginx/sites-available/openclaw
`
写入以下配置:
`nginx
server {
listen 80;
server_name your-domain.com;
# WebSocket 支持(OpenClaw 需要)
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_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 超时设置
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
`
启用配置:
`bash
创建软链接
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
删除默认配置(可选)
sudo rm /etc/nginx/sites-enabled/default
测试配置语法
sudo nginx -t
重载 Nginx
sudo systemctl reload nginx
`
WebSocket 支持说明
OpenClaw 的 WebChat 和部分渠道使用 WebSocket 通信。Nginx 配置中的关键参数:
- proxy_http_version 1.1:WebSocket 需要 HTTP/1.1
- Upgrade 和 Connection 头:WebSocket 握手必需
- proxy_read_timeout 86400s:保持长连接不超时(24 小时)
SSL 证书
使用 Let's Encrypt + Certbot
`bash
安装 Certbot
sudo apt install -y certbot python3-certbot-nginx
申请证书(自动修改 Nginx 配置)
sudo certbot --nginx -d your-domain.com
测试自动续期
sudo certbot renew --dry-run
`
Certbot 会自动:
1. 申请免费的 SSL 证书
2. 修改 Nginx 配置,添加 HTTPS 支持
3. 设置自动续期(证书有效期 90 天,自动续期)
证书续期
Certbot 安装后会自动创建定时任务,每天检查证书是否需要续期。你也可以手动检查:
`bash
查看证书状态
sudo certbot certificates
手动续期
sudo certbot renew
查看自动续期定时任务
sudo systemctl list-timers | grep certbot
`
配置完成后的 Nginx
Certbot 修改后的配置大致如下:
`nginx
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
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_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}
`
PM2 进程管理
使用 PM2 管理 OpenClaw Gateway 进程,实现开机自启和崩溃重启。
安装 PM2
`bash
npm install -g pm2
`
使用 PM2 启动 Gateway
`bash
启动 Gateway
pm2 start "openclaw gateway start" --name openclaw-gateway
查看状态
pm2 status
查看日志
pm2 logs openclaw-gateway
保存进程列表(用于开机自启)
pm2 save
设置开机自启
pm2 startup
按照输出的提示执行 sudo 命令
`
PM2 常用命令
`bash
重启
pm2 restart openclaw-gateway
停止
pm2 stop openclaw-gateway
删除进程
pm2 delete openclaw-gateway
查看详细信息
pm2 show openclaw-gateway
监控面板
pm2 monit
查看最近 100 行日志
pm2 logs openclaw-gateway --lines 100
`
PM2 配置文件(可选)
创建 ecosystem.config.js 获得更精细的控制:
`javascript
module.exports = {
apps: [{
name: 'openclaw-gateway',
script: 'openclaw',
args: 'gateway start',
cwd: '/home/openclaw',
env: {
NODE_ENV: 'production'
},
max_memory_restart: '500M',
restart_delay: 5000,
max_restarts: 10,
log_date_format: 'YYYY-MM-DD HH:mm:ss'
}]
}
`
`bash
pm2 start ecosystem.config.js
`
使用 systemd(替代方案)
如果你更习惯 systemd:
`bash
sudo nano /etc/systemd/system/openclaw.service
`
`ini
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=openclaw
WorkingDirectory=/home/openclaw
ExecStart=/usr/bin/openclaw gateway start
Restart=always
RestartSec=5
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
`
`bash
启用并启动
sudo systemctl enable openclaw
sudo systemctl start openclaw
查看状态
sudo systemctl status openclaw
查看日志
sudo journalctl -u openclaw -f
`
防火墙配置
使用 ufw
`bash
安装 ufw(通常已预装)
sudo apt install -y ufw
设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing
允许 SSH(重要!先开放 SSH 再启用防火墙)
sudo ufw allow 22/tcp
允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙
sudo ufw enable
查看规则
sudo ufw status verbose
`
安全建议
- 只开放必要端口:22(SSH)、80(HTTP)、443(HTTPS)
- 不要开放 18789 端口:Gateway 端口不应直接暴露,通过 Nginx 反向代理访问
- 考虑限制 SSH 来源 IP:如果你有固定 IP
`bash
只允许特定 IP 访问 SSH
sudo ufw allow from 1.2.3.4 to any port 22
`
- 安装 fail2ban 防暴力破解:
`bash
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
`
监控和日志
OpenClaw 日志
`bash
查看 Gateway 日志
openclaw logs
实时跟踪日志
openclaw logs -f
查看最近 50 行
openclaw logs --lines 50
`
PM2 日志
`bash
查看所有进程日志
pm2 logs
查看特定进程日志
pm2 logs openclaw-gateway
清空日志
pm2 flush
`
系统监控
`bash
查看系统资源使用
htop
查看磁盘使用
df -h
查看内存使用
free -h
查看 OpenClaw 进程资源占用
pm2 monit
`
日志轮转
PM2 日志文件会持续增长,建议配置日志轮转:
`bash
安装 PM2 日志轮转模块
pm2 install pm2-logrotate
配置:每个日志文件最大 10MB,保留 7 个文件
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true
`
健康检查
创建一个简单的健康检查脚本:
`bash
#!/bin/bash
health-check.sh
STATUS=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:18789/)
if [ "$STATUS" != "200" ]; then
echo "$(date): Gateway 异常,HTTP 状态码: $STATUS" >> /var/log/openclaw-health.log
pm2 restart openclaw-gateway
echo "$(date): 已自动重启 Gateway" >> /var/log/openclaw-health.log
fi
`
添加到 crontab,每 5 分钟检查一次:
`bash
crontab -e
添加:
*/5 * * * * /home/openclaw/health-check.sh
`
国内服务器备案注意事项
如果你使用国内服务器并需要绑定域名,需要注意以下事项:
备案要求
- 使用国内服务器 + 域名绑定 80/443 端口 = 必须备案
- 未备案的域名会被云服务商拦截,无法通过 HTTP/HTTPS 访问
- 备案周期通常 7-20 个工作日
备案流程
1. 在云服务商控制台提交备案申请
2. 填写网站信息、主体信息
3. 上传身份证照片、网站负责人照片
4. 等待管局审核
5. 审核通过后,在网站底部添加备案号
备案期间的替代方案
在等待备案期间,你可以:
方案 1:使用 IP 直接访问
`nginx
server {
listen 80;
server_name your-server-ip;
# ...
}
`
通过 http://your-server-ip 访问,不需要备案。
方案 2:使用非标准端口
`nginx
server {
listen 8080;
server_name your-domain.com;
# ...
}
`
部分云服务商对非 80/443 端口不强制备案(但不保证)。
方案 3:使用 Tailscale
通过 Tailscale 私有网络访问,完全不需要域名和备案。
不需要备案的情况
- 使用国外服务器(无论域名在哪里注册)
- 只通过 IP 地址访问(不绑定域名)
- 只通过 Tailscale/SSH 隧道访问
- 只在内网使用
完整部署清单
按照以下清单确认部署完成:
`
□ 服务器购买和 SSH 连接
□ 创建普通用户,禁用 root SSH 登录
□ 系统更新和基础工具安装
□ Node.js 24 安装
□ OpenClaw 安装和初始化
□ API Key 配置
□ Gateway 本地测试通过
□ PM2 安装和进程管理配置
□ PM2 开机自启设置
□ Nginx 安装和反向代理配置
□ SSL 证书申请和自动续期
□ 防火墙配置(ufw)
□ fail2ban 安装
□ 日志轮转配置
□ 健康检查脚本
□ 域名备案(国内服务器)
``