最近使用Cloudflare Tunnel进行内网穿透,感觉非常方便,只需要一个域名,即可无公网开网站,而且自动配置HTTPS证书。
这样可以确保浏览器安全访问且没有难看的端口号。

速度如图:

20250801134754622

实测速度不错,如果想要SaaS加速的话,可以测试下,对我来说这个够用了。

下面教程开始:

准备条件

  • 一台 Debian 12 主机

  • 已注册并管理的 Cloudflare 账号

  • 已在 Cloudflare DNS 中添加并解析好的域名(例如 scendr.dpdns.org

安装内网穿透

  1. 下载并安装 cloudflared DEB 包

    # 从 GitHub Release 下载最新的 cloudflared 安装包
    curl -L http://hk-proxy.gitwarp.com/https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
    
    # 安装 cloudflared
    sudo dpkg -i cloudflared.deb
    
  2. 验证安装结果
    cloudflared --version  
    # 示例输出:cloudflared version 2025.7.0 (built 2025-07-03-1705 UTC)
    
  3. 登录 Cloudflare 账号以获取证书
    # 该命令会在控制台输出一个 URL,打开后扫码或登录即可
    cloudflared tunnel login
    # 登录成功后,会在 ~/.cloudflared/ 下生成 cert.pem
    
  4. 创建 Tunnel
    # 这里以“Debian”做为 Tunnel 名称,生成的隧道 ID 会写入 JSON 凭证文件
    cloudflared tunnel create Debian
    # 记录下输出的隧道 ID(比如:09e3885d-0f96-4182-bf7f-5153417f40f4)
    
  5. 编辑 Tunnel 配置
    vim ~/.cloudflared/config.yaml
    

    在文件中填入:

    tunnel: 09e3885d-0f96-4182-bf7f-5153417f40f4        # 第 4 步创建的隧道 ID
    credentials-file: /root/.cloudflared/09e3885d-0f96-4182-bf7f-5153417f40f4.json
    
    ingress:
      - hostname: "*.scendr.dpdns.org"                # 通配符子域名
        service: http://127.0.0.1:80                  # 转发到本地 NPM 的 80 端口
      - service: http_status:404                      # 默认 404 兜底
    
  6. 创建 systemd 单元文件
    sudo tee /etc/systemd/system/cloudflared.service << 'EOF'
    [Unit]
    Description=Cloudflare Tunnel
    After=network.target
    
    [Service]
    Type=simple
    # 使用 config.yaml 启动,不指定名字参数
    ExecStart=/usr/local/bin/cloudflared tunnel --config /root/.cloudflared/config.yaml run
    Restart=always
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  7. 启用并启动服务
    # 重载 systemd 配置
    sudo systemctl daemon-reload
    
    # 启动并检查状态
    sudo systemctl start cloudflared
    sudo systemctl status cloudflared
    
    # 设置开机自启
    sudo systemctl enable cloudflared
    
  8. 验证 DNS CNAME
    dig +short CNAME test.scendr.dpdns.org
    # 应返回:09e3885d-0f96-4182-bf7f-5153417f40f4.cfargotunnel.com.
    

安装NPM

Docker未安装则使用便捷脚本一键安装

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

方便快捷,Great推荐~

面板配置

  1. 打开浏览器访问 http://<你的宿主机 IP>:81

  2. 使用默认账号登录:

  3. 进入 Hosts → Proxy Hosts → Add Proxy Host

    • Domain Names: app.scendr.dpdns.org(或其他子域)

    • Scheme: http://

    • Forward Hostname / IP: 127.0.0.1

    • Forward Port: 你的内网服务端口(如 Tailscale 联通的服务端口)

    • 勾选 Block Common Exploits, Websockets Support(如需)

  4. 保存后即可通过 https://app.scendr.dpdns.org 访问内网服务(流量将经 Cloudflare Tunnel → NPM → 内网)。


小结

  • Cloudflare Tunnel 负责把外部流量穿透到本机 80 端口;

  • Nginx Proxy Manager 接收本地 80/81 端口流量,并在面板中灵活分发到不同内网服务;

  • 二者采用 Host 模式共享网络,确保流量无缝互通。