项目概述
你现在看到的这个网站,就是我的第一个完整独立部署的 Web 项目。
从域名备案、服务器采购,到站点搭建、HTTPS 证书、自动化部署,全流程独立完成。除了站点本身,还为它写了一套配套的本地工具:notes-ui 笔记工作台——把「写完的 Markdown 笔记 → 线上文章」的全流程做成了浏览器界面,拖拽上传、自动处理图片、分步构建部署。
架构
技术栈
| 组件 | 选择 | 说明 |
|---|---|---|
| 静态站点生成器 | Hugo | 单二进制,构建速度极快 |
| 主题 | Stack | 卡片式设计,简洁美观 |
| Web 服务器 | Nginx | HTTP/2、gzip、静态资源缓存 |
| HTTPS | Let’s Encrypt | 免费证书,certbot 自动续期 |
| 部署 | 自研脚本 | 构建 → 打包 → 上传 → 原子替换 |
| 本地工具 | notes-ui(Flask) | 笔记上传 / 图片处理 / 分步发布 / 文章管理 |
配套工具:notes-ui 笔记工作台
写笔记在本地编辑器,发布却要手工做一堆机械活:建目录、拷图片、改路径、拼 front matter、构建、部署、提交。notes-ui 把这条链路做成了只监听本机的 Web 界面:
- 导入:拖拽
.md文件或整个笔记文件夹(图片自动带上),也可直接粘贴文本;自动剥离笔记自带的 front matter 并预填表单 - 图片处理:按正文引用自动匹配、拷入页面包
images/、统一改写路径,缺失的图片列清单可补传 - 发布流水线:生成页面包 → 构建验证 → 部署上线(二次确认、原子替换可回滚)→ 线上抽查(页面与图片 200 检查)→ git 提交,每步独立日志、可停在中途
- 文章管理:列出全部文章,支持编辑元数据、草稿开关、改 slug、本地预览(托管
hugo server -D)、删除进回收站 - 工程细节:零前端框架的原生单页界面;slug 实时查重;分类/标签全站自动补全;发布时间自动与最新文章错开
技术上是一个单文件 Flask 应用(Python 标准库风格,唯一的第三方依赖就是 Flask 本身),通过 subprocess 编排 hugo / 部署脚本 / git,前端为原生 HTML/JS/CSS 单页,无构建步骤。
项目状态
已上线并稳定运行,持续更新学习笔记中;笔记发布日常已通过 notes-ui 完成。