我的机器是甲骨文云春川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代码。