Administrator
发布于 2026-01-10 / 14 阅读
0
0

01 Halo 博客系统介绍与 Docker Compose 部署

一、Halo 是什么?

Halo 是一款由国内开发者主导的 现代化、轻量级、可扩展的开源博客系统,基于 Java 构建,定位于「个人博客 / 内容发布 / 知识记录」场景。

Halo 的核心理念是:

让内容创作回归纯粹,让博客搭建足够简单。

它特别适合:

  • 技术博客

  • 学习笔记

  • 项目记录

  • 个人品牌网站

https://www.halo.run/


二、Halo 的核心特点

1. 开源 & 社区活跃

  • 完全开源(Apache License 2.0)

  • 国内社区活跃,中文资料丰富

  • 更新节奏稳定,长期维护

2. 现代化架构

  • 后端:Java + Spring Boot

  • 前端:独立 Console 管理后台

  • 支持 REST API,便于二次开发

3. 主题与插件机制

  • 主题系统

    • 支持 Freemarker / Thymeleaf

    • 可自定义主题结构与样式

  • 插件系统

    • 评论、搜索、统计、SEO

    • 可按需扩展功能

4. Markdown 原生支持

  • 原生 Markdown 编辑

  • 支持代码高亮、数学公式、流程图

  • 非常适合技术博客

5. 部署方式灵活

  • JAR 直接运行

  • Docker 单容器

  • Docker Compose

  • 云服务器 / NAS / 本地均可部署


三、运行环境说明(Ubuntu 服务器)

本文档部署环境基于 Ubuntu Server,适用于以下常见版本:

  • Ubuntu 20.04 LTS

  • Ubuntu 22.04 LTS

服务器建议配置:

  • CPU:2 核及以上

  • 内存:2GB(推荐 4GB)

  • 磁盘:40GB 及以上

Ubuntu 环境下部署 Halo 的优势:

  • Docker 与 Docker Compose 支持成熟

  • 运维资料丰富,问题定位方便

  • 适合长期稳定运行个人博客

如果你希望博客:

  • 可长期维护

  • 可逐步扩展

  • 不被平台绑架

👉 Halo 是一个非常稳妥的选择。


四、Docker Compose 部署 Halo(推荐方式)

使用 Docker Compose 部署 Halo,具备以下优势:

  • 环境隔离

  • 一次配置,长期使用

  • 方便迁移、备份和升级

下面以 Halo + PostgreSQL 为例进行说明。


五、部署前准备

1. 环境要求

  • Linux 服务器(Ubuntu / CentOS 均可)

  • Docker ≥ 20.x

  • Docker Compose ≥ 2.x

https://cloud.tencent.com/developer/article/2454497?cps_key=1d358d18a7a17b4a6df8d67a62fd3d3d


六、docker-compose.yml 示例(安装社区版)

https://docs.halo.run/getting-started/install/docker-compose

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.22
    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
    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:


七、启动与访问

docker compose up -d

启动完成后访问:

  • 博客前台:

    http://服务器IP:8090

  • 管理后台:

    http://服务器IP:8090/console

首次访问会进入 初始化向导

  • 设置站点名称

  • 创建管理员账号

  • 配置基础信息


八、常用运维命令

# 查看状态

docker compose ps

# 查看日志

docker compose logs -f halo

# 重启服务

docker compose restart

# 停止服务

docker compose down

九、升级与备份建议

1. 升级 Halo

修改 docker-compose.yaml 中配置的镜像版本。

services:
 halo:
   image: registry.fit2cloud.com/halo/halo-pro:2.22
docker compose up -d

2. 数据备份重点

  • ./halo(配置与元数据)

  • ./data/db(数据库)

  • ./data/uploads(附件与图片)

建议:

  • 定期打包备份

  • 配合对象存储(OSS / MinIO)

https://www.bing.com/images/search?view=detailV2&ccid=gZdoGHaq&id=66B63D5C3E9BEAE20348EE7416F1AD7D606F93E5&thid=OIP.gZdoGHaqXRPmAYyhNHsSbQHaEJ&mediaurl=https%3a%2f%2fimg95.699pic.com%2fphoto%2f60001%2f6865.jpg_wh860.jpg&cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.8197681876aa5d13e6018ca1347b126d%3frik%3d5ZNvYH2t8RZ07g%26pid%3dImgRaw%26r%3d0&exph=482&expw=860&q=%e7%94%b0%e9%87%8e&FORM=IRPRST&ck=6D6D95B071B82FDB27022CBF45FE216F&selectedIndex=0&itb=0


评论