Halo 是什么?
Halo 是一款现代化的开源网站建设与内容管理系统(CMS) ,主要用于快速搭建博客、个人/企业网站、内容平台等。它以 强大易用、扩展灵活、插件/主题生态丰富 著称。 (GitHub)
Halo 的源码托管在 GitHub 上:
🔗 https://github.com/halo-dev/halo (GitHub)
一、定位与核心特性
1. 开源建站 CMS(Content Management System)
Halo 不是单纯的博客程序,而是一个完整的 CMS 平台 。
可用于:
- 搭建博客
- 企业/品牌展示站
- 知识库、文档站
- 灯塔页、个人主页等
这一平台的核心目标是:
让用户"以最少配置甚至零代码"即可建站,同时允许 深度定制网站功能与 UI 体验 。 (Halo - 强大易用的开源建站工具)
2. 技术栈
Halo 的底层技术栈核心包括:
| 组件 | 技术栈 |
|---|---|
| 后端 | Java(基于 Spring Boot) |
| 网络层 | Netty 用于高性能异步 Web Server |
| 数据访问 | R2DBC 支持异步数据库操作 |
| UI & 控制台 | 前端基于 Vue/TypeScript(集成在主仓库) |
这套栈兼顾了高性能、扩展性与生态兼容性两个维度:
- Java/Spring Boot 稳定成熟
- R2DBC 提供异步数据访问以提升并发性能
服务器运行效率优秀且适合中小型内容站与企业官网部署。
二、核心功能模块
Halo 提供一套完整的 CMS 功能,包括但不限于:
1. 内容发布与管理
✔ 博客文章发布与分类管理
✔ 多级目录结构与标签体系
✔ 支持 Markdown、富文本内容编辑
2. 主题与插件生态
Halo 支持:
- 主题机制:定制页面样式
- 插件机制:扩展功能如评论、SEO、社交登录等
这意味着你不仅能"马上建站",还可以为特殊功能二次开发或自定义扩展 。 (iplc.best)
3. 管理控制台(UI 内置)
Halo 除了后端 API,还内置完整的 Web 控制台,用于:
- 内容管理
- 站点设置
- 用户管理
- 主题/插件管理
开发环境中控制台代码托管在主仓库(ui目录),无需独立运行服务。 (docs.halo.run)
4. 可部署方式灵活
Common deployment options:
| 方案 | 优点 |
|---|---|
| Docker 容器 | 一键启动、环境一致 |
| Jar 包运行 | 轻量部署 |
| 云服务部署 | 便捷弹性伸缩 |
官方提供镜像和示例命令用于快速跑起 Halo 环境。 (GitHub)
三、生态与社区
Halo 的生态非常活跃:
1. 主题仓库
有大量社区/官方主题供选择或自定义开发。 (GitHub)
2. 插件与扩展
通过插件你可以集成:
- 评论系统
- 访问统计
- 搜索增强
- 第三方服务对接
四、适用场景与优势
适合谁使用
- 技术人员希望用 Java 技术栈构建网站
- 企业/个人需要可扩展、高度定制的网站
- 社区/博客作者需要完善 CMS 解决方案
Halo 的优势
| 维度 | 优势说明 |
|---|---|
| 易用性 | 即装即用,默认配置友好 |
| 可扩展性 | 主题/插件支持深度定制 |
| 技术成熟 | 基于 Java + Spring Boot 生态 |
| 部署灵活 | 支持 Docker、Jar、云部署 |
| 社区活跃 | Stars 数万、活跃社区反馈 |
五、开发者视角亮点
1. 模块化架构
Halo 采用模块化组织代码,为功能可插拔、可测试提供天然优势。
2. API-First 设计
后台 RESTful API 设计规范,能够轻松被前端应用、移动客户端调用。
3. 技术支持与贡献
Halo 采用 GPL-3.0 开源协议 ,社区欢迎贡献,可以参与主题、插件、核心功能开发或提交 issue/PR。 (GitHub)
六、快速启动体验(官方示例)
如果你已有 Docker 环境,可以一条命令快速启动 Halo:
bash
docker run -d --name halo -p 8090:8090 \
-v ~/.halo2:/root/.halo2 halohub/halo:2.21
访问:http://localhost:8090 即可体验 Halo CMS。 (GitHub)
七、参考链接
- GitHub 仓库 :https://github.com/halo-dev/halo (GitHub)
- 官方网站/文档 :https://www.halo.run / https://docs.halo.run (Halo - 强大易用的开源建站工具)
- 社区讨论 :bbs.halo.run (GitHub)
2. 安装使用Halo
2.1. 安装部署
安装部署官方文档地址如下:使用 Docker Compose 部署 | Halo 文档

yml
version: "3.8"
services:
halo:
image: halohub/halo-pro:2.22.4
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: postgres:15.4
restart: on-failure:3
container_name: halo-pg
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
2.2. 启动容器,创建用户
2.3. 安装插件
安装相关markdown插件

2.4. 启用插件

2.5. 导入文件

2.6. 查看博客
