Post

使用 Cloudflare Tunnel 实现内网穿透

该教程介绍了一个用于管理 Cloudflare Tunnel 的 Linux 脚本 `cf-tunnels.sh`,支持安装隧道、选择性删除隧道及完全删除 `cloudflared`。使用前提:拥有 Cloudflare 账号并添加域名,Linux 服务器具备 sudo 权限。通过下载脚本、赋予执行权限并运行,即可出现菜单选择操作。安装时需输入隧道名称、域名及本地服务端口(默认 80),脚本自动完成 `cloudflared` 安装、登录授权、隧道创建和系统服务配置,确保开机自启。选择性删除会列出所有隧道,用户指定要删除的隧道 ID 或名称,脚本清理连接并删除隧道,但需手动前往 Cloudflare 官网删除相关 DNS 记录。完全删除则停止并移除 `cloudflared` 及其所有文件。此脚本简化了隧道生命周期管理,但删除隧道后需手动清理 DNS 记录。

网站部署 阅读 1 点赞 0 评论 0

导语

在日常开发或运维中,我们常常需要将本地服务或内网应用暴露到公网访问(例如远程调试、家庭NAS服务等)。但传统的内网穿透方案要么需要复杂的端口映射,要么面临安全风险。Cloudflare Tunnel 作为一款安全可靠的内网穿透工具,通过隧道代理实现无需公网IP即可访问内网服务。本文将通过 cf-tunnels.sh 脚本,帮助你快速完成 Cloudflare Tunnel 的安装、管理和删除,让内网穿透变得简单高效。

1. 准备工作

在开始之前,请确保你的环境满足以下条件,否则可能会导致脚本执行失败:

  • Cloudflare 账号与域名:你需要拥有一个 Cloudflare 账号(点击注册),并在 Cloudflare 控制台添加了需要穿透的域名(例如 example.com)。
  • Linux 服务器:脚本仅支持 Linux 操作系统,确保你的服务器运行的是 Ubuntu、CentOS 等主流 Linux 发行版。
  • SSH 访问与权限:你需要通过 SSH 登录服务器,并且拥有 sudo 权限(用于安装软件和修改系统配置)。

提示:如果你的域名还未添加到 Cloudflare,需先在 Cloudflare 控制台完成域名添加,并确保 DNS 记录已正确配置(例如 A 记录指向服务器 IP)。

2. 下载并安装脚本

2.1 下载脚本文件

首先,通过 curl 命令从 GitHub 仓库下载 cf-tunnels.sh 脚本文件(脚本由第三方维护,确保来源可信):

# 从项目仓库下载脚本
curl -O https://raw.githubusercontent.com/jiuerkeji/cloudflare-tunnels/main/cf-tunnels.sh

2.2 添加执行权限

下载完成后,需要为脚本添加可执行权限,否则无法直接运行:

# 赋予脚本执行权限
sudo chmod +x cf-tunnels.sh

3. 运行脚本与操作选择

运行脚本后,会进入交互式菜单,提供三种核心操作选项。执行以下命令启动脚本:

sudo ./cf-tunnels.sh

执行后,你将看到如下菜单:

请选择操作:
1. 安装 Cloudflare 内网穿透
2. 选择性删除 Cloudflare 隧道
3. 完全删除 cloudflared

接下来,我们将详细讲解每个选项的使用方法。

4. 详细操作指南

4.1 安装 Cloudflare 内网穿透(选项 1)

选择 1 进入隧道安装流程,这是最常用的场景(将本地服务通过隧道暴露到公网)。安装过程需要你提供以下关键信息:

4.1.1 输入隧道配置参数

  • 隧道名称:自定义隧道的标识名称(例如 my-web-server),仅用于区分不同隧道。
  • 域名:输入你在 Cloudflare 已添加的域名(例如 example.com),确保该域名已完成 DNS 配置。
  • 本地服务端口:输入本地服务的监听端口(默认值为 80,通常对应 HTTP 服务;若你的服务使用 443 或其他端口,可自定义修改)。

4.1.2 脚本执行流程

脚本会自动完成以下操作:
1. 下载并安装 cloudflared:Cloudflare 官方客户端,负责隧道通信。
2. Cloudflare 授权:通过浏览器或 CLI 完成 Cloudflare 账号登录(首次使用需验证)。
3. 创建隧道与域名绑定:在 Cloudflare 中创建隧道,并将指定域名指向该隧道。
4. 配置系统服务:将隧道注册为系统服务,确保服务器重启后自动启动。

完成后,隧道将自动启动并运行,你可以通过绑定的域名直接访问内网服务。

4.2 选择性删除 Cloudflare 隧道(选项 2)

选择 2 可管理已创建的隧道,适用于不再需要某个隧道的场景。执行后,脚本会列出所有已创建的隧道(包含隧道 ID 和名称),例如:

当前存在的隧道列表:
1. ID: abc123, 名称: my-web-server, 状态: 运行中
2. ID: def456, 名称: home-nas, 状态: 已停止

你只需输入要删除的隧道 ID 或名称,脚本会执行以下步骤:
1. 终止该隧道的运行进程。
2. 删除隧道的配置信息。
3. 注意:隧道删除后,必须手动登录 Cloudflare 控制台,删除与该隧道绑定的 DNS 记录(脚本会提示此操作),否则域名将无法正常解析。

4.3 完全删除 cloudflared(选项 3)

选择 3 用于彻底卸载 cloudflared 及其相关文件,适用于完全放弃 Cloudflare Tunnel 服务的场景。执行后,脚本会:
1. 停止并禁用 cloudflared 系统服务。
2. 删除可执行文件、配置文件、日志文件及缓存数据。
3. 清理残留的隧道配置(若有)。

执行完成后,服务器上将不再存在任何与 Cloudflare Tunnel 相关的文件和服务。

5. 注意事项

  1. 手动删除 DNS 记录:删除隧道后,务必登录 Cloudflare 控制台(域名管理页),删除与隧道绑定的 DNS 记录(通常是 A 记录或 CNAME 记录),否则域名可能仍指向已删除的隧道。
  2. 定期维护隧道:若长期使用多个隧道,建议定期通过脚本或 Cloudflare 控制台检查状态,避免废弃隧道占用资源。
  3. 保持 cloudflared 更新:如需继续使用 Cloudflare Tunnel,可通过脚本的更新选项(若有)或手动下载最新版 cloudflared,确保功能和安全性。

小结

通过 cf-tunnels.sh 脚本,我们可以高效完成 Cloudflare Tunnel 的全生命周期管理:
- 安装:只需三步输入参数,自动完成隧道配置与服务部署;
- 删除:支持选择性删除隧道或彻底卸载客户端,避免残留;
- 关键提示:删除隧道后需手动清理 DNS 记录,确保服务完全移除。

借助 Cloudflare Tunnel 的安全优势(基于 HTTPS 加密、无需暴露公网 IP),配合脚本的简化操作,你可以轻松实现内网服务的公网访问。

继续阅读

全部归档
通过WSL2、Docker 和 NPS 实现网站部署方案
通过WSL2、Docker 和 NPS 实现网站部署方案

本教程指导将闲置笔记本变为个人服务器,通过WSL2(Ubuntu 24.04)在Windows下运行Linux环境,安装Docker及Docker Compose实现应用容器化部署,再使用NPS内网穿透工具(VPS服务器端+本地客户端)将本地服务暴露至公网。以Navidrome音乐服务器为例演示完整流程:配置WSL2资源、调整防火墙、安装Docker、编写docker-compose.yml并启动服务。关键结论:WSL2提供一致开发环境;Docker简化部署;NPS通过服务器端与客户端映射实现公网访问;需注意国内VPS可能需备案,防火墙仅开放必要端口。读者可低成本、无公网IP条件下自由部署个人网站。

混合技术应用
混合技术应用

本文通过9个典型场景,拆解RAG、Agent、多模态处理、工具调用、工程化部署等核心技术的混合应用逻辑。RAG构建企业知识库,解决幻觉与私有知识问题,生产端经文档解析、智能切片、向量化建库,消费端通过多路召回、重排、流式生成实现闭环。Agent通过意图路由、短期/长期记忆与工具调用形成对话记忆闭环;多Agent编排借助总控与子Agent分工处理复杂任务。FC、MCP与RAG构成“黄金三角”,分别负责动态工具调用、标准化接入与静态知识检索。多模态摘要降维、NL2SQL自助取数、高并发工程策略、数仓ETL及推荐系统三层链路进一步拓展应用边界。读者可掌握从技术选型到系统落地的完整思路,核心在于场景化组合RAG+向量库+大模型+工具链的底层逻辑。

OpenClaw 自托管 Agent 网关
OpenClaw 自托管 Agent 网关

OpenClaw是一个自托管开源AI助手网关,将飞书、钉钉、微信等聊天软件统一接入本地LLM Agent,实现多渠道统一接入、自托管安全可控。其核心三层架构(Channel/Brain/Body)实现关注点分离:Gateway层负责消息路由与鉴权,从不调用模型;Brain层负责指令解析、人格定义和LLM推理,支持Claude/GPT等模型无缝切换;Body层提供工具调用(如天气、日程)和文件操作。消息处理遵循七阶段Agentic循环(归一化、路由、上下文组装、LLM推理、ReAct工具循环、技能加载、持久化记忆)。记忆采用Markdown+YAML文件存储,支持人工编辑和Git备份,通过检索式访问避免上下文窗口爆炸。自动化任务支持Heartbeat心跳、Cron定时和Webhook事件触发。安全设计三道权限闸:入口闸(本地连接与配对码)、工具闸(默认拒绝白名单)、执行闸(Docker沙箱隔离)。实践踩坑提示包括记忆选择性遗忘、技能依赖耦合、Cron时区问题及Docker权限控制。核心优势:透明可控、安全隔离、灵活扩展。

评论