Cloudflare Tunnel 部署指南
概述
使用 Cloudflare Tunnel(免费)将本地Docker服务安全暴露到公网,无需公网IP、无需开放端口、自动HTTPS。
优势
- ✅ 免费 - Cloudflare Tunnel完全免费
- ✅ 安全 - 无需开放端口,流量加密
- ✅ 自动HTTPS - 自动SSL证书
- ✅ 全球CDN - Cloudflare全球节点加速
- ✅ 简单 - 一键部署
部署步骤
1. 注册Cloudflare账号
访问 https://dash.cloudflare.com 注册账号(免费)
2. 添加域名(可选但推荐)
如果有自己的域名,添加到Cloudflare:
- Cloudflare Dashboard → Add a site
- 按提示修改域名NS记录
如果没有域名,可以使用Cloudflare提供的免费子域名。
3. 创建Tunnel
方式A:通过Dashboard(推荐)
- 登录 https://one.dash.cloudflare.com
- 左侧菜单 → Networks → Tunnels
- 点击 Create a tunnel
- 选择 Cloudflared
- 输入隧道名称:
mises-behavior-engine - 点击 Save tunnel
- 复制Tunnel Token(重要!)
方式B:通过命令行
# 安装cloudflared
winget install cloudflare.cloudflared
# 登录
cloudflared tunnel login
# 创建隧道
cloudflared tunnel create mises-behavior-engine
# 获取隧道ID
cloudflared tunnel list
4. 配置公网路由
在Cloudflare Dashboard的Tunnel配置页面:
- 点击 Configure
- 添加 Public Hostname:
- Subdomain:
mbe(或你喜欢的名称) - Domain: 选择你的域名
- Service Type:
HTTP - URL:
mbe-api:8000
- Subdomain:
最终公网地址将是:https://mbe.yourdomain.com
5. 配置环境变量
创建 .env 文件:
# Cloudflare Tunnel Token(从Dashboard复制)
CLOUDFLARE_TUNNEL_TOKEN=eyJhIjoixxxxxx...
# LLM配置
LLM_PROVIDER=deepseek
LLM_API_KEY=your-deepseek-api-key
# 安全密钥(生产环境必须修改)
SECRET_KEY=your-secure-random-string-at-least-32-chars
6. 启动服务
# 使用带Tunnel的配置启动
docker-compose -f docker-compose.tunnel.yml up -d
# 查看日志
docker logs mbe-tunnel
docker logs mbe-api
7. 验证部署
# 本地测试
curl http://localhost:8000/api/health
# 公网测试(替换为你的域名)
curl https://mbe.yourdomain.com/api/health
小智MCP配置
部署成功后,在小智后台配置MCP:
Endpoint: https://mbe.yourdomain.com/mcp/sse
Transport: SSE
常用命令
# 启动所有服务
docker-compose -f docker-compose.tunnel.yml up -d
# 停止所有服务
docker-compose -f docker-compose.tunnel.yml down
# 查看状态
docker-compose -f docker-compose.tunnel.yml ps
# 查看Tunnel日志
docker logs -f mbe-tunnel
# 查看API日志
docker logs -f mbe-api
# 重启Tunnel
docker-compose -f docker-compose.tunnel.yml restart cloudflared
故障排查
Tunnel连接失败
# 检查Token是否正确
docker logs mbe-tunnel
# 常见错误:
# - "invalid token" → Token复制不完整
# - "tunnel not found" → 需要在Dashboard重新创建
API无法访问
# 检查容器是否运行
docker ps
# 检查API日志
docker logs mbe-api
# 检查网络连通性
docker exec mbe-tunnel curl http://mbe-api:8000/api/health
域名解析问题
- 确认域名已添加到Cloudflare
- 确认Public Hostname配置正确
- 等待DNS传播(最多几分钟)
安全建议
- 修改SECRET_KEY - 使用强随机字符串
- 限制访问 - 在Cloudflare Access设置访问策略
- 监控日志 - 定期检查异常访问
- 定期更新 - 保持镜像和依赖更新
费用说明
- Cloudflare Tunnel: 免费
- Cloudflare域名: 免费(使用自己的域名)或购买
- 本地服务器: 你自己的电脑运行Docker
总费用:基本免费(仅域名可能需要费用)