返回首页
2 分钟阅读

本站技术栈速记

  • 技术
  • Next.js
  • Tailwind

一句话技术栈

选择 原因
框架 Next.js 16 App Router SSR/ISR、Route Handlers、React 19.2
样式 Tailwind CSS v4 用 CSS 变量做主题切换,零配置
动效 motion v12 (前 framer-motion) whileInViewstaggeruseScroll
Markdown unified + remark + @shikijs/rehype 服务端渲染,双主题代码高亮
鉴权 jose + bcryptjs JWT in httpOnly cookie,单管理员
存储 文件系统 .md 不引入数据库,备份就是 tar
进程 systemd 不装 PM2
反代 nginx + certbot HTTPS + 自动续签

为什么不用数据库

单用户博客,文章数量级很小,文件系统完全够用。引入数据库的成本:

  1. 多一个组件需要维护、备份、升级
  2. 多一次迁移(schema 变更)
  3. Markdown 是事实标准,文件就是最朴素的"备份"

等到需要全文搜索、统计、关联推荐时再加 —— 那时再加也不迟。

部署到 47.251.177.147

服务器是阿里云 2C / 1.6G 的 Ubuntu 24.04。原本 443 端口被 OpenVPN 占着,迁到 1194 之后 certbot --nginx 申请证书一气呵成。

部署用一个 deploy.sh

cd /opt/blog
git pull --ff-only
npm ci --omit=dev
npm run build
systemctl restart blog

一次执行,从代码变更到线上生效。