Raspberry Pi 隧道设置

Raspberry Pi 上的 Cloudflare Tunnel,打造全天候家用服务器

本指南适用于 Raspberry Pi 或小型迷你电脑持续运行 cloudflared,绑定真实主机名。涵盖安装、systemd 配置、安全检查,以及何时选择 GhostlyShare 或 ghs CLI。

目标是稳定的出站连接,而非神奇的匿名。访客无需路由器权限,但 Cloudflare、账户安全及使用习惯依然重要。

最佳场景:需持续可访问的小型服务。

当隧道需在笔记本休眠、桌面注销及日常工作中持续运行时,Raspberry Pi 非常实用。若偏好应用或 CLI 操作流程,GhostlyShare 也适合长时间共享。

简答:隧道需持续在线时,使用 Raspberry Pi

当网站、仪表盘、Webhook 端点或实验服务需持续访问且不依赖日常笔记本时,Raspberry Pi 是理想的 Cloudflare Tunnel 连接器。除此之外,GhostlyShare 也提供更简便的隧道方案。

需求使用原因
家用服务的全天候主机名Raspberry Pi 上的 Cloudflare TunnelPi 可持续在线,支持可预测重启,并以 Linux 服务方式运行 cloudflared。
预览、Webhook 回调或托管共享GhostlyShareGhostlyShare 将隧道流程集成于应用或 CLI,简化了手动维护 cloudflared 配置的复杂度。
具更强隔离性的生产应用VPS 或托管服务公共服务器通常更易监控、备份,并与家庭网络隔离。

简易架构:访客、Cloudflare、Pi、本地服务

Cloudflare Tunnel 保持源端出站连接。Raspberry Pi 向 Cloudflare 建立连接,Cloudflare 将你的公网主机名映射到本地服务,如 localhost:3000 或局域网地址。

访客

访问者连接的是你的公共主机名和 Cloudflare 边缘节点,而不是你家庭网络的路由器端口。

Cloudflare

Cloudflare 负责该主机名的公共边缘、DNS 区域、隧道映射和请求路径。

Raspberry Pi

cloudflared 在 Pi 上运行,保持与 Cloudflare 的出站连接会话。

本地服务

实际应用可以运行在 localhost、其他端口,或 Pi 可访问的局域网主机上。

不要将其视为对所有方的隐私防护墙,主要是防止访客和随机扫描直接访问你的家庭路由器或获知源地址。

安装 cloudflared 前准备 Raspberry Pi

大多数隧道故障并非由 Cloudflare 引起,通常是设备不稳定、本地服务地址变化或服务用户无法读取配置文件导致。

使用稳定的 Linux 系统基础

从 Raspberry Pi OS 或 Debian 开始,更新系统,设备支持时优先使用 64 位版本。

稳定本地网络环境

为 Pi 提供可靠的网络连接,优先使用有线以太网或 DHCP 保留地址,尤其当服务访问局域网主机时。

先确认本地应用正常

确保应用在本地正常运行,再涉及 Cloudflare、DNS 或 systemd 配置。

确定哪些内容需保密

避免意外暴露管理面板,将私有工具放在 Cloudflare Access 后或保持本地访问。

硬件选择:优先 Raspberry Pi 5 套装而非裸板

作为隧道连接器,Raspberry Pi 5 套装比裸板更稳定。你需要主板、稳定的 USB-C 电源、散热或风扇,以及可靠的存储,避免因硬件问题误判 Cloudflare 断线。

用作小型 Cloudflare Tunnel 家庭服务器的 Raspberry Pi 5 套装
推荐硬件

用于小型 Cloudflare Tunnel 家庭服务器的 Raspberry Pi 5 套装

寻找带有可靠 USB-C 电源、散热、机箱和存储的 Raspberry Pi 5 套装。4GB 内存足够运行 cloudflared,8GB 内存适合同时运行应用。

在亚马逊查看
作为亚马逊联盟会员,我从符合条件的购买中获得收益。
购买清单

优先选择官方 Raspberry Pi 27W USB-C 电源或等效的 5V/5A 电源,切勿忽视散热。电源不足和过热会导致隧道不稳定,即使 cloudflared 配置正确。

Cloudflare Tunnel Raspberry Pi 安装指南

使用 Cloudflare 控制面板或官方文档获取适合你 Pi 架构的最新安装命令。以下命令仅作安全操作顺序参考,包地址可能会变。

1

步骤 1:更新 Pi 并确认架构

先安装更新,再确认架构,以便从 Cloudflare 复制正确的 cloudflared 安装命令。

ShellLinux 终端
sudo apt update
sudo apt upgrade -y
dpkg --print-architecture
2

步骤 2:使用当前官方命令安装 cloudflared

请使用 Cloudflare 控制台或文档中适合您架构的最新 Linux 命令,安装后验证二进制文件。

ShellLinux 终端
# Paste the current official Cloudflare install command for your Pi here.
cloudflared --version
3

步骤 3:认证并创建命名隧道

授权 Cloudflare 区域,创建命名隧道,并从输出中复制隧道 UUID。

ShellLinux 终端
cloudflared tunnel login
cloudflared tunnel create home-pi
4

步骤 4:编写明确的 config.yml 配置文件

运行前请替换隧道 UUID、主机名、本地服务和凭据路径。回退规则应保持在最后。

ShellLinux 终端
mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.yml
ShellLinux 终端
tunnel: <tunnel-uuid>
credentials-file: /home/pi/.cloudflared/<tunnel-uuid>.json

ingress:
  - hostname: app.example.com
    service: http://localhost:3000
  - service: http_status:404
5

步骤 5:验证配置,设置 DNS 路由,并前台运行

验证入口规则,创建 DNS 路由,测试时保持隧道前台运行以便从其他网络访问。

ShellLinux 终端
cloudflared tunnel ingress validate
cloudflared tunnel route dns home-pi app.example.com
cloudflared tunnel run home-pi

使用正确配置路径以 Linux 服务方式运行 cloudflared

Linux 上关键是配置路径。若用 sudo 安装服务,主目录可能变为 root 的,服务可能找不到你以 pi 用户测试的配置。

1

服务步骤 1:使用明确配置路径安装服务

避免了测试时 pi 用户配置与服务账户因 sudo 主目录不同步的常见问题。

ShellLinux 终端
sudo cloudflared --config /home/pi/.cloudflared/config.yml service install
2

服务步骤 2:启用服务并检查状态

通过 systemd 启动 cloudflared,确认其使用预期配置且运行正常。

ShellLinux 终端
sudo systemctl enable --now cloudflared
systemctl status cloudflared
3

服务步骤 3:查看日志并测试重启

通过日志排查配置路径、凭据、DNS 和本地服务错误,确保路由可靠。

ShellLinux 终端
journalctl -u cloudflared -f
sudo systemctl restart cloudflared
systemctl status cloudflared

小型常在线隧道运维清单

只有重启、更新、日志和访问规则都稳定,家庭隧道才算真正可靠。广泛分享前请先测试这些基础环节。

重启测试

重启 Raspberry Pi,确认主机名正常工作,无需先打开 SSH 会话。

访问规则

将私有应用置于 Cloudflare Access、强认证登录或仅限本地网络边界后面。

更新

定期更新操作系统和 cloudflared,更新后验证服务状态。

日志管理

切勿公开包含隧道 ID、账户邮箱、主机名或私有服务名的日志或截图。

备份

请有意识地备份配置,但要像保护机密一样保护隧道凭据。

隐私限制

此配置对访客隐藏源服务器,但不会隐藏你的 Cloudflare 账户、域名痕迹或管理员操作。

GhostlyShare 与 ghs CLI 的应用场景

当你想要类似 Cloudflare 的本地分享,但不想维护复杂的 cloudflared 配置时,GhostlyShare 是更轻便的选择。它适合快速预览、Webhook 回调、脚本流程和有意管理的长时间分享。

使用 Pi 隧道进行手动控制;使用 GhostlyShare 实现托管隧道流程。

这种区分侧重于控制权,而非时长。Raspberry Pi 配合 cloudflared 提供 systemd、明确的配置路径、DNS 所有权和底层服务。GhostlyShare 则提供更简便的应用或 CLI 流程,运行时间可长可短,取决于你的使用方式。

故障排查:优先关注的常见问题

症状可能原因首次检查
显示 Cloudflare 错误页而非应用隧道断开,服务 URL 错误,或本地应用未监听。运行 systemctl status cloudflared、journalctl,并使用 curl 访问 Pi 上的本地服务。
服务在前台运行正常,安装后无法启动systemd 使用了不同的主目录或配置路径。重新安装服务,明确指定 --config 路径为 /home/pi/.cloudflared/config.yml。
主机名无法访问隧道DNS 路由、主机名或 Cloudflare 区域未连接到指定隧道。在 Zero Trust 中确认公共主机名,并运行 cloudflared tunnel info home-pi。
管理页面可被公开访问入口规则指向无访问层的私有工具。将其置于 Cloudflare Access 保护下,或保持服务仅限本地访问。

依赖前请查阅官方文档

设置 Pi 时请保持 Cloudflare 官方文档打开,产品名称、安装命令、控制面板界面及套餐限制可能会变动。

Raspberry Pi Cloudflare Tunnel 常见问题

常见问题

Raspberry Pi 适合用作 Cloudflare Tunnel 吗?

适合。如果你需要一个始终在线的小型家庭服务器或实验室服务连接器,Raspberry Pi 功耗低、性能稳定,比日常笔记本更适合长时间在线。

需要路由器端口转发吗?

不需要。Cloudflare Tunnel 通过 cloudflared 向 Cloudflare 发起出站连接,访问者无需直接访问你的路由器端口。

我应该改用 GhostlyShare CLI 吗?

当你需要应用管理的本地共享(如预览、Webhook、脚本共享或长期在线的共享)时,使用 GhostlyShare 或 ghs CLI。若你想完全控制服务文件、入口配置和主机操作系统,则选择 Raspberry Pi 配合 cloudflared。

这会让我的家庭服务器匿名吗?

不会。它可以对访客隐藏源地址,但 Cloudflare 账户数据、域名记录、付款信息、日志、内容和管理员行为仍可能将项目与你关联。