自建影音串流平台 Take Two

我在上一篇文章写到自己是怎么自建smb服务器来串流自己的影音。 当时因为客户端软件的限制,还有一些问题没有被解决:

这几天我找到了一个兼容性更强的解决方案,就是用jellyfin服务器, 好处有三:

#FOSS #Software #Privacy #Networking #Streaming #linux

唯一的坏处是无法随时串流Hi-Res文件,目前在官方客户端上还不能找到不transcode的设置(更新:可以用Gelli)。不过这个和samba可以共存,所以想听无损的时候还是可以用vlc之类的。

安装

参照官网文档即可,这一步很简单。arch linux arm可以直接从aur安装。

公网访问

这一步本来可以很简单,但是要首先感谢中国工信部封禁80 / 443端口,导致客户端只能用非标准端口,同时也导致无法使用acme.sh等软件注册ssl证书。

公网访问变难了但不代表不行,在实施行动之前我想到了两种解决方案:

方案 优点 缺点
ssh Tunnel或者wireguard之类的vpn软件连接媒体服务器 一行代码就能搞定,不会有任何报错 ssh tunnel或者wireguard要一直后台运行,对移动设备不友好
自己颁发签证 不需要任何vpn软件,真正的公网访问 安卓客户端配置较麻烦(但可行)

权衡利弊之后还是选了自己发签证的方法,因为虽然配置麻烦了点,但是后续几乎不用维护。

发签证

网上一堆教程,我不再造轮子了。

用这个就行,要记得顺带生成CA签证和pkcs12 bundle,因为后面会用到。

https://www.baeldung.com/openssl-self-signed-cert

记得 chown jellyfin:jellyfin * 来设置权限。

设置签证

在lan用http连上媒体服务器,去networking开https,然后选pkcs12证书,点save,然后

systemctl restart jellyfin

就可以了。现在可以尝试在lan用https端口连接jellyfin

开端口

记得在路由器和服务器上开端口,这一步我经常搞忘,每次都要开netcat调试。。

到现在,已经可以用浏览器访问ip/域名了,浏览器会提示那个服务器不能被验证,但签证都是我自己发的,对自己还是要有自信,并且加密是没有问题的,所以选择忽略警告。

安卓机的客户端设置

下jellyfin安卓客户端,安装CA证书,输url就可以连接了。

但是!!!有一个很坑的点,要确定你用的是最新版原生android webview,不要用bromite之类的替代品。这个bug我调试了一上午,最后开logcat一看发现是bromite的问题。

到现在就解决所有问题了,最后一步就是连上去享受。

放一张截图: screenshot



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

We can't live, work or learn in freedom unless the software we use is free.

Arguing that you don't care about the right to privacy because you have nothing to hide is no different from saying you don't care about free speech because you have nothing to say. – Edward Snowden