零成本个人公网网站搭建全流程服务器搭建内网穿透绑定域名你是否曾经想拥有一个属于自己的网站却因为服务器租用费用、公网 IP 的昂贵成本而望而却步别担心今天我将带你一步步实现零成本搭建一个可以在公网访问的个人网站你只需要一台能上网的电脑甚至可以是树莓派或旧手机再搭配免费的内网穿透服务就能让你的网站被全世界访问。## 一、准备工作零成本选什么在开始之前我们先明确“零成本”的选型-服务器使用你手头的设备比如一台 Windows/Linux 电脑或者树莓派。如果是 Windows我们可以直接用内置的 IIS 或 Python 的 HTTP 模块。-内网穿透推荐使用ngrok或frp的免费版。ngrok 提供免费域名如xxx.ngrok.io无需注册即可使用但免费版有临时域名限制。我们这里选择更稳定的frp方案它需要一台有公网 IP 的服务器比如阿里云学生机或者使用免费的云服务商如 Vercel不frp 需要服务器端但我们可以用免费云服务器其实这里有个小技巧使用Cloudflare Tunnel完全免费无需公网服务器-域名绑定使用freenom提供的免费域名如.tk、.ml或者直接使用 ngrok 的随机域名但不够个性化。本文最终会教你绑定自己的免费域名。注为了真正“零成本”我们采用Cloudflare Tunnel方案它不需要公网服务器完全免费且性能出色。## 二、搭建本地服务器### 2.1 用 Python 快速创建一个 Web 服务器首先在你的本地电脑上创建一个简单的 Web 站点。打开终端Windows 用 cmd 或 PowerShellMac/Linux 用终端执行以下命令python# 创建一个简单的 HTTP 服务器# 保存为 server.py然后在终端运行python server.pyimport http.serverimport socketserverPORT 8000 # 可以自由修改端口但要保证未被占用class MyHandler(http.server.SimpleHTTPRequestHandler): 自定义请求处理器 def do_GET(self): # 发送响应状态码 self.send_response(200) # 设置响应头表示内容类型为 HTML self.send_header(Content-type, text/html; charsetutf-8) self.end_headers() # 写入 HTML 内容 html !DOCTYPE html html headtitle我的零成本网站/title/head body h1 欢迎来到我的网站/h1 p这是通过 Python 服务器和 Cloudflare Tunnel 搭建的。/p /body /html self.wfile.write(html.encode(utf-8))# 启动服务器监听所有网络接口with socketserver.TCPServer((0.0.0.0, PORT), MyHandler) as httpd: print(f服务器已启动地址http://localhost:{PORT}) httpd.serve_forever()运行后打开浏览器访问http://localhost:8000你应该能看到那个简单的页面。### 2.2 测试本地访问如果页面显示正常说明你的本地服务器已经成功运行。现在我们需要让它变成公网可访问。## 三、使用 Cloudflare Tunnel 实现零成本内网穿透Cloudflare Tunnel 是 Cloudflare 提供的一项免费服务它可以将你的本地服务通过 Cloudflare 的全球网络暴露到公网无需公网 IP。你只需要一个 Cloudflare 账号免费注册。### 3.1 安装 cloudflared 客户端根据你的操作系统下载 cloudflared-Windows从 Cloudflare 官网 下载.exe文件。-Macbrew install cloudflared-Linuxsudo apt install cloudflared或下载二进制文件。### 3.2 启动隧道在终端中运行以下命令bash# 启动一个临时隧道将本地 8000 端口映射到公网cloudflared tunnel --url http://localhost:8000你会看到类似这样的输出2025/03/15 14:23:45 你的隧道 URL: https://random-string.trycloudflare.com打开这个 URL你会看到之前写的 HTML 页面。恭喜你的网站已经通过 Cloudflare 暴露到公网了。### 3.3 持久化隧道可选临时隧道每次重启都会生成新 URL。要固定 URL你需要配置一个持久隧道。步骤如下1. 登录 Cloudflare 控制台进入Zero Trust-Access-Tunnels。2. 点击Create a tunnel选择Cloudflared命名为my-website。3. 按照提示安装连接器其实就是运行一段命令然后添加公网域名映射比如your-domain.com指向localhost:8000。## 四、绑定免费域名### 4.1 获取免费域名前往 freenom 注册一个免费域名如yourname.tk。注册后你需要将其 DNS 服务器指向 Cloudflare。### 4.2 将域名交给 Cloudflare 管理1. 在 Cloudflare 控制台中添加你的域名。2. 按照提示将 freenom 的 DNS 服务器修改为 Cloudflare 提供的两个地址如alice.ns.cloudflare.com和bob.ns.cloudflare.com。3. 等待 DNS 生效通常几分钟到几小时。### 4.3 配置 DNS 记录在 Cloudflare 的 DNS 设置中添加一条 CNAME 记录- 类型CNAME- 名称或www取决于你想用哪个子域名- 目标你的隧道域名如your-tunnel-id.cfargotunnel.com然后在 Tunnel 配置中将该域名映射到本地 8000 端口。## 五、完整示例一个动态页面下面是一个更复杂的例子展示如何用 Python 处理用户输入python# 一个带表单的动态网站# 保存为 dynamic_server.pyimport http.serverimport urllib.parseclass DynamicHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): if self.path /: self.send_response(200) self.send_header(Content-type, text/html; charsetutf-8) self.end_headers() # 生成一个简单的表单 html !DOCTYPE html html headtitle动态网站/title/head body h1输入你的名字/h1 form methodGET action/greet input typetext namename placeholder请输入名字 required button typesubmit发送/button /form /body /html self.wfile.write(html.encode(utf-8)) elif self.path.startswith(/greet): # 解析 URL 参数 parsed urllib.parse.urlparse(self.path) params urllib.parse.parse_qs(parsed.query) name params.get(name, [朋友])[0] self.send_response(200) self.send_header(Content-type, text/html; charsetutf-8) self.end_headers() html f !DOCTYPE html html headtitle问候/title/head body h1你好{name}/h1 a href/返回首页/a /body /html self.wfile.write(html.encode(utf-8)) else: self.send_error(404)# 启动服务器import socketserverPORT 8000with socketserver.TCPServer((0.0.0.0, PORT), DynamicHandler) as httpd: print(f动态服务器已启动地址http://localhost:{PORT}) httpd.serve_forever()运行后通过 Cloudflare Tunnel 暴露你就可以在公网访问这个带表单的网站了。## 六、总结通过以上步骤你成功实现了零成本的个人公网网站搭建1.本地服务器使用 Python 的 HTTP 模块快速搭建无需安装复杂软件。2.内网穿透利用 Cloudflare Tunnel 免费服务将本地服务暴露到公网。3.域名绑定通过 freenom 获取免费域名并托管到 Cloudflare 实现自定义域名访问。整个过程没有花费一分钱却让你拥有了一个可以从任何地方访问的个人网站。你可以进一步扩展它比如加入数据库、使用 Flask 框架或者部署一个静态博客。记住技术不一定要昂贵才能强大关键是你如何利用它。快去动手试试吧