转至我的个人博客:https://blognas.hwb0307.com。欢迎关注!
此教程经测试有些缺陷,改良版教程详见:https://blognas.hwb0307.com/linux/docker/485

前言

老实说,chevereto和随后我要讲的nextcloud在安装的过程中都有点复杂,我也不知道大家会不会觉得太难。其实多数常见的Docker应用的安装是不需要这么复杂的;它们的复杂往往是因为我们想要得到最佳性能或者效果。我会尽量写得详细一些。如果真有什么问题,评论区留言反馈吧。

另外,我感觉Nextcloud图床对于Typora写作的非图床专业用户来说也是一种不错的选择。如果你不想在Typora中使用Chevereto图床,也可以看我的Nextcloud系列教程:Docker系列 深度使用nextcloud(三) Typora图床。

前面的学习中,我们安装了bitwardenduplicati两款实用的docker应用。本回我们将介绍另一个好用的应用,即chevereto。它的官网是:https://chevereto.com/。chevereto是一款自建图床的程序。可能小伙伴不知道什么是“图床”。简而言之,就是一款托管图片的程序吧。

在没有使用markdown之前,我对于图床没什么概念。平时自己很少自拍,也不怎么拍别人或风景嘛!不过后来接触了markdown,就不得不关心起图床了。由于Typora并没有内置的图床,所以托管markdown写作过程中图片的平台的搭建就变得非常重要了。

我最开始使用的是一款叫auxpi的图床,因为它有宝塔搭建的教程,所以自己才找到它的。就算是现在,我也觉得这是一个非常好的图床,在Github上也有2.6k的Star呢!只不过自己当时刚玩Linux不久,不太能看懂它关于API的设置,所以一直没有办法在Typora和PicGo中完美地适配auxpi。后来我看到别人用Typora+PicGo+Chevereto的方法来搭建markdown工作流程,所以就转投chevereto了。现在我可以确切地和你说,在Typora中,经过简单的设置后,Ctrl+v粘贴的图片可以直接上传到图床中!想当初我最开始用Typora的时候,还傻傻地在浏览器打开图床窗口,然后将图片拖上去,最后再复制markdown专用图片链接。没办法,那会比较小白,哈哈!

就算是在国内的网络环境,也有很多免费的图床可以用。具体可参考《2020国内能用的图床集合》。但我在很早之前就很抗拒使用第三方图床。就算是现在,我还是建议要搭建一个个人专属图床,特别是你有VPS的情况下。虽然白嫖别人的服务很爽;有些小伙伴喜欢将图床托管在github上;如果有小伙伴用notion来进行markdown写作的话,图片可以直接粘贴,也挺方便。但是,你的图片的命运就掌握在别人手中而不是自己手中。我觉得,如果你将mardown当作生产力工具的话,里面的图片应该是十分重要的。试想一下你的图床的图片丢失,之前的努力都白费了!Github毕竟是美国的东西,如果以后Github不再向中国用户开放,那你又得花时间和精力去转移你的图床,而且你不一定可以在gitee这样的平台恢复你的链接和数据。这样使用mardown的体验也会非常差!如果你有个人专属图床,只要做好备份,基本上就等于永久不失效图床。

另外,我觉得,chevereto是一个非常专业的图床,使用它的话图床功能具有潜在的扩展性,这对我而言有不少吸引力。此外,它还有类似的优势:

  • 有docker镜像,备份和迁移简单
  • 强大的后台管理和扩展性
  • 与PicGo的良好交互,支持markdown

而且,chevereto是有收费版的,这就意味着它被一个盈利机构所维护。产品质量有保障!

我以前是在宝塔中使用chevereto,后来迁移到docker,数据也可以有效地恢复。不过本回暂时不讨论chevereto的数据如何从宝塔迁移至Docker容器中。如果有需要的话可留言评论,以后再开一篇来讲述吧。而且我使用chevereto近2年了,十分稳定。这更加坚定了我使用chevereto作为个人图片托管平台。

不想用个人图床的,还可以选择使用对象存储(OSS)来托管图片,也许是一个不错的方案!不过我只是听说,没有亲身实践过。你可以看一下这个:markdown书写以及图片上传到阿里云oss,或者自己Google百度一下。设置似乎也很简单。资费估计也很低!

好了,与chevereto有关的介绍到此为止。对我来说,这确实是最重要的应用之一了。

下面我们来看看怎么安装chevereto吧!

测试平台

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/Linuxdocker --version # Docker version 20.10.5, build 55c4c88docker-compose --version # docker-compose version 1.28.6, build 5db8d86f

准备工作

# 工作目录请按需修改
work=~/docker/chevereto && mkdir -p $work && cd $work# 提前拉取镜像
docker pull mariadb && docker pull nmtan/chevereto:1.4.1# 开放端口
sudo ufw allow 7777/tcp comment 'chevereto' && sudo ufw reload# 子目录。其中app这个目录要留给www-data:www-data用户
mkdir -p $work/app/images

我们在./app文件夹中建立一个文件:

vim ./app/php.ini

写入以下内容:

upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 3072M
max_execution_tim = 180

这个php.ini的主要作用是自定义上传图片的基本属性。你可以先按我的来。以后不满意再改吧。

我们简单地看一下工作目录的内容:

└── [4.0K]  app├── [4.0K]  images├── [  93]  php.ini
4 directories, 1 file

大致就是这样。

值得一提的是,在最近的1.6x版本中,chevereto好像不支持中文了。我也不知道为什么。所以我装了一个旧版本。如果大家介意的话,可以将:1.4.1去除。

最后,将./app的用户(组)改为www-data:www-data

sudo chown -R 33:33 $work/app/

安装Chevereto

配置yml文件

创建docker-compose.yml文件:

vim $work/docker-compose.yml

填入以下内容:

---
version: '3'services:db:image: mariadbvolumes:- ./db:/var/lib/mysql:rwrestart: alwaysnetworks:- defaultenvironment:MYSQL_ROOT_PASSWORD: chevereto_password_root # 按需更改MYSQL_DATABASE: chevereto # 按需更改MYSQL_USER: chevereto # 按需更改MYSQL_PASSWORD: chevereto_password # 按需更改app:image: nmtan/chevereto:1.4.1restart: alwaysports:- 7777:80 # 按需更改networks:- defaultenvironment:CHEVERETO_DB_HOST: dbCHEVERETO_DB_NAME: chevereto # 与db的设置一一对应CHEVERETO_DB_USERNAME: chevereto # 与db的设置一一对应CHEVERETO_DB_PASSWORD: chevereto_password # 与db的设置一一对应volumes:- ./app/images:/var/www/html/images:rw# - ./app/content:/var/www/html/content:rw- ./app/php.ini:/usr/local/etc/php/php.ini:ro# - ./app/app/routes:/var/www/html/app/routes:rwdepends_on:- dbnetworks:default:name: chevereto

这里,我向童鞋们说明一下初次使用mariadb的一些技巧。

一般,我们会用mariadb/mysql这些数据库软件来存储软件的数据,这样调用起来更加高效。在Docker的安装中,比如我要装chevereto应用,如果事先指定数据库的帐号和密码:

CHEVERETO_DB_NAME: chevereto # 与db的设置一一对应
CHEVERETO_DB_USERNAME: chevereto # 与db的设置一一对应
CHEVERETO_DB_PASSWORD: chevereto_password # 与db的设置一一对应

然后在安装时,与mariadb/mysql的对应上:

MYSQL_DATABASE: chevereto # 按需更改
MYSQL_USER: chevereto # 按需更改
MYSQL_PASSWORD: chevereto_password # 按需更改

这样在实际设置中,就不需要额外地设置数据库的帐户名。当然,这个密码你可以用bitwarden生成强密码。用户名不改也无所谓。

在某些时候,甚至可以通过搭建一个phpmyadmin来提供一个可视化的后台来管理mysql。不过这里我们不会这样设置。

OK,我们直接安装:

docker-compose up -d

我们可以登陆Portainer的后台看一下,发现在Stack里有一个chevereto

点进去看,会发现我们刚刚安装的chevereto的应用群:

注意它的命名规则。自己可以想想它为什么是这个名字喔!我们也可以看到IP Address,很容易可以发现它俩是同一个网段的。一目了然!

NPM设置

通过ddns-go或者域名托管后台解析一个域名example.com

NPM反代http://172.17.0.1:7777。无特殊设置。如下图:

访问https://example.com即可。会自动转到安装界面:

自己填好相关信息就可以完成登陆了。可以用bitwarden搞一个强密码。

直接登陆,后台就是这样:

我们先将语言改成简体中文。如图所示,自己改吧!

到这里,我们尝试在主页上传一张照片。随便什么都行。

一般来说,这样chevereto就可以正常使用了。不过,为了以后更好地迁移整个目录,我建议你按下面的方法进行一些设置。原因是这样的:

  • Chevereto的功能文件夹是整个html,而不仅仅是images。如果以后只迁移images,那么用户信息将无法恢复。
  • 官方的docker镜像不支持挂载整个html

通过chevereto这个例子,我们也学习一些怎么在容器Shell中和宿主Shell交互

文件夹管理

我们回到shell里:

# 返回工作目录
cd $work

观察./app目录:

tree -hl $work/app

内容如下:

├── [4.0K]  images
│   └── [4.0K]  2022
│       └── [4.0K]  04
│           └── [4.0K]  22
│               ├── [ 78K]  image.md.png
│               ├── [ 73K]  image.png
│               └── [ 19K]  image.th.png
├── [  93]  php.ini

我们现在要进行一些特别的操作。我们进入chevereto_app_1里面将整个html目录拷贝出来!

docker exec -it chevereto_app_1 /bin/bash

这个过程不用输入密码。有没有发现我们进入了另外一个地方root@651953308f35:/var/www/html#?

没错,虽然你是用普通用户运行的docker,但是其实却是root用户在管理呢!

我们简单地观察一下:

ls 

有好多文件夹:

LICENSE    app            composer.lock  custom-entrypoint.sh  importing      index.php  sdk
README.md  composer.json  content        images                importing.php  lib

所以我们要做的,就是将整个html目录复制出来。

我们可以压缩整个html目录

# 在/var/www/这个目录中工作
cd /var/www/# 压缩
tar zvfc html.tar.gz ./html# 传送到./images里。因为我们挂载这个目录出去了,这样就可以在宿主机访问这个压缩文件!
mv html.tar.gz /var/www/html/images/# 退出容器的shell
exit

此时在宿主机器的shell中,我们再观察一下:

tree -hl $work/app

输出为:

├── [4.0K]  images
│   ├── [4.0K]  2022
│   │   └── [4.0K]  04
│   │       └── [4.0K]  22
│   │           ├── [128K]  image.md.png
│   │           ├── [ 79K]  image.png
│   │           └── [ 24K]  image.th.png
│   └── [5.9M]  html.tar.gz
└── [  93]  php.ini4 directories, 5 files

两个压缩文件已经拷贝出来了!先转移到./app目录:

sudo mv $work/app/images/html.tar.gz $work/app/

我们可以将旧的images文件夹删除:

sudo rm -r $work/app/images/

html.tar.gz解压到$work/app/中:

cd $work/app/ && sudo tar zfvx html.tar.gz

这时再cd $work/app && tree -L 2看一下,已经各就各位了。

.
├── html
│   ├── app
│   ├── composer.json
│   ├── composer.lock
│   ├── content
│   ├── custom-entrypoint.sh
│   ├── images
│   ├── importing
│   ├── importing.php
│   ├── index.php
│   ├── lib
│   ├── LICENSE
│   ├── README.md
│   └── sdk
├── html.tar.gz
└── php.ini7 directories, 9 files

最后,不要忘记将./app文件夹所有文件改为www-data:www-data所有:

sudo chown -R 33:33 $work/app

改动yml文件

下线服务

docker-compose down

$work/docker-compose.yml的内容改为:

---
version: '3'services:db:image: mariadbvolumes:- ./db:/var/lib/mysql:rwrestart: alwaysnetworks:- defaultenvironment:MYSQL_ROOT_PASSWORD: chevereto_password_root # 按需更改MYSQL_DATABASE: chevereto # 按需更改MYSQL_USER: chevereto # 按需更改MYSQL_PASSWORD: chevereto_password # 按需更改app:image: nmtan/chevereto:1.4.1restart: alwaysports:- 7777:80 # 按需更改networks:- defaultenvironment:CHEVERETO_DB_HOST: dbCHEVERETO_DB_NAME: chevereto # 与db的设置一一对应CHEVERETO_DB_USERNAME: chevereto # 与db的设置一一对应CHEVERETO_DB_PASSWORD: chevereto_password # 与db的设置一一对应volumes:- ./app/html:/var/www/html:rw # 挂载整个html目录- ./app/php.ini:/usr/local/etc/php/php.ini:rodepends_on:- dbnetworks:default:name: chevereto

然后直接上线:

docker-compose up -d

访问https://domain.com/dashboard可正常登陆。

备份迁移时,备份整个$work目录即可。

当然,不要忘记用duplicati备份$work目录喔!

小结

一般来说,chevereto的安装不需要这么复杂。可是,为了方便以后迁移,你还是忍受一下吧!

html目录中,有几个比较重要的文件夹。比如,images是放图片的文件夹;content文件夹主要与系统和用户设置有关;而app/routes则与相册的设置有关。如果你需要在typora后台将图片上传到特定的相册,而不是以访客身份传输照片,就需要修改routes的相关配置。

后面再出一个博文讲一下如何在markdown中使用chevereto吧!

Docker系列 搭建个人图床chevereto相关推荐

  1. Docker系列五自建图床

    本文知识共享许可协议为CC BY-NC-SA 4.0,首发于个人博客,转载和参考请注明出处. 其实最一开始的时候,就考虑过图片应该怎么办,考虑了很久,也尝试过阿里云.七牛云的oss,总得来说就是能够折 ...

  2. 宝塔面板搭建个人图床Chevereto完整教程

    前言: 手里有台香港阿里云机器,不知道干什么好,干脆拿来做些小实验,呆在家里防疫都已经快长毛了...博客上的图片本来是托管在阿里云OSS上的,但是感觉管理起来不是很方便.而且本来很好用的 SM.MS ...

  3. Chevereto图床搭建 | 利用云服务器搭建免费图床完整教程

    前言: 手里有台香港阿里云机器,不知道干什么好,干脆拿来做些小实验,呆在家里防疫都已经快长毛了...博客上的图片本来是托管在阿里云OSS上的,但是感觉管理起来不是很方便.而且本来很好用的 SM.MS ...

  4. Chevereto v4 专业版搭建个人图床图文教程(博主自用)

    Chevereto 是一个优秀的图床程序,有免费版和付费版之分,目前,Chevereto 已更新至 V4 版本,今天为大家分享一下使用 Chevereto v4 最新专业版搭建个人图床的过程. 1. ...

  5. Docker系列 搭建自动备份服务duplicati

    转至我的个人博客:https://blognas.hwb0307.com.欢迎关注! 前言 在Docker系列 搭建密码管理应用bitwarden中,我们安装了一个实用的Docker应用bitward ...

  6. 一劳永逸,使用 PicGo + GitHub 搭建个人图床工具

    原文链接: 一劳永逸,使用 PicGo + GitHub 搭建个人图床工具 经常写博客的同学都知道,有一个稳定又好用的图床是多么重要.我之前用过七牛云 + Mpic 和微博图床,但总感觉配置起来比较麻 ...

  7. MinIO+NPS+DDNS+旧笔记本搭建私有图床

    MinIO+NPS+DDNS+旧笔记本搭建私有图床 前言 ​ 一篇好的博文,是需要图文并茂的.以前最好用的免费图床应该是PicGo+gitee方式了.但今年,这种gitee已打击这种使用仓库作为图床做 ...

  8. 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客

    如何利用阿里云对象存储OSS搭建自己图床写博客 1.购买阿里云 购买链接 登录阿里云–>控制台–>对象存储OSS–购买 购买的时候可以选择按月付费一月一元的,也可以年费9元的,40GB作为 ...

  9. typora+picgo+gitee搭建免费图床纵享丝滑

    typora+picgo+gitee搭建免费图床纵享丝滑 0.写在前面 由于之前自己在github搭了自己的博客,伴随之而来的一系列问题.如github不显示图片,github图床加载太慢等一系列问题 ...

最新文章

  1. 百度线下赛道报名通知!
  2. 效果提升7%、速度增加220%,OCR开源神器PaddleOCR再迎升级
  3. 美国-5大牛校--8条小牛--14好校--18很不错的大学
  4. mysql5.1编译安装centos7_CentOS7下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装
  5. 了不起的开发者 丨 有奖征文活动来啦!
  6. drf6 权限和频率控制组件
  7. Windows消息机制-PreTranslateMessage
  8. 【转】Web Reference和Service Reference的区别
  9. 统计输入的字母 c语言,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  10. delphi 获取驱动盘的卷标 号
  11. Mybatis-学习笔记(N)mybatis-generator 生成DAO、Mapper、entity
  12. Photoshop/PS中如何写维吾尔语等语言 乱码
  13. HDU-5053 the Sum of Cube
  14. 高职计算机专业英语说课ppt,大学英语说课比赛.ppt
  15. python sorted函数详解
  16. Mac苹果电脑怎么快速切换应用?
  17. EMC、EMI、EMS和ESD的定义、区别和测试项
  18. [洛谷1849] 拖拉机
  19. React之ref的高阶用法
  20. 苹果手机用stream获取wskey

热门文章

  1. linux命令(22):linux文件属性详解
  2. 无人机应用进军生物学领域
  3. 飞秋的文件读取、写入代码
  4. 人事面试100问(2)
  5. 2020笔记本性价比之王_2020十大高性价比笔记本评测
  6. 【内网安全】——Windows权限维持
  7. 【论文笔记】ObjectBox: From Centers to Boxes for Anchor-Free Object Detection
  8. 医生提醒:坐办公室一族应1小时活动5分钟
  9. Bartender2021实现安全远程标签打印,全新发布
  10. 关于java的参考文献英文_java英文参考文献