从寻找到创造:发现初春图床,为 Halo 打造插件
寻找
自从网站建立以来,我都在寻找一款真正“趁手”的图床服务。Halo 自带的附件存储虽说够用,但照片一多起来了就不好管理,分组多了还会自动折叠,自动转换格式需要插件支持,有时会转换失败。
我需要的东西其实很简单:界面简洁,部署简单,分类明了,稳定好用,能自动转换格式。
市面上的选择其实不少,但总有一些难以调和的矛盾——有的功能强大却过于臃肿;有的确实轻量,但界面和功能还停留在几年前的水平,用起来总感觉不够顺手。
一开始使用的兰空图床(Lsky Pro),它在 GitHub 上热度很高,功能也确实丰富——多用户、多存储、相册管理,基本上你想要的功能它都有。
但可能是我的食用方式不对,部署完后上传图片正常,但就是外链打不开图片。重新部署后问题依旧,看了很多遍教程,也都没有找到毛病,再加上体验下来觉得功能并不适合我,遂放弃。
后来又试了简单图床(EasyImage2),这个项目确实简单——无需数据库,解压就能用,PHP 环境一配就跑起来了,Docker 部署也很方便,镜像只有两百多兆。
但可能还是我的食用方式不对 bushi🌚🌚,部署完打开页面,样式是散的,CSS 加载不出来。排查了半天,发现是容器内 Nginx 的 root 路径指向了 /app/web,但静态资源实际在 /app/web/public/static 下,最后靠手动创建符号链接才解决。好歹是能用了,但是打开一看分类功能都没有,确实是简单啊。但还是不适合我,遂放弃。
发现
经过多次压力 DeepSeek 给我找图床,终于给我推荐出来了 初春图床(oneimg):
它基于 Go + Vue.js 3 构建,轻量高效,资源占用小。
部署完成打开第一眼:感觉还不错,没有花哨的装饰,没有复杂的布局,干净、克制、不折腾。

部署完成登录默认密码123456我试了半天登不上去,一看宝塔WAF拦截记录,我被弱密码拦截了。。。。
经过一段时间体验,确实挺适合我的。页面简洁,但是该有的功能都有,很适合个人网站图床使用。
唯一的遗憾是它没有传统意义上的“文件夹分类”,只有标签。但实际用下来,标签反而更灵活。

比如一张图,既用在“瞬间动态”里,也用在某篇文章里——放在传统文件夹里只能选一个位置,但标签可以同时打上两个,一张图片就能归属多个场景。点击对应标签,所有相关的图片直接就筛选出来了。我给每一篇文章的配图也都会打上对应的文章标签。想找某一篇的配图时,点一下标签就行,不用在文件夹里一层层翻。
没有分类只有标签,一开始觉得是缺点,用久了反而觉得这种方式更适合个人创作的场景——灵活、轻量、不折腾。
创造
工具找到了,但还差一步:它和 Halo 之间没有桥梁连接。
Halo 的附件系统本身不支持对接外部图床,需要靠插件来实现。现有的 Halo 图床插件只对接了兰空图床、SM.MS 这些老牌服务,初春图床作为新兴项目,还没有人做过这件事。
在花了不少时间把历史文章的图片全部换成图床外链之后,手指和耐心一起到了极限。结果转头去发瞬间动态时却发现,它并不支持插入图片链接,只能从附件库里选择。
实在受不了了,于是,自己动手,丰衣足食!
把初春图床 API 文档,Halo 插件开发文档一股脑地丢给 DeepSeek ,开始它的创造。
折腾了几个小时,oneimg-halo-plugin 就这么诞生了:
现在,在 Halo 后台写文章时,可以直接选择初春图床作为附件存储策略。上传图片会自动发到初春图床,图床的图片也可以手动同步到 Halo 附件,返回的链接直接插入文章,整个过程无缝衔接。

Halo 应用市场也同步上架:
写在最后
图床找了一圈,插件写了一个,文章也写完了。
过程确实有点折腾,但结果还算满意——现在写文章,图片直接传到自己的图床,Halo 后台无缝对接,舒服了。