图片总丢?为何不自己搭建一个图床服务
经常写博客或者Markdown文章的同学都知道,图片资源总莫名其妙丢了,我们或者每次把图片随着md文件移过来换过去,或者找一个提供图床服务的产品,又或者扔到自己的服务器,然后将资源目录发布出来。
但是,这些方法总归存在一些问题,随着md文章移动,容易丢失;放在图床服务,不安全且可能存在提供商关闭后续不可用的情况;放在自己服务器,可行但是上传不太方便,然而借助picGo或者picList接合sftp等等,我们可以实现一个比较不错的图床管理,这也是我一度使用的方式。但是今天我要介绍的不仅仅是PicGo+sftp的方式,而是一个开源服务easyImage,它和picGo来结合管理,这样我就可以不用一直开着我服务器的ssh端口了。
先看看easyImage自己本身的搭建后效果:
再看看我通过和picList结合的效果:
easyImage是一个图床服务,自己本身就支持web端图床管理,见图一。常见功能如下:
- 支持API
- 支持仅登录后上传
- 支持设置图片质量
- 支持压缩图片大小
- 支持文字/图片水印
- 支持设置图片指定宽/高
- 支持上传图片转换为指定格式
- 支持限制最低宽度/高度上传
- 支持上传其他文件格式
- 在线管理图片
- 支持网站统计
- 支持设置广告
- 支持图片鉴黄
- 支持自定义代码
- 支持上传IP黑白名单
- 支持上传日志IP定位
- 支持限制日上传次数
- 支持创建仅上传用户
- 对于安装环境要求极低
- 对于服务器性能要求极低
- 理论上支持所有常见格式
- 更多功能支持请安装尝试···
PicGo是一个图床管理软件,自己本身也支持各种插件,例如sftp,本地,webdav等等存储方式上传图片,而easyImage也提供了picGo的插件,picGo自己本身也支持图片上传管理,按照日期分类,图片水印,压缩等等功能。
我为什么重复使用这两个呢?如果你使用Typora软件来写Markdown文件,那么picGo配置支持后,一旦在Typora中粘贴图片可以触发一键自动上传,极度方便。
所以我后边分为两个过程介绍。只搭建图床服务、搭配picGo。
搭建easyImage图床
搭建服务
1.还是docker-compose
搭建服务,在自己想要存放图片数据的目录建立docker-compose.yml
文件,编写命令:
version: '3.3'
services:
easyimage:
image: ddsderek/easyimage:latest
container_name: easyimage
ports:
- '8088:80' # 访问端口,冒号左侧宿主机端口可以换
environment:
- TZ=Asia/Shanghai
- PUID=1000
- PGID=1000
- DEBUG=false
volumes:
- '/docker/easyimage/config:/app/web/config' # easyImage配置文件持久化目录,我放在了`/docker/easyimage`目录
- '/docker/easyimage/i:/app/web/i' # 图片上传目录,如果不想要和配置数据放一起,可以自己换冒号左边宿主机路径
启动服务
docker-compose up -d
2.如果你要使用docker-cli,则是以下步骤:
拉取镜像
docker pull ddsderek/easyimage:latest
启动服务
docker run -itd \
--name easyimage \
-p 8080:80 \
-e TZ=Asia/Shanghai \
-e PUID=1000 \
-e PGID=1000 \
-e DEBUG=false \
-v /docker/easyimage/config:/app/web/config \
-v /docker/easyimage/i:/app/web/i \
ddsderek/easyimage:latest
开始使用
1.访问IP+8080,即可打开web界面,第一步检测环境,docker搭建的一般没什么问题,下一步即可。
2.下一步建议提前确定好自己以后访问图床服务的ip,例如我们搭建完可能要外网访问,那么就得确定好外部网络的ip或者域名以及端口了,这边就得填外网访问的地址。如果内网则IP+8080端口即可,当然后续config或者管理员配置里面也可以更改。然后管理员账号密码,开始安装即可。
3.进入首页,可以看到上传面板,支持批量上传,支持同步给出各种使用参考语法。历史和统计就是展示相关功能了。
4.广场图片查看,是根据日期分类的,可以进行已上传图片管理操作。
5.统计
6.接下来是管理员设置
- 网站设置:访问路径,标题,关键字,公告,页脚等等显示设置。
- 界面设置:界面配色,显示等等设置
- 上传设置:存储目录,方式以及允许的类型,命名,大小等等设置
- 水印设置:设置水印
- API设置:给第三方调用的接口开发设置,例如picGo等等
- 上传压缩、压缩图片:针对图片压缩的设置
- 图床安全:一些开放功能的设置,例如必须登录用户才能上传,开启API上传等等。
- 账号密码:用户账号管理
- 系统信息:系统服务的信息
- 远程附件、广告设置、图片回收、可疑图片、文件管理:其它设置,具体可以自己研究一下,按需使用。
下载链接
就这么简单的搭建完,其实已经可以愉快的使用了,下面是一些扩展插件,这些插件都需要API设置:
PicGo我会在下边单独讲,不需要的这一步其实已经可以使用了。
PicGo
虽然我一直提的是PicGo,但是我其实使用的是PicGo的修改版本PicList,你可以认为PicGo的配置方式在picList中一样适用。支持windos、Linux、MacOS
PicList是一款高效的云存储和图床平台管理工具,在PicGo的基础上经过深度的二次开发,不仅完整保留了PicGo的所有功能,还增添了许多新的feature。例如相册支持同步云端删除文件,内置图床额外添加了WebDav、本地图床和SFTP等。PicList同时增加了完整的云存储管理功能,包括云端目录查看、文件搜索、批量上传下载和删除文件,复制多种格式文件链接和图片/markdown/文本/视频预览等,另外还有更加强大的相册和多项功能新增或优化。
下载地址:https://github.com/Kuingsmile/PicList/releases/tag/v2.8.0
picList本身支持很多服务的图床管理,例如sftp模式,自己选取自己的上传方式,进行配置即可,因为我是picGo迁移过来的,之前没有使用内置sftp的配置,而是使用了sftp-upload插件(没错,picGo有强大的插件支持)。
内置sftp
sftp插件
部分插件列表
配置easyImage
1.确保安装picList后,打开点击插件
,搜索web-uploader 1.1.1
并安装
2.点击图床
-自定义web图床
,点击Default
编辑按钮,或者新建一个也行。按照如下方式填写,然后点击确定并设置为默认图床。
API地址:https://png.cm/api/index.php // 输入你网站api地址
POST参数名: image
JSON路径: url
自定义Body: {"token":"1c17b11693cb5ec63859b091c5b9c1b2"} // 这里输入你网站生成的token
登录图床后台 token和API地址可以在图床后台API设置查看和设置
3.登录图床后台,图床安全->高级设置->开启API上传
关闭其它图床配置显示
因为picList默认其它图床即使不使用,配置也在那放着,强迫症可以去掉:设置-上传设置
,去掉不用的勾选即可。
picList是一个软件,其它功能其实都点击几遍就明白了,就不具体介绍了。
Typora和PicList结合
自己本机启动PicList后,进入typora设置,图像,开启上传服务设定即可。将插入图片时下拉选项选择为上传就可粘贴图片自动触发上传,我没开启自动上传,每次都得自己确认一遍点击上传才触发。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。