【NAS玩法】自建家庭影院
最近对流媒体平台比较感兴趣,记录下搭建的过程(续)
00 原料
所需软件有如下:
- Windows10
- Jellyfin
- kodi
- kore
- ZeroTier
- openp2p
- Findroid
- TMM
- 迅雷
01 Jellyfin搭建
Jellyfin网站:Jellyfin
选择合适的版本下载:
下载之后点击程序选择目录安装即可:
这个时候桌面就会多出Jellfin Server,点击就可以启动Jellyfin服务,图标会出现在桌面右下角:
点击open Jellyfin就会自动打开网址,默认地址localhost:8096
选择首选语言,点击下一步:
接着设置用户名和密码,局域网内就可以设置简单一些,点击下一步:
这一步默认没有配置视频路径,这个可以暂时跳过:
点击下一步,设置首选元数据语言,注意国家没有China,只有全称People’s Republic of China:
接下来下一步,设置远程访问,默认即可:
选择好之后,安装就完成了,点击即可进入登录页面:
输入之前设置的密码,进入服务首页:
点击左边的控制台,点击媒体库,这里就是日后添加节目路径的位置:
接下来进行添加媒体路径,点击添加媒体库,选择内容类型:
这里如果是多集的影视剧的话,推荐选择节目,如果是电影,则选择电影。
接着点击下面的加号,选择媒体的路径。保证媒体路径下有你要的视频资源。
然后在元数据下载器选项,如果没有科学上网的方式,推荐先取消掉勾选,因为这里面都是国外的网站,如果勾选了而没有工具,后面扫描媒体的时候会很慢:
接着勾选最下面的个性选项:
都没问题之后,回到控制台,点击扫描所有媒体库,Jellyfin就会自动对路径下的所有媒体进行扫描添加:
这里简单说一下媒体路径的命名规则:
首先要保证在路径下每一个剧集都是一个单独的文件夹,在文件夹里面存放剧集的媒体资源,如果剧集有分季的话,每一季通过Season进行单独分类,如下:
都OK之后,等待Jellfin扫描完成,进入首页,就会看到剧集内容:
02 Kodi搭建
搭建并配置好Jellfin之后,接着需要安装Kodi。
官网地址:Kodi
下载到本地后,默认安装即可,安装结束之后勾选Run Kodi即可进入Kodi页面:
默认为英文,接着进行配置。
点击设置,进入Interface,在左边的菜单里选择 Skin 并把字体改成 Arial based,在Regional选项设置语言选项,下拉选择中文简体就会自动安装,一定要注意是先选择字体,不然中文字符会乱码:
接着点击小齿轮图标进入设置界面,选择系统菜单项,在左边的菜单里选择插件,然后打开未知来源选项:
接着回到进入设置界面,选择文件管理菜单项,在左边的菜单里选择添加源,然后在弹出的窗口里输入下面的地址:https://repo.jellyfin.org/releases/client/kodi
接着安装 Jellyfin 插件,点击小齿轮图标进入设置界面,选择插件菜单项,再选择从 zip 文件安装,接着选择刚才创建的 kodi jellyfin 网络源:
在弹出的窗口里选择 repository.jellyfin.kidi.zip,等待执行完成。然后返回到上一级菜单选择从库安装,从弹出的窗口里选择 Kodi jellyfin Addons,安装即可:
接着会弹出窗口配置插件,这几步一般保持默认选项即可,最后登录Jellfin的服务器,在安装Jellfin过程设置的密码,选择要添加的媒体,进行添加。
最后,等待几秒同步,回到首页,就会看到Jelyyfin的媒体内容。
后续对媒体增删改的过程,主要是通过在Jellyfin端进行,kodi可以设置每次启动自动同步,也可以选择手动的更新。
事实上流媒体功能远不止这些,还可以设置媒体的自动刮削、中文字幕插件等等。有时间再写其他的折腾记录。
03 Jellyfin主题
theme-park.dev网站提供了包含Jellyfin、Plex、Emby在内的二十余个媒体管理器的主题
在Jellfin中,只需打卡控制台→常规,在自定义CSS代码选项填入park网站主题链接,例如:
1 | @import url("https://theme-park.dev/css/base/jellyfin/<THEME>.css"); |
网速良好的情况下,几秒钟之后回到主页,你会看到一个耳目一新的主题
park.dev提供了多种主题,只需修改上方CSS代码的
04 kodi遥控器
当下载好电影电视剧之后,下一步要做的当然就是舒舒服服的躺在床上,靠着抱枕,吃着薯条,美滋滋的观看影片。
这时候一个可以遥控播放器的设备是很需要的。
如果你有无线游戏手柄,那么游戏手柄会是一个不错的方式。
有了它,你可以在床上操控kodi,无论是播放、暂停、停止,均可以通过手柄进行。
假如没有游戏手柄,那么kore将会是另一种不错的方式。
Kore: Kore is a simple and easy-to-use Kodi remote.
kore:一个可以遥控kodi播放器的移动软件
有了它,只需要连接kodi设备地址,kore就可以充当kodi的遥控器
你可以用kore操作kodi进行播放,快进,选集等等所有操作
有了遥控器,就可以舒舒服服的躺在床上,吃着薯片,享受观影时光
05 移动客户端
服务端搭建好了Jellyfin流媒体之后,那当然少不了客户端。
Jellyfin和kodi都有各自的客户端,但两个客户端使用起来并不十分顺手,尤其kodi,横屏的使用以及不是十分灵敏的触摸操作影响了一些体验。
后来,找到了Findroid,第三方原生Jellyfin app,专为播放Jellyfin媒体资源
findroid: Third-party native Jellyfin Android app
比之kodi、jellyfin的客户端,findroid更为轻量
06 远程组网
通过以上的方式,可以实现下班回家之后,无论在手机还是在平板上,我们都可以随时访问影片资源。
但如果我们在公司,或者在出差的时候,也想访问家里的影片,怎么办呢。
我的第一想法是内网穿透。
在VPS上搭建一个frp,将家里的地址穿透出来,我在外部就可以通过连接VPS地址访问内网。
但实际尝试下来发现,将媒体服务用内网穿透,有2个不足:
- 首先,得要有一个VPS
- 其次,VPS的配置不能过低,1核2G的穿透体验是糟糕的
那如果不使用VPS,还有其他方法吗。
答案肯定是有的。ZeroTier无疑是一种很好的方式。
ZeroTier 是一种开源的虚拟网络软件,它允许您在任何设备之间创建安全的私有网络,而无需任何硬件或配置。
ZeroTier
这一类 P2P VPN
是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。最常见的场景就是在公司可以用手机直接访问家里的 NAS
,而且是点对点直连,数据传输并不经由第三方服务器中转。
Zerotier
在多设备之间建立了一个 Peer to Peer VPN(P2PVPN)
连接,如:在笔记本电脑、台式机、嵌入式设备、云资源和应用。这些设备只需要通过 ZeroTier One
( ZeroTier 的客户端) 在不同设备之间建立直接连接,即使它们位于 NAT
之后。连接到虚拟 LAN
的任何计算机和设备通常通过 NAT
或路由器设备与 Internet
连接,ZeroTier One
使用 STUN
和隧道来建立 NAT
后设备之间的 VPN
直连。
简单一点说,Zerotier
就是通过 P2P
等方式实现形如交换机或路由器上 LAN
设备的内网互联
要想使用ZeroTier进行组网,我们只需要几个步骤:
访问ZeroTier官网ZeroTier Central,注册账号登录
如上图,可以看到,登录后的页面很简洁,Create A NetWork就是创建一个网络,创建后下方会显示网络的信息,左侧Your Networks显示当前的网络数量和授权节点数量
创建好网络后,进入配置界面,推荐都保持默认选项
接着在下载界面下载客户端Download
安装好客户端后,在图标右键,选择加入网络
在弹出的窗口填入网络ID,网络ID在创建网络的时候显示
此时客户端就会显示连接的网络ID,打开cmd查看ip地址,会发现多了一个以太网适配器 ZeroTier One
在另一台电脑中重复安装客户端的操作及加入网络,这时需要做一个授权操作,在网站上网络选项中的Members选项勾选加入的客户端,完成授权,否则两台电脑之间无法联通
授权后,等待五分钟左右,两台电脑间就可以互相通信,进行局域网操作
此时,两台设备之间就相当于加入了同一个局域网,我们只需要浏览器访问Jellyfin所在设备的IP地址,就可以远程访问到媒体服务
同时,ZeroTier安装时会自动加入启动计划,当设备开机联网之后,ZeroTier会自动启动。
当然,ZeroTier还可以实现其他多种效果,比如远程访问3389,再配和SyncTrayzor进行文件自动备份等等。
总之,如果没有足够的经费购买VPS,那么ZeroTier会是一个不错的方案。
07 移动设备组网
ZeroTier作为远程组网的设备无疑是非常好用的,但遗憾的是,ZeroTier目前还没有android移动端,所以上面的Findroid看起来只能在家里使用。
那如何使移动设备也可以远程访问媒体服务呢?
openp2p会是一个很好的解决方案。
OpenP2P是一个开源、免费、轻量级的P2P共享网络。你的设备将组成一个私有P2P网络,里面的设备可以直接访问其它成员,或者通过其它成员转发数据间接访问。 如果私有网络无法完成通信,将会到公有P2P网络寻找共享节点协助通信。 相比BT网络用来共享文件,OpenP2P网络用来共享带宽。
其实openp2p和ZeroTier一样,都是通过P2P网络进行中转共享,但openp2p具有andorid移动端。
根据官方的使用说明:openp2p快速入门,只需要几分钟即可将手机与其他设备连接起来
首先,在https://console.openp2p.cn/注册账号,不需要任何手机号、邮箱验证
接着使用注册的账号登录,在本地和远程设备都安装对应的客户端
当客户端运行之后,控制台就会显示设备,绿色代表设备在线,红色代表离线
安卓端需要填入账号Token,在控制台的我的界面可以找到
接着,在节点点击P2P应用,进行新建
本地监听端口,就是手机的监听端口,最好和下方的Jellyfin区分开
指定中转节点,请选择稳定在线且容易建立P2P连接的成员(比如云主机),如果拥有公网IP请务必放行config.json里的TCPPort端口
远程设备,就是Jellyfin所在的设备
远程服务地址,localhost本地地址
远程服务端口,就是Jellyfin的端口,默认8096
点击保存后,会自动开始连接
当图标为绿色时,代表连接成功。
此时,我们通过Findroid增加服务器,地址是控制台的手机内网地址,格式为:http://192.168.1.16:18088
如果没有问题,则Findroid就会提示登录,使用Jellyfin设置的账号登录即可
最后的效果,可以通过其他WIFI或移动网络访问媒体服务,连接速度取决于当前设备网络的速度
无疑,如果经常使用手机平板在远程观看媒体服务,openp2p是一个极好的方案。
但是,openp2p做为一个完全免费开源的项目,控制台的注册登录是没有短信码、图片码等任何安全验证的,所以对控制台来说,即使采用了https,也会存在一定的安全风险:当账户名或密码比较薄弱时,可以通过手段获取到账号信息
所以,在使用openp2p时:
- 注册账号密码一定要不容易猜测,例如admin、test、123456这种非常容易被猜到的就不要使用了,当然,控制台也设置了不少于八位
- 不要在非常机密、非常隐私的设备上进行p2p转发,例如涉密计算机,存储关键个人信息的设备等。推荐使用NAS这种具有专一用途,同时又不会存储过于敏感数据的设备
- 在进行P2P应用时,同2,推荐只转发Jellyfin这类的无关键数据的端口,尽量避免直接转发3389、22可登录设备的端口,如果一定需要,参考1设置一个不容易被猜解到的账号
08 影视刮削
下载好了影视资源之后,还需要对资源进行刮削。
TMM,tinyMediaManager,专用于影视剧集刮削服务。
有了它,可以自动下载影片的海报图片,演员信息,剧集概括等等,刮削好的剧集也会在Jellyfin页面有着更好看的展示外观。
对于电视剧,TMM自动刮削之后,会显示每一集的概括信息
这样,在使用Jellyfin更新之后,会拥有更好看的展示
以上,就是我这个假NAS使用者的些许折腾记录。