最近开发完 Mole-go,想给它做个网站用来展示和下载。但我这个后端糙汉子,样式真搞不定,求助 AI 调了半天还是差点意思。最头疼的是,手机端调试得一遍遍输 IP,给朋友演示也得发一串 IP 端口,太不专业了!于是我一顿折腾,搞出了这套方案……

为了解决这些痛点,我摸索出了一套“黄金组合”:Dufs + Mole-go + FRP + Caddy。这套方案打通了从本地到公网域名的全链路,实现了自动 HTTPS、域名访问以及极致的访问体验。

第一步:构建本地内容基石(Dufs)

一切的起点是本地文件服务。我选择使用 Dufs 作为静态文件服务器。它极其轻量,支持上传、搜索、打包下载甚至 WebDAV,是我演示 Web 应用或分发安装包的首选。

通过下面简单的命令,就能在本地 5000 端口启动了静态文件及Web服务。虽然此时它还被“困”在局域网内,但它为后续的展示提供了稳固的基础。

dufs.exe --render-index

我们这个时候将HTML文件放在启动命令时所在文件夹下就可以了。

第二步:突破局域网束缚(FRP 与 Mole-go)

为了让公网流量能顺利精准触达内网,我采用了经典的 FRP 方案,但在客户端层面,我使用了自己开发的 Mole-go。它需要以下几部分配合,注意,像FRP Server部署一次就可以一直使用了。

  • 服务端 (FRP Server):部署在具备公网 IP 的云服务器上,充当流量中转站。这个服务器配置可以很低,因为网站服务在本地电脑,即使本地有数据库,也是消耗的本地主机资源,如果仅作为演示,带宽1MB就可以,这样在公网就可以访问了,非常方便远程调试。

  • 客户端 (Mole-go):这是我为 FRP 打造的桌面管理客户端。它封装了 frpc 核心,不仅提供了直观的 UI,还通过系统托盘设计彻底解决了“关闭窗口即断连”的痛点。

使用 Mole-go,我可以将本地 5000 端口通过加密隧道安全地映射到云端。它出色的资源管理和连接稳定性,确保了演示过程中即便网络波动,链接依然稳固如初。它的下载地址:https://91demo.top/tools/,中文名称是豆子内网管家。

第三步:优雅的网关入口(Caddy)

即便流量已到达公网,我也不希望朋友们通过 http://IP:端口 这种生硬的方式访问。我追求的是“域名+HTTPS”的专业感,这不仅是为了美观,更是为了开发环境需求,比如公众号开发,小程序后端服务等必须 HTTPS 环境。仅需配置一次就可以一直使用了。

我选择了 Caddy 担任“守门人”。Caddy 的魅力在于其近乎零配置的 自动 HTTPS 功能。我看中了它的简单方便,它非常符合我的场景。在 Caddyfile 中,我只需写下:

example.com {    
    reverse_proxy localhost:7000  # 指向 FRP 映射出的本地端口
    }

仅需这一行配置,Caddy 就会自动搞定 SSL 证书的申请与续签。当访问者输入域名时,映入眼帘的是受信任的绿色小锁头,所有的复杂端口逻辑都被完美隐藏。当然,如果你需要高性能,或者服务器已经有了Nginx,你也可以直接使用它。

第四步:最终的演示时刻

配置生效后,我在 5G 网络下打开手机,输入域名——秒开!画面清晰地展示了 Dufs 托管的网站内容。通过 Caddy 的高效转发与 Mole-go 稳定的隧道,整个过程丝滑顺畅。我再也不用频繁地将代码打包上传到生产服务器,只需在本地修改,远端朋友就能实时刷新看到效果。

这种方案不仅节省了部署的时间成本,更赋予了演示过程一种“极致的专业感”。当网站最终打磨完成,朋友点头称赞时,我才会将其正式部署到生产环境并切换为 Nginx 代理。

Dufs + Mole-go + FRP + Caddy 的组合,将本地开发的灵活性与公网访问的便捷性结合到了极致。对于需要频繁进行跨端调试或远程演示的开发者来说,这不仅是一套技术方案,更是一次效率的革命。更重要的是,对于演示来说,如果你的预算有限,你完全可以使用本地主机承载大量的计算资源。它相对云服务器来说还是有性价比的。