前言

在将网站由Typecho迁移到Halo后,之前的图片链接全部无法使用;将原来的图片上传到Halo后,所有的文章都需要修改图片链接,这是非常麻烦的。于是想到了之前嫌麻烦没有使用的图床,并在这篇文章的启发下,开始了我自己图床的搭建:

https://blog.flycat.tech/archives/self-built-image-hosting-scheme-tutorial

我对图床的要求如下:

  • 资源占用小

  • docker部署

  • 能够实现图片压缩或格式转换(webp)

  • 图片自动重命名

  • 管理页面与图片直链域名分离,即不能通过图片直链的域名访问到图床后台

  • 能够接入图片上传软件,如PicGo

经过查找,发现简单图床能够很好满足我的需求。

Docker部署

简单图床官方并没有提供Docker镜像,这里放一个使用较多的镜像:

https://hub.docker.com/r/ddsderek/easyimage

如果你熟悉Docker的部署,这里我就直接给出命令了:

Docker-cli

docker run -itd \
  --name easyimage \
  -p 8080:80 \
  -e TZ=Asia/Shanghai \
  -e PUID=1000 \
  -e PGID=1000 \
  -e DEBUG=false \
  -v /root/data/docker_data/easyimage/config:/app/web/config \
  -v /root/data/docker_data/easyimage/i:/app/web/i \
  ddsderek/easyimage:latest

Docker-compose

version: '3.3'
services:
  easyimage:
    image: ddsderek/easyimage:latest
    container_name: easyimage
    ports:
      - '8080:80'
    environment:
      - TZ=Asia/Shanghai
      - PUID=1000
      - PGID=1000
      - DEBUG=false
    volumes:
      - '/root/data/docker_data/easyimage/config:/app/web/config'
      - '/root/data/docker_data/easyimage/i:/app/web/i'
    restart: unless-stopped

如果你不熟悉Docker的部署,那请参考这篇文章:

https://blog.laoda.de/archives/docker-compose-install-easyimage

配置

反向代理

为了实现管理页面与图片直链域名分离的效果,需要对管理页面和图片直链分别设置反向代理。

此部分假设:

  • 图床的本地访问页面为:http://192.168.1.100:8080

  • 图床的外部管理页面为:https://console.easyimage.com

  • 图床的直连URI:https://image.easyimage.com/xxxx/xx/xxxxx.xxx

管理页面

为了能够进入图床后台,首先需要配置管理页面的反向代理。

以Lucky为例,首先创建一个监听443端口的Web服务规则,在其中新建子规则,配置如下图所示:

配置好SSL证书后,就能够通过https://console.easyimage.com 来访问后台页面了。

图片直链

在同样的Web服务规则中新建子规则,配置如下图所示:

与控制页面最主要的区别就是后端地址多了/i ,这是由于简单图床的默认上传链接格式为: https://i2.100024.xyz/i/2023/02/06/1w0b5z.webp,其中/i/是由上传设置->存储路径设置的,你也可以对其修改(没必要)。

图床配置

初始配置

进入https://console.easyimage.com ,访问后台页面。初次进入后台会进行环境检查,出现以下页面:

点击下一步即可,这里会设置链接和管理员信息:

网站域名就是后台页面,填https://console.easyimage.com

图片链接域名填https://image.easyimage.com

注意:这里自动填写的网址为http,如果你使用https访问会出现资源无法加载的问题,请手动修改网址。

填好账号密码后点击开始安装。

安装结束后,就可以正常使用图床了。

其他配置

上述的配置仅仅是完成了图床的安装,但是还有其他一些安全、细节相关的设置需要更改。

隐藏存储路径

打开图床安全->隐藏/i/目录,然后将图片域名绑定到/i/目录。反向代理那部分,就是将图片域名绑定到了/i/目录。

此时,如果直接访问https://image.easyimage.com ,那么就会出现下方的静态页面:

这样就能保证后台页面不被非法访问。而如果是图片直链,就可以正常访问。

其实我认为比较理想的实现是添加认证界面,未经过认证的仅能访问图片直链,直接访问后台会弹出认证界面,就像这个博客:

https://blog.zhheo.com/

你可以直接访问其图床域名:

https://p.zhheo.com

会跳转到博主自建的HaoSafe认证页面,这部分我目前不知道实现方法。

图片格式

简单图床提供了图片格式转换功能,推荐将图片转换为webp格式,在画面无明显劣化的情况下,占用空间大幅减小。

注:仅对元素较为简单的图片生效,经笔者测试,如果图片存在大面积的虚化效果,webp会有明显劣化。因此不建议对网站的背景图等进行webp转换。

另外,下方还可以进行其他设置,我认为默认的单文件最大10M有点小,所以改成了30M,你可以自行决定修改与否。

接入PicGo

如果你已经使用后台页面上传过图片了,你就会发现很麻烦:不但要手动选择图片,并且上传后还要手动复制链接,更不要提剪切板中的截图了。

这时就需要一个图片上传软件了,我用的是PicGo。它支持直接上传剪切板图片、拖拽上传、悬浮窗置顶、上传后链接直接复制到剪切板。

更多的功能可以去官网查看:

https://picgo.github.io/PicGo-Doc/zh/

接入方法简单图床文档中已有教程,我就不赘述了:

使用PicGo上传

此外还有一个PicGo的分支——PicList,可以说是PicGo的上位替代了,更推荐使用:

https://piclist.cn/

PicList所提供的图片处理功能更加丰富自由,可以完美替代简单图床自带的图片处理。

总结

至此,图床的搭建就完成了,笔者认为此图床最大的两个问题一是没有删除的API,无法通过PicGo实现图片删除;二是没有图片的管理界面,只能通过文件管理删改图片。此外后台页面不美观也是一个小问题,不过一般也不使用。

以后如果还需要网站迁移,直接将文章转移即可,无需修改图片链接。

如果需要更改图床或换用OSS对象存储,只需要保证路径与现在图床相同,直接将直链域名解析到OSS即可,无需做大幅度的修改。

那么,已经有的图片咋办捏?一个个慢慢改吧~~~ 我懒,不改了