一、环境介绍
服务器环境:
- VMware 虚拟机
- Rocky Linux 10.2
- Docker
- FastAPI
- Cloudflare Tunnel
应用端口:
1617
目标:
将本地 FastAPI 服务通过 Cloudflare Tunnel 暴露到公网,无需公网 IP、无需域名。
二、确认服务正常运行
查看容器状态
bash
docker ps
输出示例:
CONTAINER ID IMAGE STATUS PORTS
dafbc50cb20a agent-app Up 0.0.0.0:1617->1617/tcp
查看服务日志
bash
docker logs -f agent-app
输出示例:
INFO: Uvicorn running on http://0.0.0.0:1617
本地测试服务
bash
curl http://127.0.0.1:1617
三、下载 Cloudflare Tunnel
-
访问 Github Release 页面:
-
下载安装包:
- 下载文件:
cloudflared-linux-x86_64.rpm
- 下载文件:
-
上传到服务器:
bash# 上传到指定目录 /opt/cloudflared/ # 查看文件 cd /opt/cloudflared ls -lh输出示例:
-rw-r--r-- 1 root root 18M cloudflared-linux-x86_64.rpm
四、安装 Cloudflare Tunnel
安装命令
bash
dnf install -y /opt/cloudflared/cloudflared-linux-x86_64.rpm
验证安装
bash
cloudflared version
输出示例:
cloudflared version 2026.6.1
出现版本号说明安装成功。
五、创建临时 Tunnel
执行命令
bash
cloudflared tunnel --url http://localhost:1617
输出结果
INF Requesting new quick Tunnel on trycloudflare.com...
INF Your quick Tunnel has been created!
https://cafe-repairs-represent-romance.trycloudflare.com
出现 trycloudflare.com 地址说明创建成功。
六、访问公网地址
-
浏览器打开:
- 地址:
https://cafe-repairs-represent-romance.trycloudflare.com
- 地址:
-
访问 FastAPI 项目:
- Swagger 文档:
https://cafe-repairs-represent-romance.trycloudflare.com/docs
- Swagger 文档:
七、后台运行 Tunnel
后台启动命令
bash
nohup cloudflared tunnel \
--url http://localhost:1617 \
> /var/log/cloudflared.log 2>&1 &
查看运行状态
bash
# 查看进程
ps -ef | grep cloudflared
# 查看日志
tail -f /var/log/cloudflared.log
八、常见问题
1. Github 下载慢
- 解决方案:可以在 Windows 系统下载 RPM 包后,通过 SCP 或 FTP 上传至服务器安装。
2. 访问出现 404
-
原因:Cloudflare Tunnel 已成功工作,但 FastAPI 未配置对应路由。
-
示例路由配置 :
python@app.get("/") async def root(): return {"msg": "hello"} -
说明 :如果没有配置根路径路由,访问根路径会返回
404 Not Found。
3. 域名会变化
- 说明 :
trycloudflare.com为临时免费域名。 - 注意 :每次重启
cloudflared tunnel --url http://localhost:1617都会生成新的域名。
九、总结
Cloudflare Tunnel 是目前最简单的免费内网穿透方案之一。
优点:
- ✅ 完全免费
- ✅ 无需公网 IP
- ✅ 无需路由器端口映射
- ✅ 自动 HTTPS 加密
- ✅ 支持多种服务(Docker、FastAPI、SpringBoot、Dify、Ollama 等)
通过以上简单几步,即可将本地服务安全发布到公网,方便远程访问和测试。