Chevereto是什么?

Chevereto简介

Chevereto 是一个自托管的多用户、功能齐全的图像托管解决方案,在全球有着广泛的使用。说人话:这是一个图床程序。Chevereto 的核心提供了一个图像托管服务,您可以配置它以在不同的上下文中使用它。它有很多应用,包括:

  • 图片托管/分享服务
  • 展示画廊
  • 资产图像存储
  • 基于图像的共享社区

Chevereto 的重点在于它可以处理非常大的图像集合,并针对网络使用进行了优化。Chevereto 旨在提供大规模的图像托管和共享。

Chevereto版本比较

Chevereto有收费版和免费版提供。收费版的价格可在官方网站找到。免费版的Chevereto在这里:Chevereto-Free。收费版与免费版的区别你可以在Chevereto-Free的README.md中找到。因为后续要对接Backblaze B2存储,所以本文教程仅针对Chevereto收费版部署。如果你正在考虑Chevereto-Free的部署,你或许能在别处找到相关的信息。

Chevereto官方文档

  • V3版本基本指南(英文):https://v3-docs.chevereto.com/setup/system/requirements.html
  • V3版本中文指南(建议谨慎参考,更新比官方文档滞后很多):https://ch.cndrew.cn/cn/Setup/
  • Chevereto官方社区:https://chevereto.com/community/

额外的说明:本文参考的对象为官方文档,随着版本的更新,一些博客文章变得不再有效,因此并不具备参考价值。当然,这一现象这也包括一段时间过后的本文。虽然可能变得不再具有时效性,但是也能给你一定的启发,这是本文存在的价值。

开始部署Chevereto

所需的安装环境

  • PHP7.4
  • MySQL 5.6
  • 宝塔面板
  • Nginx 1.18.0

下载Chevereto程序

购买了Chevereto的许可证后,你应该会收到这样一封邮件
邮件信息

此时前往邮件中附加的地址:https://chevereto.com/panel,即可下载Chevereto程序
下载地址

建立一个站点

使用宝塔面板建立一个站点,并做好域名解析。本文以http://testimage.kanochan.net示例。
添加域名解析
建立站点
注意必须使用PHP7.4,其他低于7.4版本的PHP会发生错误。
删除站点默认文件
上传Chevereto程序后解压到站点根目录

安装Chevereto

  • 下载官方安装文件:installer.php
  • 将文件放入站点根目录
    installer.php
  • 配置Nginx伪静态
    将下列代码加入到宝塔面板的伪静态设置中。注意这个步骤很重要,如果缺失这一步,后续过程将无法进行。
# Pretty URLs
location / {
        try_files $uri $uri/ /index.php?$query_string;
}

设置伪静态

  • 访问installer.php配置Chevereto
    访问网址:http://testimage.kanochan.net/install,你将看到如下页面。
    配置数据库
    配置数据库-中文页面
    填入数据库信息
    配置管理员账号
    安装完成
    管理员面板
    图床首页

至此,Chevereto的部署已经全部完成,如果你需要进一步配置Chevereto,例如修改语言、配置存储池等,请参考前述的帮助文档。

使用Backblaze B2存储

Backblaze B2是啥

等待更新...

建立存储池

等待更新...

Backblaze B2接入Chevereto

等待更新...

使用Cloudflare CDN加速图床服务

配置缓存规则

等待更新...

美化图片URL

等待更新...

图片防盗链(针对自用图床)

等待更新...

反向代理Cloudflare CDN

Cloudflare在国内的连接效果实在是太差了,正好服务器线路是CN2 GIA,速度不错,流量也近乎无限,可以用来代理Cloudflare CDN,加快图片打开速度。因为Backblaze B2到Cloudflare CDN的流量是不计费用的,所以我们需要反代的是Cloudflare CDN,而不是Backblaze B2。

新建反向代理站点

选择静态页面即可。

新建站点

配置SSL

因为Cloudflare CDN通过https传输,作为反向代理站点,同样需要配置SSL。过程略。

配置反向代理

缓存开启与否,看你自己需要了。通过测试发现,服务器本地到Cloudflare CDN的延迟近乎为零,带宽更不用说了。为了节省服务器存储,我没有配置缓存。当需要访问图片时,实时从CDN抓取就好了。

反向代理

配置反向代理站点的防盗链

应该要注意一点的是,宝塔面板的反向代理仅提供了有限的可视化配置功能,更高级的配置需要从配置文件修改。另外,主站点的防盗链并不适用于反向代理,言下之意,需要单独配置反向代理的防盗链。
反向代理配置文件

打开反向代理的配置文件,将防盗链配置加入反向代理配置中,如果你不知道如何插入防盗链配置,可将下列代码直接覆盖原有的反向代理配置,注意根据实际情况更改你的域名,另外,下面的代码没有开启缓存,如果你有需求,请自行更改。

#PROXY-START/

location ^~ /
{
    location ~ .*\.(jpg|jpeg|gif|png|js|css)$
    {
        expires      30d;
        access_log /dev/null;
        valid_referers 防盗链许可域名(多个域名使用空格分开);
        if ($invalid_referer){
           return 404;

        }
        proxy_pass 反向代理的域名(带协议,如http://test.test);
    }

    proxy_pass 反向代理的域名(带协议,如http://test.test);
    proxy_set_header Host image.kanochan.net;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_ssl_server_name on;#这里的配置是解决反向代理502错误的问题。
    proxy_ssl_name 反向代理的域名的(不带协议);#这里的配置是解决反向代理502错误的问题。
    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache


    set $static_filep08tIsnO 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_filep08tIsnO 1;
        expires 12h;
        }
    if ( $static_filep08tIsnO = 0 )
    {
    add_header Cache-Control no-cache;
    }
}

#PROXY-END/

配置示例

修改Chevereto的图片url

这很重要,如果不修改,访问图片仍然是直连Cloudflare CDN。
后台管理-设置-外部存储-编辑存储-url

修改url