Halo是一款国产开源的Java博客系统/CMS,以GPL-3.0协议开源。Halo诞生于2018年,以现代化的界面设计、优秀的性能、丰富的插件和主题生态著称。Halo采用Spring Boot + Vue技术栈,前后端分离,支持Markdown编辑、静态化、多用户、评论系统、附件管理等功能,适合个人博客、技术博客、小型企业官网、内容发布平台。Halo是目前国内最受欢迎的Java博客系统,GitHub星数超过3万。
核心优势:界面现代美观、性能出色(Java + Spring Boot)、Markdown编辑器体验好、插件主题生态丰富、支持静态化部署、REST API、Docker一键部署、多用户支持、SEO友好、国内社区活跃、完全开源免费。Halo特别适合Java开发者和追求现代感的博客用户。
环境要求
- 操作系统:Linux(Ubuntu/Debian/CentOS)、Windows、macOS
- Java版本:JDK 17+(Halo 2.x推荐JDK 17)
- 数据库:MySQL 8.0+ / PostgreSQL 12+ / H2(内置,仅用于测试)
- 内存:最低512MB,推荐1GB以上(Java应用建议2GB)
- 磁盘:至少500MB可用空间
- Web服务器:Nginx(用于反向代理,可选)
- Docker:可选,推荐使用Docker部署
安装教程
方式一:Docker部署(推荐)
步骤1:安装Docker和Docker Compose
curl -fsSL https://get.docker.com | bash
systemctl enable docker
systemctl start docker
docker --version
docker compose version
步骤2:创建docker-compose.yml
mkdir -p /opt/halo
cd /opt/halo
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
halo:
image: halohub/halo:2.x
container_name: halo
restart: unless-stopped
volumes:
- ./data:/root/.halo2
ports:
- "8090:8090"
environment:
- SERVER_PORT=8090
- SPRING_R2DBC_URL=r2dbc:pool:mysql://mysql:3306/halo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
- SPRING_R2DBC_USERNAME=halo
- SPRING_R2DBC_PASSWORD=your_strong_password
- SPRING_SQL_INIT_PLATFORM=mysql
depends_on:
- mysql
mysql:
image: mysql:8.0
container_name: halo-mysql
restart: unless-stopped
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=your_root_password
- MYSQL_DATABASE=halo
- MYSQL_USER=halo
- MYSQL_PASSWORD=your_strong_password
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
EOF
步骤3:启动Halo
docker compose up -d
docker compose ps
方式二:直接部署(JAR包)
步骤1:安装JDK 17
apt install -y openjdk-17-jre
java -version
步骤2:下载Halo
mkdir -p /opt/halo
cd /opt/halo
wget https://github.com/halo-dev/halo/releases/download/v2.16.0/halo-2.16.0.jar
步骤3:创建配置文件
mkdir -p /root/.halo2
cat > /root/.halo2/application.yaml << 'EOF'
server:
port: 8090
spring:
r2dbc:
url: r2dbc:pool:mysql://localhost:3306/halo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: halo
password: your_strong_password
sql:
init:
platform: mysql
EOF
步骤4:创建systemd服务
cat > /etc/systemd/system/halo.service << 'EOF'
[Unit]
Description=Halo Blog
After=network.target mysql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/halo
ExecStart=/usr/bin/java -jar /opt/halo/halo-2.16.0.jar
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable halo
systemctl start halo
systemctl status halo
步骤5:Nginx反向代理配置
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
proxy_pass http://127.0.0.1:8090;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
步骤6:完成安装向导
浏览器访问 http://yourdomain.com,进入初始化页面:
- 设置管理员账号(用户名、邮箱、密码)
- 设置网站标题和描述
- 点击"初始化"完成安装
后台地址为 http://yourdomain.com/console。Halo后台功能包括:文章管理、页面管理、分类标签、评论管理、附件管理、主题设置、插件管理、用户管理、系统设置等。
Windows环境安装
Windows下安装步骤:
- 从Oracle官网或OpenJDK下载JDK 17安装包,双击安装
- 配置环境变量:JAVA_HOME指向JDK安装目录,Path添加%JAVA_HOME%\bin
- 打开命令提示符验证:
java -version - 下载程序JAR包,在命令行中执行
java -jar 程序名.jar启动 - 浏览器访问http://localhost:8090完成初始化
宝塔面板部署
宝塔面板支持Java项目部署:
- 安装宝塔面板(参考PHP类安装命令)
- 在宝塔面板 → 软件商店中安装"Java项目管理器"
- 通过Java项目管理器安装JDK 17
- 点击"网站" → "添加Java项目",填写项目名称、JAR包路径、JVM参数、端口
- 将JAR包和配置文件上传到指定目录
- 在项目设置中配置数据库连接等环境变量
- 配置Nginx反向代理,将域名指向Java应用端口
- 启动Java项目,设置开机自启
服务器配置建议
- 内存:建议2GB以上,Java应用内存占用较高
- JVM参数:可设置
-Xms512m -Xmx1024m控制内存使用 - MySQL:使用MySQL 8.0,配置innodb_buffer_pool_size=256M
- Nginx:启用gzip压缩,配置静态资源缓存
- 定期更新:关注Halo官方发布,及时升级到最新版本
- 定期备份:备份MySQL数据库和Halo数据目录(~/.halo2)
- 配置CDN加速静态资源和附件
- 生产环境使用MySQL,不要使用H2数据库
常见问题
Q:Halo启动失败,提示内存不足?
A:Java应用需要足够内存。建议服务器内存1GB以上,可创建swap分区:fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
Q:Docker部署后无法访问?
A:检查容器是否正常运行:docker compose ps,查看日志:docker compose logs halo。确认端口8090已开放,Nginx配置正确。
Q:如何安装Halo主题?
A:后台 → 外观 → 主题 → 安装主题,上传主题zip包。或从主题市场下载后解压到~/.halo2/themes目录。
Q:忘记管理员密码怎么办?
A:数据库执行:UPDATE users SET password='{bcrypt}$2a$10$...' WHERE username='admin';。或使用Halo提供的密码重置工具,具体参考官方文档。
Q:Halo和WordPress怎么选?
A:追求现代界面、Java技术栈、轻量快速选Halo;需要丰富插件、电商、多功能选WordPress。个人博客和技术博客推荐Halo,综合型网站推荐WordPress。
官方网址
官方网站:https://halo.run
下载地址:https://halo.run/download
GitHub:https://github.com/halo-dev/halo
社区论坛:https://bbs.halo.run