Moltbot 反向代理设置
大多数 Moltbot 设置不需要反向代理。Gateway 使用出站 WebSocket 连接到消息平台,可在 NAT 和防火墙后正常工作。
但是,以下情况反向代理很有用:
- 从外部网络通过 HTTPS 访问 Gateway
- 多个服务共享 80/443 端口
- 多个 Gateway 实例的负载均衡
- 额外的安全层
何时需要反向代理
| 场景 | 需要反向代理? |
|---|---|
| 本地 macOS 应用 | 否 |
| 单台 Linux 服务器 | 通常不需要 |
| Gateway 在企业防火墙后 | 可能 |
| 公开的管理面板 | 是 |
| Kubernetes/云部署 | 是 |
太长不看
Caddy (推荐):
caddy reverse-proxy --from moltbot.your-domain.com --to localhost:18789Nginx:
location / {
proxy_pass http://localhost:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}环境要求
- 域名指向你的服务器
- Moltbot Gateway 在 localhost:18789 运行
- Root/sudo 权限(用于 80/443 端口)
选项 A:Caddy(推荐)
Caddy 自动处理 HTTPS,无需额外配置。
安装 Caddy
# 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
创建 /etc/caddy/Caddyfile:
moltbot.your-domain.com {
reverse_proxy localhost:18789
}启动 Caddy
sudo systemctl enable caddy
sudo systemctl start caddyCaddy 自动获取和续期 SSL 证书。
选项 B:Nginx
安装 Nginx
sudo apt install nginx certbot python3-certbot-nginx配置 Nginx
创建 /etc/nginx/sites-available/moltbot:
server {
listen 80;
server_name moltbot.your-domain.com;
location / {
proxy_pass http://localhost:18789;
proxy_http_version 1.1;
# WebSocket support (required for Gateway)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Standard proxy headers
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;
# Timeouts for long-running connections
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 3600s;
}
}启用站点并获取 SSL
sudo ln -s /etc/nginx/sites-available/moltbot /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d moltbot.your-domain.comWebSocket 配置
Gateway 使用 WebSocket 进行实时通信。确保你的反向代理:
- 传递 Upgrade 头 - WebSocket 握手必需
- 保持长连接 - 不要超时活动的 WebSocket 连接
- 不要缓冲 - 实时流式传输响应
Nginx WebSocket 配置
# In the location block
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s; # Keep connections alive for 1 hour
proxy_buffering off;Caddy WebSocket 配置
Caddy 自动处理 WebSocket - 无需特殊配置。
通过代理连接
更新配置以使用代理 URL:
{
"gateway": {
"externalUrl": "wss://moltbot.your-domain.com"
}
}或连接 macOS 应用时:
- 设置 → 连接
- 模式:远程
- URL: wss://moltbot.your-domain.com
常见问题
WebSocket 连接失败
检查 Upgrade 和 Connection 头是否正确传递。测试:
curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" \
https://moltbot.your-domain.com/60 秒后连接断开
增加代理超时。WebSocket 连接应保持数小时。
SSL 证书错误
在请求证书前确保 DNS 指向你的服务器。检查:
dig +short moltbot.your-domain.com安全注意事项
- 使用 HTTPS(Caddy 和 Nginx + Certbot 都能处理)
- 考虑为管理访问设置 IP 白名单
- 启用速率限制防止滥用
- 保持代理软件更新
速率限制(Nginx)
limit_req_zone $binary_remote_addr zone=moltbot:10m rate=10r/s;
server {
location / {
limit_req zone=moltbot burst=20 nodelay;
# ... other config
}
}Cloudflare Tunnel 替代方案
无需管理证书即可零配置公开访问:
# 安装 cloudflared
brew install cloudflared
# 或
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
# 创建隧道
cloudflared tunnel --url http://localhost:18789这会立即给你一个公开 URL,类似 https://random-words.trycloudflare.com。