我的机器是甲骨文云春川4H24G,Ubuntu 22.04.1 LTS,arm架构

安装数据库容器

因为Chevereto需要数据库支持,因此必须安装数据库,我采用的是mariadb数据库,命令如下:

# 创建并且运行容器  
docker run \  
    --name mariadb \  
    -p 1234:3306 \  
    -e MYSQL_ROOT_PASSWORD=123456 \  
    -d \  
    --restart=always \  
    --privileged=true \  
    -v /home/docker/myriadb-10.0/conf/my.cnf:/etc/mysql/conf.d/my.cnf \  
    -v /home/docker/myriadb-10.0/data/:/var/lib/mysql \  
    mariadb  
  
# 创建数据库  
create database chevereto DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

第二句,我创建了一个名为chevereto的数据库,这个名字后面会用到。

安装Chevereto容器

因为我使用的甲骨文云arm的机器,官方版本无法使用,因此安装的是 linuxserver/chevereto 的最新镜像。

拉取镜像

docker pull linuxserver/chevereto

输出如下:

创建外部挂载目录

这个目录可以自行设置.

mkdir -p /home/docker/chevereto/config  
mkdir -p /home/docker/chevereto/data

启动容器

docker run -d \  
    --restart=always \  
    --name=chevereto \  
    --link mariadb:db \  
    -e TZ=Asia/Shanghai \  
    -p 5080:80 \  
    -p 5443:443 \  
    -v /home/docker/chevereto/config:/config \  
    -v /home/docker/chevereto/data:/data \  
    -v /etc/localtime:/etc/localtime:ro \  
    linuxserver/chevereto

这里的注意事项就是要记住--link mariadb:db这个变量的值,它代表链接的数据库名称是db

接下来就可以直接初始化账号了,直接用IP地址:端口访问页面,结合之前的Cloudflare Tunnels 教程,可以直接实现域名访问。

以上两个重要信息就是初始化账号时使用:

Database host就填写我们刚刚记下的db
Database name就填写我们刚刚记下的chevereto

剩余参数按自己喜好设置。

配置Chevereto容器

因为Chevereto容器默认的图片上传下载以及内存占用太小了,我的甲骨文春川主机有4核24G内存200G存储,加上图床又是我一个人使用,完全不需要这么节省,因此需要修改配置。

cd /home/docker/chevereto/config/php
vim php-local.ini

进入编辑模式之后就可以修改默认参数,配置文件里面没有的变量也可以自行添加,我修改的数值为:

post_max_size = 200M  

upload_max_filesize = 200M  

max_file_uploads = 100

配置路由

在网页端,我们是可以使用自己的账号正常上传下载使用这个图床的,但是如果要使用Obsidian连接图床,使用API上传,那就有问题。

因为Chevereto默认API上传归类为访客上传,上传的图片不会出现在我们的账号里。为了保证我们能更好管理图片,我们需要修改路由:

获取用户名和相册ID

首先通过IP地址:端口进入自己的Chevereto图床,进入管理界面获得用户名相册ID

头像旁边的就是用户名

进入相册详情页就可以查看相册ID

修改路由

首先把容器中的路由配置文件复制出来

# 从容器中复制出来配置文件  
docker cp 1a4z57a38068:/app/chevereto/app/routes/route.api.php /home/docker/chevereto/config/route.api.php

这句代码的作用是,把容器里面的路由文件复制到宿主机,注意把1a4z57a38068修改为自己实际的容器ID

修改复制出来的路由配置文件:

vim /home/docker/chevereto/config/route.api.php

修改里面的内容

# 修改前为  
# $uploaded_id = CHV\Image::uploadToWebsite($source);  
  
# 将其修改为
$uploaded_id = CHV\Image::uploadToWebsite($source, '你的账户名', array('album_id'=>你的相册ID));

接下来保存退出文件,将当前的Chevereto容器删除,用下面的命令重新创建容器:

docker run -d \  
    --restart=always \  
    --name=chevereto \  
    --link mariadb:db \  
    -e TZ=Asia/Shanghai \  
    -p 5080:80 \  
    -p 5443:443 \  
    -v /home/docker/chevereto/config:/config \  
    -v /home/docker/chevereto/data:/data \  
    -v /etc/localtime:/etc/localtime:ro \  
    -v /home/docker/chevereto/config/route.api.php:/app/chevereto/app/routes/route.api.php \  
    linuxserver/chevereto

可以看到,这里我们有一句-v /home/keen/docker/chevereto/config/route.api.php:/app/chevereto/app/routes/route.api.php命令,用来将我们宿主机修改设置后的路由配置文件映射到容器里。

Obsidian连接Chevereto图床

这里需要用到PicGo这个程序和Obsidian第三方插件Image auto upload Plugin

安装并配置PicGo

这里我们使用的是PicGo,可以访问外网去 这个地址 下载,不能访问外网取 这个地址 下载。

下载安装后打开程序,在插件设置标签中搜索chevereto

安装时会弹出说需要nodejs支持,直接在弹出页面下载安装即可,一定要保证PicGo安装路径和nodejs安装路径在同一个文件夹内,否则还是会安装不成功。

接着打开chevereto插件开始配置:

只有Url和Key需要填写

Url是http://你的IP:端口/api/1/upload

Key就是我们在图床设置里面的API,先进入Dashboard:

在Dashboard左上角点击Settings:

点击API

把Url和Key都填上后我们就配置好了PicGo:

我是将其设置成为默认图床。

安装并配置Obsidian第三方插件Image auto upload Plugin

打开第三方插件市场,搜索Image auto upload Plugin

安装完成后启用Image auto upload Plugin

这样就完全弄好了,PicGO可以直接将你在Obsidian文件里粘贴的图片自动上传到我们前面设置好的相册,并将你粘贴的图片转化为包含图床链接的MarkDown代码。