## 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 安装
□ 日志轮转配置
□ 健康检查脚本
□ 域名备案(国内服务器)
```
## 小结
VPS 部署 OpenClaw 的完整流程:
- 选择合适的 VPS(国内访问快选腾讯云/阿里云,直连国外 API 选 Hetzner/DigitalOcean)
- 系统初始化:创建用户、安装 Node.js 24、配置国内镜像
- 安装 OpenClaw 并配置 API Key
- 远程访问推荐 Tailscale(最简单安全),公网访问用 Nginx 反向代理
- SSL 证书用 Let's Encrypt + Certbot,自动续期
- 进程管理用 PM2(开机自启 + 崩溃重启)
- 防火墙只开放 22/80/443,安装 fail2ban 防暴力破解
- 国内服务器绑定域名需要备案,备案期间可用 IP 或 Tailscale 访问
部署完成后,你的 OpenClaw Gateway 就可以 7×24 小时稳定运行了。
#VPS部署 #服务器部署 #远程访问 #Nginx #SSL证书 #龙虾技能库