群晖Docker自建图床Chevereto
用的笔记软件Obsidian每次插入图片都会是保存到本地,虽然可以通过插件让图片根据笔记标题重命名,但感觉还是有点不好管理。这样还有个好处,就是笔记里书写完后可以直接复制内容发布到自己的个人博客等,不用再去考虑文章里面配图的问题。于是刚开始换了smms免费图床,速度虽然不稳定,但胜在白嫖免费,免费的存储空间有5G,稍微有点小。
更担心的是哪天突然不能用了,那所有的图片可就全没有了,出于这种情况考虑,觉得还是自己弄个备份图床更好点。家里有个nas,反正是自用,也就没那么多考虑,直接用群晖docker套件搭建。
环境搭建
会用到下面两个套件,在群晖套件里搜索一下就能找到,查找到后安装好这两个套件就可以。
MariaDB 10
phpMyAdim
###phpMyAdim添加数据库信息
进入管理页面后点击账户选项,然后点击新增用户账户。
填写数据库用户名和密码,勾上创建与用户同名数据库并授予所有权限,检查下信息后点击执行,这里记下新增数据库信息的用户名和密码,下面会用到。
MariaDB 10设置
这个要设置的内容不多,安装好套件后打开,把 “启用TCP/IP连接” 选项勾选上,记一下端口号,后面也会用到。
搭建Chevereto
先在File Station里面docker文件夹下面创建一个chevereto文件夹,再在这个文件夹下面新建config、data两个文件夹,用来映射chevereto容器的配置信息和图片文件夹,方便管理。
准备工作就差不多了,接着就可以去docker注册表里搜索chevereto映像文件下载,然后开始搭建图床了。我这里选择的是linuxserver/chevereto版本,如果你需要中文那选择1.4.1或者1.4.2,后面的新版本已经没有中文。
映像文件下载完成后,去映像选项双击下载的映像文件安装chevereto,弹出创建容器框后点击高级设置。
存储空间设置
选择存储空间选项,点击添加文件夹,选择前面docker文件夹下面chevereto里面新建的文件夹,按下图配置输入。
端口设置
将容器的443和80端口映射到本地端口
然后点击应用,创建容器框里点击下一步 -》应用,如果配置没问题的话,在docker -> chevereto文件夹下面的config、data里面分别都有内容。
连接数据库
在浏览地址栏输入 群晖ip + 端口号,比如我这里用的是前面端口设置的50080端口。会打开页面让连接到数据库,这就需要用到前面创建的数据库了。
Database host:数据库地址
Database name:数据库名
Database user:数据库用户名
Database user password:数据库用户密码
开始安装
设置图床的管理员账号信息
Admin username:管理员用户名
Admin email:管理员邮箱
Admin password:管理员密码
From email address和Incoming email address随意填写邮箱
Website mode:模式
因为是自用备份,所以我这里选择的是个人,都确认没问题后点击安装,安装会需要往数据库里写入内容,稍微等一下就可以。
安装完成后点击里面的链接跳转到登陆页面,输入安装时设置的管理员的用户名或者邮箱和密码登录就可以
登录进入页面后会发现是英文页面,点击右上角的用户名,选择settings设置,下面的语言选择简体中文,然后点击保存即可。
到这里就差不多了,后面就是一些设置了,可以点击用户选择仪表盘设置图床的一些设置
进一步设置图床
到现在已经可以上传使用了,不过会发现文件上传有限制,存储空间容量也很小,只有256MB,完全不够用,都已经nas上自建了那肯定需要更大容量才舒服。
解除图片上传2M大小限制和存储容量限制
更改docker -》chevereto -》config -》php文件夹里的php-local.ini配置文件
1 | date.timezone = |
upload_max_filesize:最大的文件上传
post_max_size:最大的执行大小
max_execution_time:最大的执行时间
memory_limit:图床存储容量大小
php-local.ini配置文件修改完后还需要去仪表盘设置 -》图片上传,将最大上传文件大小更改为50,然后点击保存修改, 这样就完成图片大小上传限制了,你也可以随时按需求更改。
更改API默认游客上传
如果有API上传需求的话会发现上传的图片都是游客上传(比如搭配Picgo使用),没法上传到指定用户自己创建的相册里,不方便管理图片。
打开运行中的图床容器,选择终端机,点击新增,然后输入下面的指令,在容器文件系统中查找名为 route.api.php
的文件,并列出找到的文件路径。
1 | find / -name "route.api.php" |
输入指令后已经知道文件路径了,现在需要将route.api.php
文件复制到routes/overrides文件夹下面,输入下面指令。
1 | cp $work/app/chevereto/app/routes/route.api.php $work/app/chevereto/app/routes/overrides |
然后检查一下看是否成功复制,输入下面指令,如果路径下文件存在会返回文件路径,否则报错。
1 | ls $work/app/chevereto/app/routes/overrides/route.api.php |
检查文件复制成功后,现在需要修改route.api.php
文件了。输入:
1 | vi $work/app/chevereto/app/routes/overrides/route.api.php |
打开文件以后按需要按下 i
键来切换到插入模式,然后你就可以开始输入内容了,在下图位置插入。
1 | $user = $_REQUEST['user']; $album = $_REQUEST['album']; |
1 | $uploaded_id = CHV\Image::uploadToWebsite($source, $user, array('album_id'=>$album)); |
编辑完成后,按下 Esc
键返回命令模式,然后输入 :wq
并按下回车键来保存并退出文件。然后重启图床容器。
PicGo
安装好web-uploader插件,按下面设置
API地址:http://群晖ip + 端口号/api/1/upload
POST参数名:source
JSON路径:image.url
自定义Body:{“key”:”自己图床的api”, “user”:”用户名”, “album”:”相册id”}