这篇记录一下这个站点是怎么搭的,以及为什么这么选。
基本结构
| 项 | 值 |
|---|---|
| 硬件 | QNAP NAS(局域网 REDACTED_NAS_LAN_IP) |
| 运行时 | Container Station · Docker |
| Web 服务 | nginx(Alpine 版,镜像很小) |
| 访问范围 | 仅局域网 |
| 内容目录 | /share/Container/personal-blog/site |
为什么不用 WordPress
NAS 的 /share/Web 里其实躺着一份 2022 年的 WordPress 5.9.3 —— 说明以前试过。但放今天看,它的问题很实际:
- 需要额外的数据库容器,多一层要维护、要备份、会坏的东西
- 插件与主题的漏洞是持续性的,得一直跟着升级
- 这台 NAS 上还跑着密码库,一旦 Web 侧被攻破,影响会外溢
而静态站没有这些:没有数据库、没有可执行后端、备份就是复制一个文件夹。
为什么不直接开公网
公网访问不是"把端口开出去"这么简单:要证书、要端口转发、要防扫描。更重要的是,收益不匹配风险 —— 这个博客暂时只需要我自己和家里人看。
将来真需要公网,再做这几步:域名 → 证书 → 反向代理 → 最小暴露面。到那时也是加一层的事,不用推翻现在的结构。
为什么用 Hugo 而不是手写 HTML
最初这个站就是几个手写的 HTML 文件。能跑,但每加一篇都要复制模板、手改导航、手写日期和摘要——加不了十篇就写不动了。
换成静态站生成器之后:
Markdown 内容 → hugo --minify → 纯静态产物 → scp 到 NAS
- 归档、分类、标签、RSS、sitemap 全部自动生成
- 样式与结构集中在模板里,改一次全站生效
- 内容是纯文本,十年后还能用
备份怎么做
整个站点就是一个文件夹,直接复制走即可:
/share/Container/personal-blog/site
没有数据库导出、没有一致性快照的麻烦。
