我的 Halo 博客建站记录:从服务器部署到自定义图床插件

我的 Halo 博客建站记录:从服务器部署到自定义图床插件

_

一直想有一个真正属于自己的个人网站。

不是那种只放几句简介的页面,而是一个可以长期使用的地方:写文章、记录项目、放一些照片,也写一些日常想法和折腾记录。后来选来选去,最终还是决定用 Halo 来搭这个博客。

为什么选择 Halo

一开始我想要的功能其实挺多:

- 可以写文章

- 可以展示项目

- 可以写日记和随笔

- 可以做照片墙

- 后台管理要方便

- 后续最好还能扩展插件

Halo 比较符合这些需求。它本身就是面向个人博客和内容站的系统,后台比较完整,也有主题市场和插件机制,不需要从零开始写一整套博客系统。

主题方面,我选择的是 Clarity 主题。这个主题基于 [L33Z22L11/blog-v3](https://github.com/L33Z22L11/blog-v3),在 Halo 应用市场里搜索 clarity 就能找到。

部署 Halo

部署方式我选择了 Docker。这样后续维护、迁移、升级都比较清晰。

整体思路是:

1. 在服务器上部署 Halo

2. 配置 PostgreSQL 数据库

3. 配置域名解析

4. 配置反向代理和 HTTPS

5. 登录 Halo 后台完成初始化

部署完成之后,博客就可以通过自己的域名访问了。

![服务器部署过程截图](图片占位符:放 Docker Compose 或服务器目录截图)

![Halo 后台截图](图片占位符:放 Halo 控制台截图)

图片应该存在哪里

搭博客的时候,很快就遇到一个问题:写文章时粘贴的图片到底存在哪里?

如果直接存在 Halo 本地,短期看没什么问题,但后续迁移服务器、备份、扩容都会麻烦一点。尤其是文章里的图片越来越多之后,本地附件目录就会变成一个必须小心维护的东西。

所以我更倾向于把图片放到独立图床里。这样文章里保存的是图片链接,Halo 只负责文章内容和附件记录,图片本身由图床负责存储和访问。

最后我选择接入一款GitHub上开源的图床项目,图床地址

接入自己的图床

CloudFlare ImgBed 提供了上传 API,理论上只要 Halo 在上传图片时调用这个 API,就可以把图片传到自己的图床。

但 Halo 默认并不会直接支持这个图床,所以这里就需要一个存储插件。

一开始可以手动创建 Halo 的存储策略,把图床地址、Token、上传目录这些配置填进去。但这样有个问题:如果以后迁移服务器,或者重新部署 Halo,这套配置还得再做一遍。

所以我后来把它做成了一个 Halo 插件。

插件仓库放在这里:GitHub链接

当前插件目录是:

```text

halo-plugin-cfbed-storage/

自定义 Halo 存储插件

这个插件主要做了几件事:

  • 在 Halo 插件后台提供配置页面

  • 配置图床地址、API Token、上传渠道、上传目录

  • 自动创建 Halo 存储策略

  • 自动同步存储策略配置

  • 可以自动设为文章编辑器默认上传策略

  • 写文章时粘贴图片,会直接上传到自己的图床

也就是说,以后不需要每次手动去 Halo 里新建存储策略。只要安装插件,在插件配置页填好图床信息,保存之后插件会自动处理后面的事情。

![插件配置页面截图](图片占位符:放 CFBed 图床配置页截图)

配置项大概包括:

  • 图床地址

  • API Token

  • 上传渠道

  • 上传目录

  • 返回格式

  • 公开访问地址

  • 是否自动同步存储策略

  • 是否设为文章编辑器默认上传策略

保存后,在 Halo 写文章时上传图片,就会走自己的图床。

![文章编辑器上传图片截图](图片占位符:放 Halo 编辑器粘贴图片后的截图)

关于迁移服务器

这次建站过程中,我也顺便想清楚了后续迁移的问题。

迁移 Halo 时,重点不是迁移 Halo 源码。正常情况下,Halo 用 Docker 镜像部署就可以了。真正需要迁移的是:

  • Halo 数据库

  • Halo 工作目录

  • 插件 jar

  • 主题配置

  • 域名和反向代理配置

  • 图床本身的数据

因为文章里的图片已经上传到了图床,所以只要图床域名和图片文件还在,迁移 Halo 服务器后,文章里的图片链接依然可以正常访问。

如果完整迁移数据库和 Halo 工作目录,插件配置、存储策略、主题设置也都会一起过去,不需要重新配置一遍。

这次建站的收获

这次建站不只是把博客跑起来了。

更重要的是,把几个后续一定会遇到的问题提前处理掉了:

  • 图片不要强依赖 Halo 本地存储

  • 插件和 Halo 本体保持独立

  • 配置尽量放在后台可维护

  • 迁移时重点关注数据和工作目录

  • 自己需要的能力可以通过 Halo 插件扩展

现在这个博客已经不只是一个“能访问的网站”,而是一个我可以长期维护和扩展的个人空间。

后面我应该会继续把项目展示、照片墙、日记这些内容慢慢补起来。这个博客也会继续记录我之后的折腾过程。


Hello Halo 2026-05-31

评论区