Docker 项目,使用 EasyImage 轻松搭建个人图床
介绍
我们有时需要上传一些图片用于个人博客,或是其他项目分享,如果你也像我一样更加希望图片存放在自己的服务器上而不是第三方平台上,那么推荐搭建一个属于自己的图床。
本文将介绍如何使用 Docker 快速部署一个基于 EasyImage 2 的图床服务。
EasyImage 特点
EasyImage 简单强大,无数据库非常适合小服务器。
- 支持WebP格式转换
- 支持仅登录后上传
- 支持设置图片质量
- 支持文字/图片水印
- 支持设置图片指定宽/高
- 支持上传图片转换为指定格式
- 支持限制最低宽度/高度上传
- 支持API
- 在线管理图片
- 等更多功能
部署
本文的命令适用于 Debian 12,并且需要在 root 用户下完成,请使用 sudo -i
或 su root
切换到 root 用户进行操作。
安装 Docker
相比于直接安装 Debian 仓库中的 docker,更推荐使用 Docker 官方的源进行安装,并且将安装 docker compose
进行管理 Docker 项目。
首先需要更新和安装软件:
1 | apt update |
然后加入 Docker 的 GPG 公钥和 apt 源:
1 | curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg |
中国大陆的机器可以用清华 TUNA 的国内源:
1 | curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg |
然后更新系统后即可安装 Docker CE 和 Docker Compose 插件:
1 | apt update |
此时可以使用 docker version
命令检查是否安装成功:
1 | root@debian ~ # docker version |
1 | root@debian ~ # docker compose version |
参考:Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程
创建 docker-compose.yaml
使用 docker compose
管理 Docker 项目不必去记复杂的 docker run 命令,并且可以把不同的项目放在一起管理,更加的方便。
首先选择一个合适的地方比如 /root/docker-project/
在其中创建项目文件夹,在项目文件夹中创建 docker-compose.yaml
。
然后填写下面的内容
1 | services: |
在 docker-compose.yaml
的配置中,:
前面对应主机,后面对应 docker 容器。
docker compose 的命令需要在 docker-compose.yaml
同目录下运行
在这个配置中,我们将使用 http://服务器ip:8080
访问项目,实际数据存储于服务器的 /root/data/docker_data/easyimage
目录下。
运行
首先使用下面的命令拉取镜像
1 | docker compose pull |
然后启动镜像
1 | root@debian ~ # docker compose up -d |
没有报错就表示成功启动,访问 http://服务器ip:8080
即可显示 EasyIamge 2.0 安装环境检测 ,可以点击下一步继续
不过如果我们拥有域名,且希望设置 Nginx 反代,可以先终止 docker 项目,进行 Nginx 的设置。
1 | docker compose down |
设置 Nginx 反代
推荐使用 Nginx Proxy Manager 进行设置,或是手动填写配置文件的反代部分。
1 | location ^~ / |
测试并重载 Nginx 配置
1 | nginx -t |
然后我们可以将 docker-compose.yaml
中的端口部分修改如下,不再将 8080 暴露在公网。
1 | ports: |
重新启动镜像,访问 https://你的域名
在进行设置。
1 | docker compose up -d |
点击下一步, 在 EasyIamge 2.0 网站基础配置
- 设置域名网站域名记得改为
https://
- 设置管理账号,修改为自己想用的账户密码
设置完成后会跳转到登陆界面,即可登陆账户。
设置调整
由于我们是个人使用,可以进行一些安全调整,前往 设置 调整下面内容
- 图床安全 > 开启 登陆上传 与 验证码
- API设置 > 禁用已有 Token ,如果需要添加一个新的。
节省存储空间可以在 上传设置 中将 上传图片格式转换 设置为 WEBP
,现在 webp 已足够流行,不必担心兼容问题。
配合 PicGo 上传
上传时每次打开网页也比较麻烦,EasyImages 支持 API 上传,因此可以安装 PicGo
开启 API 上传功能
登录图床后台 > 图床安全 > 高级设置 > 开启API上传
下载 PicGo
访问 https://github.com/Molunerfinn/PicGo/releases 下载
macOS 打开时提示损坏,打开终端执行下面的命令,回车后输入电脑账户密码授权
1 | sudo xattr -d com.apple.quarantine /Applications/PicGo.app/ |
安装 web-uploader 插件
参考 使用PicGo上传.md
打开 PicGo ,插件设置搜索 web-uploader
,安装第一个
点击左侧图床设置,找到自定义Web图床,添加一个。
配置页面:
- 图床配置名:取个名字
- API地址:图床后台 > 设置 > API设置 页面获取
- POST参数名:
image
- JSON路径:
url
- 自定义请求头: 留空不填
- 自定义Body:
{"token":"your token"}
token 在图床后台 > 设置 > API设置 页面获取
然后返回上传区,图片上传选择刚刚添加自定义图传,就可以使用 PicGo 上传了。
总结
EasyImage 简单易用,无需数据库,配置要求与资源占用都非常低,非常适合拿来当作个人图床。
不过正是由于没有数据库,无法保存文件名称(可以在设置中打开日志记录)以及设置相册分组。
错误信息
Nginx 413 上传失败
如果上传失败,浏览器 Console 信息提示 413 ,可以在 Nginx 反代设置中,调整大小限制。
1 | client_max_body_size 10m; |
其他
删除图片
登录图床后台 > 文件管理 > 删除文件 > 删除单张图片 可以通过图片链接快速删除特定图片。
或是使用文件管理进行删除。
未来的备份与迁移
如果未来需要更换机器或是不再使用 EasyImage ,只需备份网站配置 /i/
的中文件夹即可,所有的图片都存放在这里。
后台与图片使用不同的域名
由于 EasyImage 的图片是本地文件存储的,在网站的设置中,我们可以为很简单的为 网站 和 图片 指定不同的域名,比如:
- 网站域名:
https://upload.example.com
- 图片域名:
https://img.example.com
此时我们可以在 docker-compose.yaml
中将目录映射修改为下面的形式:
1 | volumes: |
然后在主机中的 Nginx 中将 https://img.example.com
的 root 目录设置为 /var/www/img.example.com
就可以了
1 | server { |