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:18789

Nginx:

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 caddy

Caddy 自动获取和续期 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.com

WebSocket 配置

Gateway 使用 WebSocket 进行实时通信。确保你的反向代理:

  1. 传递 Upgrade 头 - WebSocket 握手必需
  2. 保持长连接 - 不要超时活动的 WebSocket 连接
  3. 不要缓冲 - 实时流式传输响应

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 应用时:

  1. 设置 → 连接
  2. 模式:远程
  3. 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。

下一步

反向代理配置 | Moltbot 安装指南