本文最后更新于 2025-04-30,若需联系:请发至[email protected]

一、部署halo

参考官方文档:https://docs.halo.run/getting-started/install/docker-compose/

我用的是Docker Compose部署的,因为哥说这个方便一点

SSH连接后,输入mkdir ~/halo && cd ~/halo 创建halo文件夹&进入此文件夹

创建新的yaml配置文件(以下均在halo文件夹中操作):nano docker-compose.yaml

我使用的是Halo + PostgreSQL,所以在终端中输入以下配置文件内容:

其中的XXXXXX两部分可更换为你自定义的密码,但要保持相同

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    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=XXXXXXXXX
      - --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=XXXXXXXXXX
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

根据控制台下方提示:

Ctrl + O → 回车保存。

Ctrl + X 退出nano。

然后在终端中就可以使用docker-compose up -d 来启动halo服务了

1.1、更新halo

理论上有新版更新halo控制台中会推送弹窗,不过你也可以看他release里最新的版本号

https://github.com/halo-dev/halo/releases

比如出到20.20.19了。就去1panel里找到halo的安装路径(容器-编辑里面就有显示),把docker-compose.yaml文件里的版本号<2.20>改为最新的版本号(不要加LTS)

services:
 halo:
   image: registry.fit2cloud.com/halo/halo:2.20

然后在这个文件夹里运行docker-compose up -d 等一会自动 pull & restart 就OK了。

二、halo控制台

理论上当你安装好halo之后在浏览器上输入http://你的机器IP:8090/console 就可以访问halo的控制台了

在首次访问网站的时候会自动跳转到初始化页面,你需要完成这个步骤才能正常使用 Halo。

应该不用解释上面是啥,就是新建一个superadmin账号

登录完成后主界面如下图:

当然现在你访问http://你的机器IP:8090/ 就会显示博客的前台页面

三、各项目块简单介绍

里面的东西自己看着官方文档了解就行https://docs.halo.run/user-guide/common,不需要过多解释了,这里只记录一些文档没写的偏小白点和我自己配置时遇到的问题。

3.1、仪表盘

用不太到

3.2、内容

3.2.1、文章

  • 里面的文章不是默认按时间顺序从上往下排列,是最近创建顺序

  • 右上角可以自己设置分类和标签,也可以写完一篇之后在设置里自己新建

要说明的一点,文章编辑器最好还是用chrome,Firefox没测试不喜欢用,safari会有拼写粘黏(自己起的名)情况,如下

hao好啊,ru如果wo我和你一起走,na那你晚上hai还吃饭吗,貌似是把输入候选框里的首字拼音直接落到编辑器里了,而且诡异的是网页中部去打字没问题,但是整个网页下部编辑器的位置去打字就这样,离谱

3.2.2、页面

是博客所有可见页面的基础的集合,与文章不同

每一个网页都需要创建一个页面存放

3.2.3、附件

尽量分组存放便于管理

最好将封面图存在这里面,文章内的图随便去传到三方图床(下面的插件部分有介绍)

*因为文章页头图跟随封面颜色模糊功能,貌似只支持封面存在halo里。。

3.2.4、图库

显示图片页面的图片,可分组

3.3、外观

3.3.1、主题

每个主题配置也不一样,会了一个理论上就会第二个

参见:https://sheerkvc.top/archives/86.halo_theme

3.3.2、菜单

洪哥的博客为例

页头:

页脚:

这里的显示内容即为菜单,都在菜单项中自定义(若不想显示就和我一样新建个空白菜单)

3.4、系统

3.4.1、插件

放于下文中介绍

https://sheerkvc.top/archives/90.halo_plugin

3.4.2、设置

3.4.2. 1、文章设置

最下方可选择默认存储策略

3.4.2. 2、代码注入

全局head标签通常是导入外部资源的地方

内容页head标签 不太常用,能被全局覆盖,除非有特定页面要求

页脚 可以设置页脚的样式和添加自定义东西

3.4.3、通知设置

我用的自己的通知模版,别的就不研究了

https://sheerkvc.top/archives/62.commentUpdate#%E4%BA%94%E6%8E%A8%E9%80%81%E5%8F%8A%E5%9B%9E%E5%A4%8D

3.5、备份

很有必要

3.6、工具

下了插件就多了