跳到主要内容
← /projects

linwis-blog 个人博客

Active

基于 Astro 的静态优先个人技术博客:内容集合建模、本地搜索、Docker 部署与自动化发布。

AstroTypeScriptTailwind CSSDockerNginx
开始于 2026-07-01 GitHub
linwis-blog 个人博客 封面

你正在看的这个网站就是它。

项目背景

写博客的想法放了很久,一直没动手的原因是每次都被「选型 → 搞主题 → 折腾后端」消耗掉热情。这一次先把原则定死:Static First、Content First、不写后端,让写作成本无限低。

目标

  • 写作路径只有一步:创建 markdown 文件,写,push
  • 构建产物纯静态,服务器随时可迁移
  • 移动端与桌面端体验一致
  • 搜索、评论等动态能力全部作为增强,失败不影响阅读

架构

Markdown / MDX
  ↓ Astro Content Collections(schema 校验)
  ↓ astro build
dist/
  ↓ Docker Multi-stage(Nginx 运行时)
  ↓ GitHub Actions 自动部署
国内服务器(docker compose)

技术决策

决策选择放弃的方案原因
框架AstroNext.js静态优先、零运行时 JS
部署Docker + GHCRServerless国内访问可控、可迁移
搜索构建期索引 + 浏览器端外部搜索服务无依赖、够用
评论Giscus自建评论系统GitHub Discussions 承载数据

核心挑战

最大的坑是国内访问 GHCR 的网络波动。解决思路是让部署失败永远不影响现网:服务器上始终保留上一个可用镜像,健康检查不过就保持旧版本在线。

结果

  • 全站构建产物约 200KB JS 以内(大部分页面为 0)
  • 单篇文章从创建到上线:一个 git push
  • 服务器可在 30 分钟内从零重建(装 Docker → 拉镜像 → 起 compose)

未来计划

  • 文章内 LaTeX 支持
  • Newsletter 接入评估
  • 备份镜像仓库(第二 Git Remote)

相关文章

Esc