文章背景图

周若琳配置说明

2026-10-17
0
- 字
- 分钟
|

配置方式

Halo 支持通过多种方式进行配置,目前 Docker Compose 部署文档 的示例是通过运行参数配置,JAR 文件部署方式 是通过配置文件进行配置。

#通过运行参数

通常我们在使用 Docker Compose 部署的时候推荐使用这种方式进行配置,配置方式为在 Docker Compose 配置文件的 command 添加对应的配置条目即可,比如:

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.27
    ...
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      - --halo.external-url=/

#通过配置文件

通常我们在使用 JAR 文件部署的时候更推荐使用这种方式进行配置,配置文件名称为 application.yaml,并且需要在运行的时候通过 --spring.config.additional-location 参数指定配置文件存放的目录,运行示例:

java -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/

配置示例:

~/.halo2/application.yaml

spring:
  r2dbc:
    url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
    username: admin
    password: 123456
  sql:
    init:
      mode: always
      platform: h2

查看 JAR 文件部署步骤

完整的 JAR 文件部署文档可查阅:使用 JAR 文件部署

当然,使用 Docker Compose 部署同样支持通过这种方式配置,只需要将 application.yaml 放在工作目录的挂载目录即可,示例:

其中,docker-compose.yaml 的 Halo 服务的 volumes 应该包含 ./halo2:/root/.halo2。

#配置列表

#Halo 独有配置

通常用于生产环境的配置:

配置路径

说明

生产环境默认值

halo.work-dir

Halo 工作目录,通常不建议修改

${user.home}/.halo2

halo.external-url

网站的实际访问地址,如:https://www.halo.run。未配置时,初始化页面会根据当前请求预填外部访问地址

--

halo.use-absolute-permalink

永久链接是否生成为绝对地址,设置为 true 时,请确保正确配置了 halo.external-url

false

halo.security.frame-options.disabled

是否禁用 X-Frame-Options 响应头。设为 true 后将不再通过该响应头限制 iframe 嵌入

false

halo.security.frame-options.mode

iframe 嵌入模式,默认为同源,可设置的值为 DENY、SAMEORIGIN

SAMEORIGIN

halo.security.referrer-options.policy

Referrer-Policy 是一个 HTTP 头部字段,用于控制浏览器在发送请求时如何处理 Referer 信息,可设置的值请参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy

strict-origin-when-cross-origin

halo.security.remember-me.token-validity

保持登录会话的有效期,默认为 14 天(14d)

14d

halo.security.basic-auth.disabled

是否禁用 API 的 Basic Auth 认证

true

halo.security.two-factor-auth.disabled

是否禁用系统全局的两步验证

false

halo.attachment.resource-mappings[0].pathPattern

附件资源代理匹配规则,这个设置通常适用于从其他平台迁移的场景

/upload/**

halo.attachment.resource-mappings[0].locations

附件资源代理目录,只能放置在工作目录的 attachments 目录

migrate-from-1.x

halo.attachment.thumbnail.disabled

是否禁用附件缩略图功能,如果不需要此功能,可以选择禁用

false

halo.attachment.thumbnail.concurrent-threads

生成附件缩略图的并发数

1

halo.attachment.thumbnail.quality

附件缩略图的生成质量,数值为 0-1 之间

-

通常用于开发环境的配置:

配置路径

说明

默认值

halo.ui.proxy.endpoint

开发环境的 UI 代理地址

--

halo.ui.proxy.enabled

是否启用 UI 代理地址

--

halo.plugin.runtime-mode

插件的运行模式

--

#Web 框架本身的配置

Halo 使用了 Spring Boot 和 Spring WebFlux,完整的配置可查阅:Common Application Properties,以下将列出关于 Halo 常用的配置:

Web 服务相关:

配置路径

说明

默认值

server.port

Web 服务端口

8090

server.compression.enabled

是否开启 gzip 压缩

true

spring.web.resources.cache.cachecontrol.max-age

设置静态资源的缓存存储的最大周期,超过这个时间缓存被认为过期

365d

spring.web.resources.cache.cachecontrol.no-cache

设置静态资源响应头的 Cache-Control 为 no-cache,在发布缓存副本之前,强制要求缓存把请求提交给原始服务器进行验证(协商缓存验证)

false

spring.web.resources.cache.cachecontrol.use-last-modified

是否为静态资源添加 Last-Modified 响应头,Last-Modified 表示服务器上资源的最后修改时间。当浏览器第一次请求资源时,服务器会在响应头中包含这个字段

true

spring.thymeleaf.cache

是否开启模版引擎缓存

true

数据库相关:

配置路径

说明

默认值

spring.r2dbc.url

数据库连接地址,详细可查阅下方的 数据库配置

--

spring.r2dbc.username

数据库用户名

--

spring.r2dbc.password

数据库密码

--

spring.sql.init.platform

数据库平台名称,支持 postgresql、mysql、mariadb、h2

--

数据库配置:

链接方式

链接地址格式

spring.sql.init.platform

PostgreSQL

r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}

postgresql

MySQL

r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}

mysql

MariaDB

r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}

mariadb

H2 Database

r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE

h2

#Redis 集成

仅限 Halo 付费版

限 Halo 付费版 可用。

Halo 付费版在 2.16 中新增了集成 Redis 的功能,目前提供将用户登录 Session 存入 Redis 的支持。

#配置方式

如果使用 Docker 或者 Docker Compose 部署,需要添加以下启动参数:

- --spring.data.redis.host=localhost # Redis 服务地址
- --spring.data.redis.port=6379 # Redis 服务端口
- --spring.data.redis.database=0 # Redis 数据库
- --spring.data.redis.password= # Redis 密码
- --halo.session.store-type=redis # 声明 session 存储方式为 redis,默认不配置则为 in-memory
- --halo.redis.enabled=true # 启用 Redis 服务

确认 Redis 主机地址

请特别注意 spring.data.redis.host 的指向,在 Docker 容器中,可能并不是 localhost,需要确保 Halo 容器中能够正常访问到你的 Redis 服务。

Docker Compose 配置片段如下:

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.27
    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", "/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      ...

      # Redis 相关配置开始
      - --spring.data.redis.host=localhost  # Redis 服务地址
      - --spring.data.redis.port=6379       # Redis 服务端口
      - --spring.data.redis.database=0      # Redis 数据库
      - --spring.data.redis.password=       # Redis 密码
      - --halo.session.store-type=redis     # 声明 session 存储方式为 redis,默认不配置则为 in-memory
      - --halo.redis.enabled=true
      # Redis 相关配置结束
networks:
  halo_network:

如果你是使用的 Docker Compose 部署 Halo,并且希望将 Redis 服务编排在一起,以下是配置示例:

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.27
    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", "/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      # ...

      # Redis 相关配置开始
      - --spring.data.redis.host=redis # Redis 服务地址
      - --spring.data.redis.port=6379 # Redis 服务端口
      - --spring.data.redis.database=0 # Redis 数据库
      - --spring.data.redis.password= # Redis 密码
      - --halo.session.store-type=redis # 声明 session 存储方式为 redis,默认不配置则为 in-memory
      - --halo.redis.enabled=true
      # Redis 相关配置结束

  # ...

  # 新增的 Redis 编排
  redis:
    image: redis:7.2.5
    networks:
      halo_network:
    volumes:
      - ./redis-data:/data
    restart: always
networks:
  halo_network:

原创

周若琳配置说明

本文链接: 周若琳配置说明

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录