前言
在《Docker系列 搭建个人图床chevereto》中,我已经向大家展示用docker安装chevereto 图床 的最佳实践。诚然,chevereto是一个经典的 图床 ;但其有几个潜在的缺陷:
- 旧版不支持动态WebP;
- 不支持上传图片时自动转化为WebP,需要依赖ShareX等工具
- chevereto新版与旧版不相兼容,免费用户很难继续获得开发者的长期支持
如果你对图床的需求有下列特点:
- 使用typora通过粘贴上传图片并希望使用webp作为第一图片格式
- 崇尚极简风格
- 不在意相册功能
- 上传图片自动转webp
那么本文所介绍的Easyimage2.0图床就是你的菜了!之前在安装chevereto的时候也有所提及。Easyimage2.0相关信息:Github Repo; Docker Image。其外观为:
Easyimage2.0也支持公共使用和鉴黄功能。下面让我们安装这个极简风格的图床吧!
测试环境
腾讯云上进行测试。
uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
docker --version # Docker version 20.10.5, build 55c4c88
docker-compose --version # docker-compose version 1.28.6, build 5db8d86f
准备工作
按需修改工作目录:
work=~/docker/easyimage && mkdir -p $work && cd $work
按需修改端口,开启防火墙:
sudo ufw allow 3578/tcp comment 'easyimage' && sudo ufw reload
提前拉取镜像:
docker pull ddsderek/easyimage:latest
配置yaml
不了解docker的小伙伴请先看:《Docker系列 配置Docker全局环境》;《Docker系列 了解Docker Compose的配置文件》。
新建一个文件
vim $work/docker-compose.yml
添加以下内容:
version: '3.3'
services:
easyimage:
image: ddsderek/easyimage
container_name: easyimage
ports:
- '3578:80'
volumes:
- './config:/app/web/config'
- './images:/app/web/images'
restart: unless-stopped
networks:
- default
networks:
default:
name: easyimage
上线服务:
docker-compose up -d
NPM & ddns-go
在DDNS-GO后台或者域名托管商进行DNS解析,比如image.domain.com
。
NPM设置无特殊,具体如下:
有小伙伴反映Block Common Exploits
不能打开。如果使用有bug,大家可以关闭。
初始化
根目录
设置目录权限
sudo chmod -R 777 $work/images/
sudo chmod -R 777 $work/config/
修改$work/config/config.php
文件:
sudo vim $work/config/config.php
修改的项目如下:
// 设置domain和url。根据自己的地址修改。
'domain'=>'https://image.domain.com',
'imgurl'=>'https://image.domain.com',
// 支持api上传。typora使用者要打开这个
'apiStatus'=>1,
// 图片位置。根据docker-compose的要求进行改动
'path'=>'/images/'
重启一下容器
cd $work && docker-compose down && docker-compose up -d
安装软件
登陆https://image.domain.com
。会出现一个环境检测的界面,直接下一步:
这一步记得将http
改为https
。设置好帐号和密码。点开始安装
:
设置8-18位的密码:
然后进会进入登陆界面。登陆即可。
成功登陆后会看到一些提示,按Esc键退出即可。
一般设置
在设置中有很多项目可以自定义:
值得关注的项目有上传设置
,比如我改成这样:
还有API设置
,你可以设置一个有效期长点的,方便自己日常使用。这里的API调用地址
、Token
在PicGo中可以用得上:
其它项目自己按需要设置就行了。
这里值得一说的是,作者还贴心地提供了一些忘记密码的操作:
直接输入账号和密码即可完成修改.
更改后会立即生效并重新登录,请务必牢记账号和密码!
如果忘记账号可以打开->/config/config.php文件->找到user对应的键值->填入
如果忘记密码请将密码->转换成MD5小写->转换网址->打开/config/config.php文件->找到password对应的键值->填入
而且,也提供了一些设计信息:
最后,如果你是个人使用的话,还是建议要求登陆后才可以使用。设置config.php即可:
// 要登陆才可以使用
'mustLogin'=>1,
修改后,要登陆才可以使用图床。登陆地址是:https://image.domain.com/admin
如果你要备份图床,用duplicati备份整个根目录即可。
PicGo+Easyimage2.0
和使用chevereto类似的,你可以直接通过picgo来支持Easyimage2.0,这样在typora写作中可以获得完美的体验。PicGo-app安装我就不重复了,可以看我之前的博文《Docker系列 深度使用nextcloud(三)Typora图床》。用PicGo-Core也是类似的原理,自己探索一下。
在PicGo软件中的具体设置类似于:
这个API地址和token可以在API设置
获取。也很容易!
迁移chevereto图床
Easyimage2.0的docker版安装是蛮简单的。如果你是第一次使用图床,直接正常使用即可。如果你以前是chevereto的用户,那么很幸运的,也有一些方法可以将chevereto的图片迁移至Easyimage2.0!不过呢,一些额外的信息,比如相册、评论等,是无法迁移的。
基本的原理很简单。如果你按我的教程安装chevereto的话,根目录下会有一个images文件夹,将它里面的内容直接copy至images
文件夹即可:
drwxr-xr-x 2 www-data www-data 4.0K May 22 16:46 cache
drwxr-xr-x 3 www-data www-data 4.0K Apr 20 10:01 content
drwxr-xr-x 5 www-data www-data 4.0K Apr 20 09:13 images (就是这个)
-rw-r--r-- 1 www-data www-data 93 Apr 20 10:01 php.ini
drwxr-xr-x 3 www-data www-data 4.0K Apr 20 10:01 routes
比如,我现在的easyimage的根目录内容如下:
├── config
│ ├── api_key.php
│ ├── config.guest.php
│ ├── config.manager.php
│ └── config.php
├── docker-compose.yml
└── images
├── 2020
├── 2021
└── 2022
这个images的文件就是我copy过来的。copy完后,我们改一下文件夹的权限:
sudo chmod -R 777 $work/images
这时刷新一下图床的界面就可以看到广场里有图片了:
这时图片链接会类似于:https://image.domain.com/images/2022/05/24/XXX.jpg
。如果你使用的image.domain.com
就是你原本chevereto图床的域名,那么你原本在markdown或者在网页中存放的图片链接均不会失效。很简单、很强大有木有呀?
当然,可能有一些图片的缩略图会显示错误(比如某些webp图片),但不影响实际的图片的正常显示的。这只能算是一个小小的trick!(我在腾讯云测试时,容器内的php不知为何未安装webp扩展;大部分用户说是正常的)
小结
Easyimage2.0确实是使用很简单,对于使用场景比较简单的童鞋来说非常友好,也不像chevereto的安装那么复杂。如果上传啥的有报错,多数是权限问题,灵活运用chown
和chmod
命令即可。更多使用技巧,可以参考这个文档:
参考
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
我遇到一个问题。
sudo chmod -R 755 $work/images/
之后点击上传图片,总是收到报错“JSONpath不对”。受到你最后一段的启发,我检查了一下文件夹的权限,把images改成777之后就好了。是不是因为我的images owner是我自己,你的是一个别的用户呀?有可能 不过我用的是Chevereto图床,Easyimage2.0只是玩了一下,没有非常深入。感觉Chevereto比较对我的口味ヾ(≧∇≦*)ゝ
感觉Chevereto功能更多一点,比如它会自动生成好几个大小的图片。Easytimage的优点是它很easy,可以自动转换格式。你的文章也提到,Chevereto的一个问题是新版本不兼容,主要是没有中文,不知道还有没有别的问题,相当于就被卡死在了1.4.2上,不好再更新了。
之后准备想办法搞定chevereto的升级问题。目前还在测试中(☆ω☆)
docker-compose volumes配置的/web/app/images必须和上传配置中存储目录对应。或者直接映射/web/app整个目录,否则容器一旦重启,图片就都没了。希望博主加下提示
像这样的设置:
重启容器后数据还是会丢失? 我印象中以前测试的时候是不会的 ~ 不过easyimage2.0项目过去那么久了,我也没太了解了。
按教程走是没问题的,但easyimage2.0项目默认的存储目录是
/app/web/i
不是/app/web/images
, 如果没有按教程里将目录改成images(因为教程中改目录是按个人喜好的可选项),就会没有映射到容器内的目录,数据就不会被持久化。苯苯啊,你试试兰空图床呢
不折腾太多图床,够用就好 (ฅ´ω`ฅ)