之前一直被群晖科学浏览的问题所困扰,也因此不能升级 Chevereto 一个红色⚠️看着很难受,今天终于在网上找到了一个暂且可行的代理方案;配置是成功了但是还是未能完成升级,最后只好手动进行了一次升级结果最后还是翻车了……不过在此过程中还是学到了很多,因此记录如下。

Chevereto 升级之痛

搭建 Chevereto 图床 & Typora 上传指南 中我介绍了自己折腾群晖 Chevereto 的过程,顺利上车,当时的版本好像是 1.2.8,使用一段时间后提示需要更新,最新版本是 1.2.0。然而,大概是由于网络的原因,始终无法更新成功,每次打开 Chevereto 看到鲜红的提示总是很难受。

因此,在多次尝试未果之后,今天突然找到了为 Synology 配置代理的方法,然而……

Synology 配置代理

今天突然看到 群晖nas和虚拟机共享翻墙网络教程 这个视频,突然发现在 Synology 中可以配置整体的代理,只需要连接本地其他机器上的代理程序即可。事实上,我在 【proxy】命令行 & 虚拟机代理设置方案汇总 这篇文章中即有提到,但居然一直没想到。

配置很简单,在 SSH 环境下也成功 curl google.com,然而,当我点开 Chevereto 之后才发现并没有那么简单……试了好多次仍然无法更新成功……

问题 & 解决方式

【问题】上述的代理配置是没问题的,然而也有一个副作用——群晖提供的那个网址 ip.synology.me 会识别为代理的地址(可以通过 nslookup id.synology.me 查看解析结果,要查看本机地址可以用 curl myip.ipip.net )。

一个很笨拙的解决方案是手动在本地计算机中配置 hosts:macOS 下 sudo vim /etc/hosts 即可,在最后面添加你的公网 IP 地址和对应的网址即可。

然而,这并无法解决 synology.me 地址解析错误的问题,因此只是权宜之计。 然而,在某些场景下,可以临时采用这一方案访问外网——例如在下载 Docker Image 的时候。 更好的策略,可能是直接为路由器配置代理?不过目前在学校环境下不方便操作。 考虑到其他的一些网络服务的需要,我会在平时将这一网络代理关闭,仅在需要时打开使用。

手动更新 Chevereto

于是折腾了半天又回到起点,心有不甘于是想到手动去更新的方法,之前一直害怕哪里出错没有尝试过,原本以为一次成功结果还是出了 BUG……

事实上 Chevereto 的文档中有手动更新的方法 更新指南,只不过只针对商业版,并没有免费的 1.几的版本;像我这种小透明自然用的是免费版,只好自己折腾……

接下来就是去比较下载到的安装文件和你的环境文件夹

  • 经过细致比较,我发现所有上传的文件会基于时间分类存放在 images 目录下,而原本的 images 文件夹为空;
  • 比较明显的配置文件,我找到的一个是 app/settings.php ,可以看到在原始目录下并没有这个文件;
  • 其他的文件夹中内容大同小异,我尝试的时候没有用到;

于是,最终我采取的方案是,将 app 文件夹下的内容复制替换过去,然后把根目录下的那些零散文件也替换过去,而其他文件夹未动。

接下来重新进入 Chevereto 网址,提示需要重新安装,轻轻点一下之后一切正常,我还庆幸自己的机智……

然而,表面的正常之下,我发现上传和配置等功能完全正常,但是无法查看图片,报 PHP 500 错误,然而我上网搜了下这个错误代码几乎没什么信息量……

尝试了修改文件所有者和权限,然而并没有任何作用……大概是因为不能直接替换文件,因为依赖到外部的 PHP 和 MariaBD?留下了不学无术的泪水……

MariaDB 10 远程访问

为了测试数据库能够使用,我还在 Mac 上下载了 Navicat for MySQL…… 然后发现 MariaDB 5 好像比较老,又去下载了 MariaDB 10……

默认情况下,Maria 是禁止外网访问的,参考了 群晖MariaDB添加远程访问功能 修改配置,摘录如下

1
2
3
4
5
6
7
8
# ssh到Synology
sudo -i # 提权
cd /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin #访问目录
./mysql -u root -p # 这里有个坑,root密码和MariaDB密码是不同的,需要在套件中心各自设置
use mysql # 选择数据库
update user set host = '192.168.1.%' where user = 'root'; #可以直接使用%,也可以用192.168.1.%来缩小范围
select host, user from user; # 确认,也可以使用select User,host from mysql.user;
FLUSH PRIVILEGES; # 刷新权限

另外,允许远程访问 Synology NAS 上的 MariaDB 一文介绍地比较详细,可参看。

尝试 Docker 安装 Chevereto

参考 群晖Docker安装chevereto图床

完全按照上面来的,然而进入链接之后报错

1
Aw, snap! Internal Server Error [debug @ `error_log`] - https://v3-docs.chevereto.com/setup/debug.html

docker 文件夹下的 Chevereto 文件夹所有人和权限设置确认过是 admin 和 777,数据库也确认可以正常链接,但是无法解决该问题。最终查询无果后放弃……

重新安装 Chevereto

于是最后的最后,我又重新安装了一次 Chevereto……这个过程就非常简单了,随便在网上找一篇如 群晖搭建 chevereto 图床 即可,和之前那一个不同之处在于,这次用了更新的 MariaDB 10。

其他相关的配置,参考之前那一篇 【NAS】搭建 Chevereto 图床 & Typora 上传指南