315
0
1

Halo 写在前面

2026-09-02
2026-09-02

发行版本

Halo 的发行版本主要区分为两个大类别,即 Halo 社区版 和 Halo 付费版。

Halo 付费版包括专业版和商城版,是凌霞软件旗下的商业产品,为企业/团体/或进阶个人使用者提供了诸多定制化和特定场景的功能支持。

版本区别可查阅 方案对比

在后续的文档中,使用付费版统称 Halo 专业版 和 Halo 商城版,除非特别说明。

在线体验

或者也可以参考 《如何在本地快速体验 Halo》 在本地搭建体验环境。

环境要求

这里将讲述运行 Halo 所要求的一些软硬件的配置,我们建议你在运行或者部署之前先浏览一遍此页面。

硬件配置

云服务器要求 如果你要使用服务器进行部署 Halo,需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。

CPU

无特别要求。目前我们的 Docker 镜像 也已经支持多平台。

内存

为了获得更好的体验,我们建议至少配置 1G 的 RAM。

磁盘

无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我们推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。

网络

无特别要求,Halo 目前可以在无公网环境下使用,但部分主题由于使用了第三方资源,可能需要公网环境。

软件环境

Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。

Docker(可选)

我们主要推荐使用 Docker 运行 Halo,这可以避免一些环境配置相关的问题,文档可参考:

JRE(可选)

如果使用 Docker 镜像部署,那么无需在服务器上安装 JRE。但目前我们也提供了 jar 文件部署的方式,文档可参考:

Java 版本要求 版本要求:

  • 2.21 以上版本:JRE 21

  • 2.20 及以下版本:JRE 17

数据库

Halo 目前支持以下数据库:

  • PostgreSQL

  • MySQL

  • MariaDB

  • H2

其中,H2 不需要单独运行,其他数据库需要单独安装并配置。一般情况下,推荐按照 使用 Docker Compose 部署 文档将 Halo 和数据库容器编排在一起。

不建议在生产环境使用 H2 不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时备份数据。

Web 服务器(可选)

如果你部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 Nginx、Caddy 之类的 Web 服务器进行反向代理。但需要注意的是,目前 Halo 不支持代理到子目录(如:halo.run/blog)。

Wget(可选)

后续的文档中,我们会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。

Vim(可选)

后续的文档中,我们会使用 Vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当然,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。

浏览器支持

  1. 用户前台:视主题所支持的情况而定。

  2. 管理后台(Console 和个人中心):支持目前常见的现代浏览器,具体视 Vue 框架的支持情况而定。

名词解释

这里将列出后续文档中一些和 Halo 相关的名词含义。

~(符号)

代表当前系统下的 用户目录。

镜像

指 Halo 构建所产生的 Docker 镜像。用户通过该镜像启动 Halo 应用。

工作目录

指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 .halo2 的文件夹,绝对路径为 ~/.halo2。里面通常包含下列目录或文件:

  1. db:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。

  2. themes:里面包含用户所安装的主题。

  3. plugins:里面包含用户所安装的插件。

  4. attachments:附件目录。

  5. logs:运行日志目录。

  6. application.yaml:配置文件(可选),具体配置方式可查阅 配置说明。

  7. backups:备份文件目录。

  8. static:虚拟的根文件目录,需要手动创建。

如果你使用的 Docker 部署,请不要忽略 ~/.halo2 的目录映射。

主题

包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。

相关使用文档:主题管理相关功能说明

插件

用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。

相关使用文档:插件管理相关功能说明

import { promises as fs } from "node:fs";
import * as path from "node:path";
import { define } from "rstack";

const SITE_URL = "https://docs.halo.run";

define.doc(async () => {
  const [
    { pluginSass },
    { transformerCompatibleMetaHighlight },
    { pluginSitemap },
    { transformerNotationDiff },
    { default: fileTree },
    { default: ga },
    { default: mermaid },
    { default: Icons },
  ] = await Promise.all([
    import("@rsbuild/plugin-sass"),
    import("@rspress/core/shiki-transformers"),
    import("@rspress/plugin-sitemap"),
    import("@shikijs/transformers"),
    import("rspress-plugin-file-tree"),
    import("rspress-plugin-google-analytics"),
    import("rspress-plugin-mermaid"),
    import("unplugin-icons/rspack"),
  ]);

  return {
    root: path.join(import.meta.dirname, "docs"),
    themeDir: path.join(import.meta.dirname, "theme"),
    lang: "zh",
    title: "Halo 文档",
    logoText: "Halo 文档",
    icon: "/img/favicon-96x96.png",
    logo: "https://www.halo.run/logo",
    llms: true,
    siteOrigin: SITE_URL,
    globalStyles: path.join(import.meta.dirname, "styles/index.scss"),
    route: {
      cleanUrls: true,
    },
    markdown: {
      showLineNumbers: true,
      link: {
        checkDeadLinks: true,
      },
      shiki: {
        theme: "github-dark",
        transformers: [
          transformerCompatibleMetaHighlight(),
          transformerNotationDiff(),
        ],
      },
      image: {
        checkDeadImages: true,
      },
    },
    outDir: "build",
    plugins: [
      pluginSitemap({
        siteUrl: SITE_URL,
      }),
      mermaid(),
      ga({
        id: "UA-110780416-7",
      }),
      fileTree(),
    ],
    builderConfig: {
      plugins: [pluginSass()],
      html: {
        tags: [
          {
            tag: "script",
            attrs: {
              src: "https://track.halo.run/api/script.js",
              defer: true,
              "data-site-id": "3",
            },
          },
        ],
      },
      tools: {
        rspack: {
          plugins: [
            Icons({
              compiler: "jsx",
              jsx: "react",
              customCollections: {
                custom: {
                  "bt-panel": () =>
                    fs.readFile("./theme/images/bt-panel-logo.svg", "utf-8"),
                },
              },
            }),
          ],
        },
      },
    },
    themeConfig: {
      lastUpdated: true,
      enableScrollToTop: true,
      editLink: {
        docRepoBaseUrl: "https://github.com/halo-dev/docs/tree/main/docs",
      },
      socialLinks: [
        {
          icon: "github",
          mode: "link",
          content: "https://github.com/halo-dev/halo",
        },
      ],
    },
  };
});

define.lint(({ js, ts }) => [js.configs.recommended, ts.configs.recommended]);

define.fmt({
  singleQuote: false,
  ignorePatterns: [".agents"],
});

define.staged({
  "*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}": ["rs lint --fix", "rs fmt"],
  "*.{json,jsonc,md,mdx,css,scss,less,html,yml,yaml}": "rs fmt",
});

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论