
每一个搞技术的人,内心深处大概都有一个执念:拥有一方完全属于自己的互联网领地:一个个人网站。
但现实往往是劝退的:买云服务器(VPS)是一笔不菲的持续开销,配置低了跑不动,配置高了钱包疼;如果要在公网裸奔,还得时刻提防端口扫描和暴力破解,维护成本极高;转头去搞纯静态博客(如 Hexo)吧,虽然免费,但没有后台管理,想用手机随时随地写点东西还得重新部署,还得自己折腾前端代码,很多人(包括我)走到这一步就放弃了。
最近,为了给我的 FPGA学习和项目找个归档的地方,我探索出了一套几乎零成本、安全、维护简单的切实可行方案。
核心思路是: 利用家里现成的 NAS 作为服务器,配合只需 10 块钱一年的域名,利用 Cloudflare Tunnel(隧道)进行免费内网穿透,再叠加上 Cloudflare Zero Trust 的企业级安全策略。哪怕你没有公网 IP,也能把博客跑起来。当然不仅可以搭建网站,也可以基于这个方案搭建自己的图床、网盘之类的工具。
今天就来复盘一下搭建全过程。

在这个方案中,我们不再需要昂贵的公网服务器,数据全部在自己手里:
基础设施: 本地 NAS(作为服务器,7x24小时运行,省电且稳定)。
建站工具: Halo(强大的动态博客系统,支持 Docker 一键部署)。
隧道: Cloudflare Tunnel (CFUI) —— 不需要公网 IP,不需要在路由器开端口。
安全管理: Cloudflare Access —— 在博客登录页前加一道锁。
去腾讯云或阿里云,搜索 .top / .xyz /.online等后缀的域名,首年往往只需要 10-20 元人民币。
购买后,不要用云厂商默认的 DNS。请注册一个 Cloudflare 账号,添加域

按照提示将域名的 Nameservers (NS记录) 修改为 Cloudflare 提供的地址。每个人的都不一样。
修改 DNS 后,全球生效通常需要几分钟到几小时不等。当你在 CF 后台看到域名状态变为Active时,地基就打好了。

我们利用 Docker 来解决一切软件依赖
Halo 是目前最适合国人习惯的动态博客系统。在 NAS 的 Docker 管理器中拉取 Halo 镜像,关键点在于:
8090)。/root/.halo 目录,确保你的文章数据不会丢失。services:
halo:
image: halohub/halo:2.22.11
container_name: halo
restart: always
ports:
- "8090:8090" # 将容器的端口映射到宿主机的端口
volumes:
- ./halo:/root/.halo # 挂载容器数据目录到本地文件夹,确保数据持久化
environment:
- TZ=Asia/Shanghai # 设置时区为上海,可根据需要调整
- HALO_EXTERNAL_URL=https://afxlab.adriftcore.online/ # 替换为你博客的域名或IP地址官方的 cloudflared 只有命令行,对于 NAS 用户来说,使用第三方封装的 CFUI 镜像会更加直观方便。
services:
cfui:
image: czyt/cfui:latest
container_name: cfui
restart: unless-stopped
ports:
-:
volumes:
- /volume1/docker/cloudflare/data:/app/data
environment:
- PORT=
- TZ=Asia/Shanghai
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M进入Zero Trust创建隧道,需要信用卡,但是0收费,在 Cloudflare Zero Trust 面板创建一个 Tunnel,复制那个长长的 Token。

在 NAS 启动 CFUI 容器,填入 Token。

连接成功后: 在 CF 后台配置 Public Hostname,将你的域名(如 blog.xxx.com)指向 NAS 的局域网 IP + Halo 端口(如 http://192.168.1.20:8089)。


此时,你在外网已经可以通过域名访问家中 NAS 上的博客了
既然是个人 FPGA 小站,我不希望任何无关人员窥探我的后台,甚至不希望暴露我的登录入口。这里我们可以借助Cloudflare 的杀手锏——Zero Trust以及halo本身的机制来进行规避
在 Halo 后台开启 2FA(两步验证),配合手机上的 Authenticator App(应用商城下一个微软的Authenticator即可)。即使有人突破了第一道防线,没有动态码也寸步难行。
个人中心->身份认证

为了把安全做到极致,我们不仅要在底层设防,还要在表面上做文章。
默认情况下,Halo 的菜单栏会有一个登录按钮。
我们可以直接把它干掉:
现在的博客看起来就像一个纯静态的 HTML 网站,完全找不到入口。你自己怎么进? 很简单,记住那个秘密通道:手动在浏览器地址栏输入 你的域名/console

因为走了 Tunnel 隧道,黑客 Ping 你的域名,只能得到 Cloudflare 的泛播 IP,你家真实的宽带 IP 根本不会暴露,DDoS 攻击无从下手。但是,还是可能会有人通过撞库来访问你的后台。
在 CF Zero Trust 后台创建一个 Application,保护路径设置为 /console(Halo 的管理后台)。策略选择Allow,并指定只有我的邮箱可以接收验证码之后才能访问后台的登录页面。





当陌生人试图访问 你的域名/console 准备爆破密码时,他们连 Halo 的登录框都见不到,会被 Cloudflare 直接拦截在外面。

至此,一个托管在本地 NAS、数据完全自主可控、且拥有企业级安全防御的个人博客就搭建完成了。
对于我们技术人员来说,折腾的过程本身就是一种乐趣。看着自己用极低的成本(10块钱/年)搭建起这个承载着 FPGA 知识库的小站,那种成就感是现成的商业平台无法给予的。
如果你也有 NAS,不妨也试试这套方案,给自己的博客安个家。
- -THE END- -