远程网关搭建
本教程从零开始,手把手指导你搭建一个可远程访问的 Gateway 实例。
准备工作
你需要准备:
| 项目 | 说明 |
|---|---|
| 云服务器 | 至少 1 核 CPU、1 GB 内存 |
| 域名 | 如 gateway.example.com |
| DNS 管理 | 能修改域名 A 记录 |
服务器选择
Gateway 本身资源消耗很小。最小规格的云服务器即可满足个人使用需求。
第 1 步:域名配置
在你的 DNS 管理面板中添加 A 记录:
text
类型: A
名称: gateway
值: <你的服务器公网 IP>
TTL: 300验证 DNS 解析:
bash
nslookup gateway.example.com
# 应返回你的服务器 IP第 2 步:安装 OpenClaw
bash
# 下载并安装
curl -fsSL https://install.openclaw.dev | bash
# 验证安装
openclaw --version第 3 步:基础配置
bash
# 生成安全 Token
export OPENCLAW_GATEWAY_TOKEN="$(openssl rand -hex 32)"
echo "请安全保存你的 Token: $OPENCLAW_GATEWAY_TOKEN"
# 配置 Gateway 监听所有接口
openclaw config set gateway.host "0.0.0.0"
openclaw config set gateway.port 18789
# 设置日志级别
openclaw config set gateway.logLevel "info"配置 Channel(以 OpenAI 为例):
bash
# 设置 API Key
openclaw secrets set OPENAI_API_KEY "sk-your-key-here"
# 添加 Channel
openclaw config set channels '[{"name":"openai","provider":"openai","apiKey":"${OPENAI_API_KEY}"}]'
openclaw config set models.default "gpt-4o"第 4 步:安装 Caddy 反向代理
bash
# Ubuntu/Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy配置 Caddy:
text
# /etc/caddy/Caddyfile
gateway.example.com {
reverse_proxy 127.0.0.1:18789
}bash
# 启动 Caddy(自动申请 SSL 证书)
sudo systemctl enable caddy
sudo systemctl start caddy自动 HTTPS
Caddy 会自动为你的域名申请 Let's Encrypt 证书并自动续期,无需手动管理。
第 5 步:SSL/TLS 验证
bash
# 验证证书
curl -vI https://gateway.example.com 2>&1 | grep "SSL certificate"
# 检查证书详情
openssl s_client -connect gateway.example.com:443 -servername gateway.example.com </dev/null 2>/dev/null | openssl x509 -noout -dates第 6 步:防火墙规则
bash
# 允许 HTTPS 入站
sudo ufw allow 443/tcp
# 允许 HTTP(Caddy 重定向用)
sudo ufw allow 80/tcp
# 禁止直接访问 Gateway 端口
sudo ufw deny 18789/tcp
# 启用防火墙
sudo ufw enable
sudo ufw status端口安全
Gateway 端口 18789 不应对外开放。所有外部流量应通过 Caddy 反向代理的 443 端口进入。
第 7 步:启动 Gateway 服务
创建 systemd 服务文件:
ini
# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=openclaw
Environment=OPENCLAW_GATEWAY_TOKEN=your-token-here
ExecStart=/usr/local/bin/openclaw gateway
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetbash
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw第 8 步:安全加固
bash
# 启用严格沙箱
openclaw config set security.sandbox.mode "strict"
# 限制认证失败次数
openclaw config set gateway.auth.rateLimitAttempts 3
openclaw config set gateway.auth.rateLimitWindow 300
# 限制最大会话数
openclaw config set gateway.maxSessions 20第 9 步:验证部署
bash
# 健康检查
curl https://gateway.example.com/health
# 运行诊断
openclaw doctor
# 从客户端连接
openclaw connect --host gateway.example.com --port 443 --tls完整检查清单
- [ ] DNS A 记录指向服务器 IP
- [ ] OpenClaw 已安装并配置
- [ ] Gateway Token 已设置并安全保存
- [ ] Caddy 已安装并运行
- [ ] SSL 证书有效
- [ ] 防火墙规则已配置
- [ ] Gateway 以 systemd 服务运行
- [ ] 健康检查通过
- [ ] 远程客户端可正常连接
故障排查
| 问题 | 排查步骤 |
|---|---|
| DNS 未解析 | nslookup gateway.example.com |
| 证书错误 | sudo caddy validate |
| 连接超时 | 检查防火墙 sudo ufw status |
| 502 Bad Gateway | 确认 Gateway 正在运行 openclaw status |
| 认证失败 | 检查 Token 环境变量 |
