一、缘起

岂能尽如人意,但求无愧我心。

搭一个自己的博客,记录生活感受、学习成长、岁月变迁——让消失的留下痕迹,让抵达的可以回望。 这是 NightFall 的初衷。

市面上的博客平台不少,但要么受制于平台的规则与边界,要么样式千篇一律没有个人色彩。最终决定从零搭建:选一个开源可控的框架,配上一个颜值在线的主题,一点一点打磨成自己喜欢的样子。

二、技术选型

选型时考虑了几个维度:开源、可定制、易维护、中文友好

最终方案:

  • Hexo 8.1.1:静态站点生成器,编译快、生态成熟、中文社区活跃
  • Stellar 1.33.1:xaoxuu 出品的 Hexo 主题,模块化设计、文档详尽、颜值在线
  • GitHub Pages:免费托管博客本体,自带 CDN + HTTPS
  • 阿里云轻量服务器:跑后端服务(说说 + 评论),国内访问快
  • 域名 nightfall7.top:阿里云万网注册,ICP 备案合规

Hexo 的好处是「本地写作 → 一键生成 → 推送部署」,所有内容都是 Markdown 源文件,版本可控、迁移方便。Stellar 主题提供了侧边栏 widget、容器标签、tag-plugins 等模块化组件,省去了大量前端开发成本。

三、整体架构

采用前后端分离的 split 架构:

  • 前端(博客本体):走 apex 域 nightfall7.top,CNAME 到 GitHub Pages,享受 GitHub CDN
  • 后端(API + 管理后台):走子域 api.nightfall7.top,A 记录到阿里云服务器

这样分工的好处:前端静态文件白嫖 GitHub 资源(免费 + 全球 CDN + 自带 HTTPS),后端服务独立可扩(评论 / 说说 / 后台互不影响),域名干净(博客走 apex,后端走子域避免 DNS 冲突)。

四、模块设计

4.1 内容组织

四类内容各司其职:

  • 文章:长文写作,技术笔记与生活记录
  • 专栏:系列文章聚合,配 OKR 目标管理追踪进度
  • 笔记本:碎片化笔记,按标签树组织
  • 独立页面:关于 / 友链 / 生活 / 说说等独立模块

每类内容有独立的路由、模板、侧边栏配置,互不干扰。

4.2 侧边栏 widget

主页采用左右双栏布局,widget 各展所长:

  • welcome 博客指南:左栏顶部,霞鹜文楷钢笔楷书风格的便签卡片,写博客宗旨
  • calendar 万年历:右栏日历网格,每格显示农历 / 节气 / 节日,高亮今天,附当日宜忌 + 法定节假日倒计时
  • recent_talks 近期说说:右栏从 ech0 API 动态拉取最新 5 条说说,点击跳详情
  • recent 最近发布:左栏文章列表,sticky 文章带「置顶」渐变徽章
  • related 相关文章:文章内页按专栏机制推荐同主题文章

所有 widget 都可按页面类型(首页 / 文章 / 笔记)灵活配置,不同场景侧边栏内容不同。

4.3 互动系统

  • Artalk 评论:自托管评论系统,Go + SQLite 轻量级,支持 Markdown / 表情 / 图片上传 / 邮件通知。管理面板独立,可封禁 / 审计
  • Ech0 说说:自托管微博客,两列瀑布流布局 + 渐变毛玻璃卡片 + 点赞 / 评论 / 分享三件套 + APlayer 音乐 / Bilibili 视频嵌入

两个服务都跑在阿里云服务器上,通过 Nginx 反代暴露 API,数据独立可迁移。

4.4 视觉设计

全站视觉语言统一:

  • 背景图:山景照片 + 100px 模糊 + 300% 饱和度,整页 fixed 铺底,营造氛围感
  • 卡片:indigo→purple→pink 135deg 紫粉渐变毛玻璃,全站统一(文章卡片 / 说说卡片 / 标签徽章复用同一配色)
  • 字体:正文用思源宋体 Light 字重(笔画瘦劲,类似瘦金体的方正感),welcome 便签保留霞鹜文楷钢笔楷书做层次区分
  • 置顶徽章:sticky 文章标题前渲染「置顶」渐变 badge,复用强调色
  • 代码块:3D 立体阴影(右下偏移硬边阴影)+ 同色系淡渐变背景,呼应侧边栏蓝青绿渐变

视觉打磨的核心是「一致性」:所有强调元素复用同一套渐变配色,所有圆角遵循统一的尺寸阶梯,所有字号遵循同一套比例。

4.5 SEO

  • Open Graph:自动生成 og:type / title / url / image 等社交分享标签
  • Canonical:防备用站 / 盗站分散主站权重,非主站访问弹「备用站 / 盗站」提示并加 noindex / nofollow

五、部署上线

ICP 备案通过后,从 8443 临时端口切 443 标准端口,手机端访问不再被运营商拦截。阿里云 DNS 配 split 架构(apex CNAME GitHub,api A 记录服务器)。Nginx 反代后端容器,SSL 证书走 HTTP-01 自动续期,不用手动续。

部署流程:本地改 Markdown / 配置 → hexo clean && hexo deploy → GitHub Actions 自动构建 Pages → CDN 生效。整个流程不到 1 分钟。

六、回顾与展望

从 6 月底立项到 7 月底稳定运行,一个月迭代了七次(6-26 ~ 7-24)。每一版变更都留档在 Obsidian 笔记,包括变更记录(按日期追加历史)和项目文档(只反映最新状态),方便回溯与复盘。

博客是个长期项目,接下来打算:

  • 丰富生活记录栏目(相册 / 旅行 / 美食)
  • 启用 timeline 时间线标签,把 GitHub issues 当说说发
  • 持续打磨视觉细节(暗色模式 / 移动端适配)

博客的意义不在于有多少人看,而在于有一块属于自己的地方,可以认真地写一些东西。技术框架可以复刻,但写下的字、记录的瞬间,是独一无二的。

让消失的留下痕迹,让抵达的可以回望。