今天花了大量的时间来配置Rocket.Chat和Jellyfin,因此写一个博客来记录一下所遇到的一些坑,方便以后进行服务器维护。
第一个问题是Rocket.Chat的安装问题。根据官网提供的snap安装方式在Ubuntu 16.04、18.04、20.04上均能够正常安装,但是无法通过3000端口进行访问,同样也无法用Caddy进行反向代理。进行了大量尝试后,发现官方的3.x版本有这个bug,将snap的通道更换为2.x/stable再尝试安装,即可正常通过3000端口访问,同样也可以使用Caddy进行反向代理。当时发现这个解决方案是因为在2020年1月的时候,根据官网命令是可以正常安装的,然后我发现3.x版本是在2020年1月之后才进行更新的,因此很有可能2.x版本是正常的,而3.x版本还存在一定的打包问题。因此采用了降级的办法解决了这个问题。
snap install rocketchat-server --channel=2.x/stable
第二个问题就是Caddy配置的问题。Caddy是一个类似于Nginx和Apache的代理工具,比较轻量级,配置特别方便,并且可以自动获取SSL证书。Rocket.Chat中集成了Caddy服务,根据官网配置即可。但是我用集成的Caddy配置多站点代理的时候,服务怎么也起不来。(其实当时可以通过status看到报错信息的,但是一开始对Caddy不熟悉,所以并没有解决)于是我回想起去年的时候我在服务器上同时安装了两个Caddy服务,一个是Rocket.Chat集成的,另一个是独立的Caddy服务。于是我也继续采用了这个方案。但是我发现用Caddy做文件服务器代理的时候,服务起不来,一直报错。这一次我学会了看status信息,发现网上推荐的配置都有问题,关键字不符合语法规则。于是我查了一圈,发现是Caddy升级到了v2版本,修改了Caddyfile的风格和关键字,于是我根据官方文档重新编写了新的Caddyfile,终于将文件服务起来了。
http://mydomain:8090 { root * /path/to encode gzip file_server browse }
第三个问题是文件服务器配置好后,服务运行正常,但是通过浏览器访问的时候会提示403错误,权限不够。我一开始以为是Caddy需要配置权限,但是找了一圈也没发现如何配置。后来突然想到会不会是linux文件夹的权限不足,但是Caddy是通过root启动的,文件夹归属也是root用户,权限为755。只有可能是755不够,Caddy的文件服务需要写权限,于是我权限修改到777,浏览器可以正常看到文件了。
第四个问题是Rocket.Chat中用链接指向文件服务器进行文件下载的时候,无法弹出下载任务。找了一大圈最后发现是Chrome自动屏蔽https服务中的非https跳转链接,并认为是不安全链接。而我的文件服务是运行在8090端口上的。于是我将8090端口改到了443端口,成功解决了这个问题。这也得益于Caddy自动配置SSL证书,不然还挺麻烦的。
https://mydomain { root * /path/to encode gzip file_server browse }
第五个问题就是Rocket.Chat集成的Caddy在运行了几个小时后挂掉了,需要手动重启服务,但是独立的Caddy运行稳定。于是我将Rocket.Chat的443反代改到了独立Caddy上,同样的也遇到了v1升级v2的问题。proxy关键字改成了reverse_proxy,不再需要/通配,默认启用了websocket和transparent,因此需要大量修改Caddyfile的配置。但是明显v2的配置更加简洁清晰。
https://mydomain { reverse_proxy localhost:3000 }
第六个问题则是关于jellyfin的配置。这是一个自建家庭影院系统,看上去逼格挺高。根据官网说明安装即可。安装完毕以后默认通过8096端口访问。奇怪的时候我居然在安装文档上没有看到8096端口说明,我也不记得这个应该是哪个端口了(两个月前曾经安装过),然后查了一圈资料才看到是8096端口。这个端口号在jellyfin交互设置中可以修改,或者进行反代也是可以的。但是在配置jellyfin的资料库的时候,我发现目标路径无法被识别,尝试几次后,我想到很可能与Caddy的文件服务的权限问题类似,于是我将目标路径的权限也改成777后,可以正常访问了。从YouTube上下载了一段视频,放在了目标目录下,jellyfin自动更新到了资料库,特别方便。播放体验还不错,但是我的vps在海外,受到国际带宽的限制,有时候会卡顿。不过这个只是用来体验的原型,以后可以利用家用宽带和NAS组建jellyfin服务。
以上就是今天遇到了一些问题,以后再遇到就可以方便的回来查看解决了。
Yannx
2021年6月13日