Docker系列 使用Easyimage2.0图床并优雅地迁移chevereto图片

发布于 2022-07-02  68 次阅读


前言

在《Docker系列 搭建个人图床chevereto》中,我已经向大家展示用docker安装chevereto 图床 的最佳实践。诚然,chevereto是一个经典的 图床 ;但其有几个潜在的缺陷:

  • 旧版不支持动态WebP;
  • 不支持上传图片时自动转化为WebP,需要依赖ShareX等工具
  • chevereto新版与旧版不相兼容,免费用户很难继续获得开发者的长期支持

如果你对图床的需求有下列特点:

  • 使用typora通过粘贴上传图片并希望使用webp作为第一图片格式
  • 崇尚极简风格
  • 不在意相册功能
  • 上传图片自动转webp

那么本文所介绍的Easyimage2.0图床就是你的菜了!之前在安装chevereto的时候也有所提及。Easyimage2.0相关信息:Github Repo; Docker Image。其外观为:

chrome_8JCuCvVhDa

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

新建一个文件

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设置无特殊,具体如下:

初始化

根目录

设置目录权限

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。会出现一个环境检测的界面,直接下一步:

NVIDIA_Share_8ch9ilafMp

这一步记得将http改为https。设置好帐号和密码。点开始安装

NVIDIA_Share_a9njCBXfSi

设置8-18位的密码:

MobaXterm1_CHS_2O1KWUdLAi

然后进会进入登陆界面。登陆即可。

成功登陆后会看到一些提示,按Esc键退出即可。

MobaXterm1_CHS_tkYTc8RrZc

一般设置

在设置中有很多项目可以自定义:

NVIDIA_Share_5bEmQidhR5

值得关注的项目有上传设置,比如我改成这样:

NVIDIA_Share_hq9sIxtNkp

还有API设置,你可以设置一个有效期长点的,方便自己日常使用。这里的API调用地址Token在PicGo中可以用得上:

NVIDIA_Share_7HIFBiqIbO

其它项目自己按需要设置就行了。

这里值得一说的是,作者还贴心地提供了一些忘记密码的操作:

直接输入账号和密码即可完成修改.
更改后会立即生效并重新登录,请务必牢记账号和密码!
如果忘记账号可以打开->/config/config.php文件->找到user对应的键值->填入
如果忘记密码请将密码->转换成MD5小写->转换网址->打开/config/config.php文件->找到password对应的键值->填入

而且,也提供了一些设计信息:

chrome_35y67Ba9Qt

最后,如果你是个人使用的话,还是建议要求登陆后才可以使用。设置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软件中的具体设置类似于:

NVIDIA_Share_1zWVc4OdJF

这个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

这时刷新一下图床的界面就可以看到广场里有图片了:

NVIDIA_Share_7rtuD8gKrt

这时图片链接会类似于:https://image.domain.com/images/2022/05/24/XXX.jpg。如果你使用的image.domain.com就是你原本chevereto图床的域名,那么你原本在markdown或者在网页中存放的图片链接均不会失效。很简单、很强大有木有呀?

当然,可能有一些图片的缩略图会显示错误(比如某些webp图片),但不影响实际的图片的正常显示的。这只能算是一个小小的trick!(我在腾讯云测试时,容器内的php不知为何未安装webp扩展;大部分用户说是正常的)

小结

Easyimage2.0确实是使用很简单,对于使用场景比较简单的童鞋来说非常友好,也不像chevereto的安装那么复杂。如果上传啥的有报错,多数是权限问题,灵活运用chownchmod命令即可。

参考