VanBlog 是一个用 Node.js 写的轻量个人博客系统,数据存在 MongoDB,前台服务端渲染。它的定位很明确:一条 docker-compose 起站,自带后台、图床、评论、访问统计、暗色模式和自动 HTTPS,不折腾 LNMP。
核心特点与优势:
部署极简:官方 compose 只有两个服务(VanBlog + MongoDB),内置 Caddy 负责证书,域名解析好就能自动上 HTTPS。
自带图床:上传的图片直接存在容器挂载目录里,不依赖第三方对象存储,备份目录就带走了。
后台完整:文章、分类、标签、自定义页面、导航、评论、统计、SEO 设置都在后台,手机浏览器也能写。
导入导出友好:文章可以按 Markdown 批量导出 / 导入,换机器或迁移时不至于被困住。
阅读体验好:默认主题适配移动端,自带暗色模式、目录、代码高亮,开箱就是成品的博客样子。
资源占用可控:一台 1 核 1G 的轻量服务器能跑,配比静态站高,但比 WordPress + 插件轻。
需要提前知道的:
data/ 目录里,备份是硬要求,删容器不等于删数据(但删目录等于删站)。| 维度 | VanBlog | Hugo / Hexo |
|---|---|---|
| 形态 | 动态,Node + MongoDB | 静态,构建出 HTML |
| 写作 | 浏览器后台 | 本地 Markdown + Git |
| 部署 | 服务器 + Docker | 任意静态托管 |
| HTTPS | 内置 Caddy 自动签发 | 自己配 certbot |
| 运维 | 备份数据库与图片、升级镜像 | 几乎为零 |
| 适合 | 想要后台、图床、评论的个人站 | 零成本、纯写作 |
Astro 是一个面向内容网站的构建框架。它把 Markdown / MDX 当成一等公民,构建时把页面预渲染成纯 HTML,只在确实需要交互的组件上加载 JavaScript——官方把这种模式叫「群岛架构」(Islands)。
和 Hugo 一样,产物是静态文件,可以直接丢给 Nginx 或 GitHub Pages;不同的是 Astro 用 JS/TS 生态,页面是 .astro 组件,可以按需嵌入 React、Vue、Svelte 组件。
核心特点与优势:
内容集合(Content Collections):在 src/content.config.ts 里用 zod 给 front matter 定义 schema,字段写错、日期格式不对会在构建时直接报错,而不是上线后才发现。
默认零 JS:博客正文、列表页、RSS 都是构建时生成的静态 HTML,首屏没有框架运行时,加载快、SEO 友好。
组件化:导航、卡片、评论这些可以写成组件复用;需要交互时再单独挂一个 React/Vue 岛屿,不必全站背框架。
官方集成齐全:RSS、sitemap、图片优化、MDX、站点地图都是一条命令(npx astro add xxx)接入。
模板生态成熟:npm create astro@latest -- --template blog 直接得到一份可用的博客(含文章集合、RSS、暗色模式),改内容即可上线。
Markdown 能力完整:支持 front matter、代码高亮、GFM 表格和任务列表,需要时可以写 MDX 混入组件。
和 Hugo 的取舍:
| 维度 | Astro | Hugo |
|---|---|---|
| 构建速度 | 秒级,文章上千时差距明显 | 毫秒级到亚秒级,最快 |
| 技术栈 | Node + JS/TS,页面是组件 | Go 模板,纯配置文件驱动 |
| 可扩展性 | 高:可嵌 React/Vue/Svelte,能写任意逻辑 | 中:靠 shortcode、partial 和外部脚本 |
| 主题数量 | 少但质量高,官方 blog 模板够用 | 非常多,中文主题也多 |
| 学习成本 | 需要会一点 JS/TS | 会 Markdown 就能写,改模板要学 Go 模板 |
| 部署 | 静态产物,任意托管 | 静态产物,任意托管 |
适合「想要现代前端体验、以后可能往站点里加交互组件、不介意为此装 Node 工具链」的人;如果只想最快出一篇博客,Hugo 更省事。
Halo 是一个用 Java(Spring Boot)写的开源建站 / 博客系统,自带管理后台、主题市场和插件市场。它和 Hugo、Hexo 最大的区别是「动态」:文章存在数据库里,页面由服务端实时渲染,写文章、传图片、换主题都在浏览器后台完成。
核心特点与优势:
有后台:文章管理、附件库、页面、评论、用户权限都在可视化界面里,不用碰 Git 和命令行,手机浏览器也能写。
主题 / 插件市场:控制台里直接搜索安装主题和插件,评论、搜索、对象存储一类的功能靠插件补齐,不用改代码。
数据在数据库:支持 PostgreSQL、MySQL、MariaDB,也可以用内置 H2(生产环境不建议);备份是「数据库 + 附件目录」两件事。
开箱即用的博客结构:文章、分类、标签、独立页面、友链(插件)、归档都有现成实现。
部署方式多:Docker Compose、1Panel / 宝塔应用商店、单容器试跑都可以,官方镜像支持国内镜像源。
多用户与权限:可以给协作者分配角色,适合多人维护的站点。
代价也要说清楚:
| 维度 | Halo | Hugo / Hexo |
|---|---|---|
| 形态 | 动态,数据库 + 服务端渲染 | 静态,构建出 HTML |
| 写作方式 | 浏览器后台 | 本地 Markdown + Git |
| 部署 | 服务器 + Docker | 任意静态托管,含 GitHub Pages |
| 运维 | 数据库备份、版本升级 | 几乎为零 |
| 适合 | 想可视化运营、多人协作、要评论 | 想零成本、零运维、纯写作 |
Typecho 是一个轻量级的 PHP 博客程序,最早发布于 2008 年,国内老牌个人博客系统之一。它的特点是「小」:程序本体只有几百 KB,装上就能用,后台简洁,对服务器要求极低。
核心特点与优势:
体积极小:官方 1.3.0 的安装包 typecho.zip 只有约 565 KB,1 核 1G 甚至更低配的服务器、虚拟主机都能跑,加载快。
安装简单:上传源码 → 建数据库 → 浏览器访问 install.php,五分钟走完。
数据库自由:MySQL、PostgreSQL、SQLite 都支持,小站用 SQLite 连数据库服务都不用装。
后台克制:文章、分类、标签、页面、评论、外观、插件,没有多余模块,写博客够用。
主题插件生态稳定:主题放 usr/themes/,插件放 usr/plugins/,上传启用即可,不需要重新构建。
原生静态化友好:配合 Nginx 伪静态,文章 URL 可以做成 /archives/123/ 或 /posts/slug.html 这种干净形式。
需要说明的局限:
和 WordPress 的取舍:
| 维度 | Typecho | WordPress |
|---|---|---|
| 资源占用 | 极低,小内存机器可跑 | 较高,插件多了更明显 |
| 上手速度 | 装完即用,后台简单 | 功能多但选项也多 |
| 插件生态 | 少而精 | 覆盖一切需求 |
| 安全面 | 代码少、攻击面小 | 插件和主题是主要风险来源 |
| 适合 | 个人纯写作、低配机器 | 需要复杂功能、多人运营 |
Hexo 是一个基于 Node.js 的静态博客框架,2012 年发布,中文社区里普及度最高的博客工具之一。它把 source/_posts/ 里的 Markdown 文章、EJS / Pug 模板和 _config.yml 配置,生成成 public/ 下的纯静态站点。
核心特点与优势:
上手路径固定:hexo init 一条命令生成完整项目,hexo new 建文章,hexo server 本地预览,hexo generate 出产物,四步就能跑通。
中文资料最多:遇到的主题、插件、报错,基本都能搜到中文答案,这是它相对 Hugo、Astro 最实际的优势。
主题生态丰富:NexT、Butterfly、Fluid、Volantis 等主题功能齐全,分类、标签、归档、搜索、评论基本都是配置项。
插件体系成熟:RSS、sitemap、搜索索引、部署、图片处理都有现成插件,npm install 后改配置即可。
一键部署:hexo-deployer-git 可以把 public/ 直接推到 GitHub Pages 或任意 Git 仓库,不用自己写同步脚本。
模板灵活:页面和布局用 EJS,需要深度定制时比 Hugo 的 Go 模板更容易找到参考。
需要提前知道的几点:
和 Hugo 的取舍:
| 维度 | Hexo | Hugo |
|---|---|---|
| 运行时 | Node.js | 单二进制 |
| 构建速度 | 秒级,文章多时变慢 | 毫秒级到亚秒级 |
| 中文主题 / 教程 | 最多 | 多 |
| 定制方式 | EJS / Pug + 插件 | Go 模板 + shortcode |
| 依赖管理 | npm,存在插件老化风险 | 无依赖,升级简单 |
| 部署 | 静态产物 + 一键 git 部署 | 静态产物 |