VPS 服务器部署专题教程

advanced
## 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证书 #龙虾技能库