✅ 核心思路

 

流量走向如下:

用户访问 (https://app.你的域名.com) $\rightarrow$ Cloudflare 边缘节点 $\rightarrow$ 加密隧道 $\rightarrow$ 家中 Linux 主机 (cloudflared) $\rightarrow$ 本地端口 (localhost:端口)


 

🛠️ 准备工作

 

  1. 域名: 必须有一个托管在 Cloudflare 上的域名(将 NS 记录指向 Cloudflare)。

  2. 账号: 开通 Cloudflare Zero Trust(免费版即够用,需要绑定一张信用卡或 PayPal 用于验证,不会扣费)。

  3. 环境: 你的 Linux 主机已安装 1Panel,且应用(如 MaxKB、DataEase)已启动并能通过 内网IP:端口 访问。


 

🚀 详细步骤 (使用 Zero Trust 面板图形化配置)

 

我推荐使用 Cloudflare Zero Trust Dashboard 进行配置,这比在 Linux 敲命令行改 YAML 配置文件要简单直观得多。

 

第一步:创建隧道 (Create Tunnel)

 

  1. 登录 Cloudflare Zero Trust Dashboard

  2. 在左侧菜单点击 Networks -> Tunnels

  3. 点击 Create a tunnel

  4. Select connector: 选择 Cloudflared,点击 Next。

  5. Name your tunnel: 给隧道起个名字,例如 home-server,点击 Save tunnel。

 

第二步:在 Linux 主机安装连接器

 

  1. 在 Cloudflare 页面上,你会看到 "Install and run a connector" 的界面。

  2. 选择你的操作系统环境(通常是 Linux -> Debian/UbuntuCentOS/RedHat,根据你 1Panel 宿主机的系统选择)。

  3. 页面下方会生成一串 sudo cloudflared service install... 开头的命令

  4. 复制这行命令,粘贴到你 Linux 主机的 SSH 终端中执行。

  5. 执行完毕后,Cloudflare 网页底部的 Connectors 状态应该会很快变成 Connected(绿色)。点击 Next。

 

第三步:配置公网主机名 (Public Hostname)

 

这一步是将你的域名映射到 1Panel 里的具体应用端口。

假设你想把 MaxKB 暴露出去,MaxKB 在 1Panel 里显示的本地端口是 8082

  1. 进入 Public Hostnames 标签页,点击 Add a public hostname

  2. Subdomain (子域名): 输入你想使用的前缀,例如 ai

  3. Domain (域名): 选择你的主域名,例如 example.com

    <ul>
    	<li>
    	<p>结果:<code>ai.example.com</code></p>
    	</li>
    </ul>
    </li>
    <li>
    <p><strong>Service (服务配置):</strong></p>
    
    <ul>
    	<li>
    	<p><strong>Type:</strong> 选择 <strong>HTTP</strong> (注意:即使外网是HTTPS,这里通常选 HTTP,因为隧道内部到本地应用通常是明文 HTTP)。</p>
    	</li>
    	<li>
    	<p><strong>URL:</strong> 输入 <code>localhost:8082</code> (将 <code>8082</code> 替换为你 1Panel 中具体应用的端口)。</p>
    	</li>
    </ul>
    </li>
    <li>
    <p>点击 <strong>Save hostname</strong>。</p>
    </li>
    

🎉 完成! 现在你在外网访问 https://ai.example.com,Cloudflare 就会自动通过隧道连接到你家里电脑的 8082 端口。


 

🧩 进阶:如何结合 1Panel 的反向代理 (OpenResty)

 

1Panel 本身有一个强大的 OpenResty (Nginx) 反向代理功能。你是应该直接把隧道指向 应用端口,还是指向 1Panel 的 OpenResty 呢?

 

方案 A:隧道直连应用 (简单,推荐)

 

  • 配置: Cloudflare Tunnel (Host: ai.example.com) $\rightarrow$ localhost:8082 (MaxKB 容器端口)。

  • 优点: 简单粗暴,无需在 1Panel 里再配置“反向代理”网站。

  • 缺点: 每一个应用都要去 Cloudflare 后台加一条 Public Hostname 记录。

 

宝塔/1Panel 用户的常见问题:重定向循环

 

如果你使用 1Panel 的 OpenResty 建立了网站(例如绑定了域名),并且开启了 强制 HTTPS,通过 Tunnel 访问时可能会出现 "Too many redirects" 错误。

  • 解决方法: 在 Cloudflare Tunnel 的 Service 配置中,Type 选 HTTP,URL 填 localhost:端口不要让 Cloudflare 去连接 1Panel 那个开了 HTTPS 的端口。让 Cloudflare 处理外网的 HTTPS,隧道内部走 HTTP 即可。