Halo 是目前国内最流行的开源建站系统之一,GitHub 快 4 万 Star,官网 halo.run。它最大的特点是单文件部署——整个网站系统就是一个 jar 文件,没有 PHP 那一堆安装步骤,数据库也是内置的,双击就跑。
我这次在 Windows 本地从下载到发文章完整走了一遍,每一步都留了截图。先说几个实测数据:启动耗时 12 秒、安装到发出第一篇文章不到半小时、整个包 154MB(内置了 Java 运行时的版本)。
Halo 能干什么
一句话概括:它想取代的是 WordPress 那类「装好就能写、顺手还能当官网」的系统,只是把 PHP 换成了 Java。
按用途对号入座——
- 个人博客、技术写作:默认主题就挺像样,不折腾模板也能见人
- 团队知识库、产品文档站:官方有文档主题,后台一套管文章和独立页面
- 公司官网、产品落地页:「关于我们」「价格」这类页面不用改代码,后台建个页面就能发
- 想要个内容中台:Halo 2 自带内容 API,小程序、App 都能来取数据(这条我只确认了接口存在,没实际接过)
核心功能亮点
- 一个后台管全部内容:文章、页面、分类、标签、附件,左侧栏一目了然
- 内置应用市场:插件和主题在线安装,装完即用,不用登服务器改配置
- TipTap 编辑器:左边正文右边大纲,
##加空格自动变标题,习惯 Markdown 的可以盲打 - 评论是内置的:装完就有,不用再挂第三方评论系统
- 暗色模式三档:暗色 / 亮色 / 跟随系统,选择存浏览器,晚上跟系统一起切
- 本地搜索:内置插件自己建索引,文章发出去就进库,弹窗是命令面板那种风格
- 移动端认真适配过:顶栏收成图标,字号、卡片间距跟着调,不是简单缩放
- 主题是 FreeMarker + Vue:不会 Java 也能改模板
底子怎么样
- 版本:2.27.0
- 协议:GPL-3.0,改了再对外分发要开源
- 技术栈:Java / Spring Boot,数据库默认内置 H2,也能接 MySQL、PostgreSQL
- 部署形态:一个 jar + 一个 data 目录
- 官网:halo.run
它跟 WordPress 的差别不在功能多少,在装法。WP 是文件扔进 web 目录、建库、跑安装向导;Halo 是 java -jar,所有数据落在 data 文件夹里,备份就是拷这个文件夹。
上手搭建:一条命令,但有个硬门槛
Halo 的部署方式是所有 CMS 里最简单的:一条命令
java -jar halo-2.27.0.jar --halo.work-dir=./data --server.port=8090没有 web 目录要配、没有数据库要建,数据全部落在 data 文件夹里。启动 12 秒后就能访问了。
但我在这里踩了第一个坑:Halo 2.21 版本以后要求 JDK 21,我电脑上装的是 JDK 17,直接启动报版本错误。又去官网下了个 JDK21 才跑起来。所以打包的时候直接内置了一个精简版 Java 21 运行时(用 jlink 做的,44MB),你不需要装 Java,双击 启动Halo.bat 就行。
首次打开会自动跳到初始化页面,全中文:

第二个坑在这里:填管理员账号的时候,用户名最少要 4 个字符,我第一次填 ymw 被拦下来了,提示要增加字符。改成 yuanmawan 才过。

站点名称、管理员、密码填完提交,几秒钟就建站完成:

然后从登录页进后台:

界面实拍:后台和前台
后台
进后台第一眼,仪表盘做得挺现代,不是那种上个时代的 PHP 后台画风:

左侧栏是完整的模块化菜单:文章、页面、评论、附件、主题、菜单、插件、用户、设置,还有一个应用市场——插件和主题能直接在线装。
主题管理页能直观地看到已装主题,支持本地上传 zip 和在线安装:

站点标题、副标题、Logo、Favicon 都在「设置 → 基本设置」里换,我把这套全改成了「源码湾」:

这里有个小坑:Logo 和 Favicon 的上传交互做得有点绕——点加号要经过「上传文件 / 从附件库选择 / 输入链接」一条链路,选附件库的时候图片还有个 hover 覆盖层,用键盘操作基本无从下手。我最后是直接调接口设置的,比点界面快。
附件库本身没问题,上传过的图都在这管:

写作页是 TipTap 内核,左侧写正文、右侧是大纲面板,支持 Markdown 快捷输入:

点右上角「发布」弹出文章设置面板,别名(URL 里的英文标题)是自动生成的,分类、标签、摘要、封面都在这设:

发布后回到文章列表,状态是「已发布」:

前台
前台默认主题叫 theme-earth,卡片式布局,首页有个「全部 / 分类」切换栏:

文章详情页的排版很干净,标题、作者、阅读数、点赞、评论数都在,正文行距舒服:

底部自带评论框,评论组件是内置插件,装好就有,不用额外配:

关于页也是现成的版式:

暗色模式和搜索
这两样是我用下来觉得最省事的地方,都不用再装第三方东西。
顶栏右侧第一个图标就是暗色切换,点开三个选项:暗色、亮色、跟随系统:

切到暗色不是简单反色,卡片阴影和背景层次都重算过:


选择存进浏览器,下次打开还是暗色;选了「跟随系统」的话,晚上系统切深色网站也跟着切。
搜索在顶栏放大镜,弹出来是命令面板那种风格:

结果带摘要、命中词高亮,回车直接跳转:

索引是内置插件建的,文章发出去就自动进库,不用手动重建。
手机端(375px 模拟)适配得很完整,顶栏收起成图标,hero 区、卡片、字号都跟着调:



说缺点(重要)
好话说完了,后面都是我自己用下来真实感受到的短板:
1. JDK 版本卡得很死。 Halo 2.21 以后必须 JDK 21,官网只发 jar 不提供免环境版本。我这次内置了运行时帮你跳过这一步,但你要在服务器上部署,还是得自己装 JDK21——对不懂命令行的朋友,这一关比 WordPress 传 FTP 要难。
2. Java 程序吃内存。 启动就占几百 MB,我给它配了 512MB 堆内存,机器内存紧的话会有点吃力。1G 内存的小鸡能跑,但不宽裕。这也是它启动要十几秒的原因,不是「秒开」那种体验。
3. 主题生态比 WordPress 差一个量级。 官方应用市场加主题社区加起来几百款,WordPress 是几万款。好在 Halo 的主题质量整体更整齐,不会像 WP 那样翻出一堆上古主题;但你要找某个特别小众的行业模板,可能真没有。
4. 默认用 H2 数据库,数据在文件夹里。 单机自用完全没问题,打算迁移服务器或者多人协作,最好切到 PostgreSQL / MySQL(支持,配置一下就行)。另外记得定期备份 data 文件夹,它是你全部的数据。
5. 应用市场不等于什么都有。 插件数量比 WordPress 少得多,而且 Halo 2 的插件是 Java 写的,想自己改得有 Spring 基础。WP 那边随便找个 PHP 片段就能魔改的路子,在这走不通。
常见问题
源码获取
本文实测用的完整包(官方 jar + 内置精简 Java 运行时 + 源码 + GPL-3.0 协议文件,解压双击即用):
两个小提醒:
- 建议先「转存到自己网盘」再下载——直接下载的链接容易失效,转存后就是你自己的了,随时能下;
- 手机上操作:点开链接 → 右下角「保存到网盘」→ 回夸克 App 的「我的网盘」里下载。
自己动手的成本:官方只发一个 jar,你机器上得有对的 JDK 版本,还得自己配数据库、改端口、对启动参数。上面记的那些坑,一个都省不了。包里是我这边全部跑通之后才打的,双击就能看到后台长什么样。
包里还放了两样东西:halo-2.27.0.jar.sha256 校验文件(可以自己核对官方原版有没有被动过),和完整源码包,想研究的可以对照着看。
装之前先确认两件事:机器至少 1G 内存(Java 吃内存)、8090 端口没被占。用我这个包的话,Java 不用自己装。