你可能不需要一个 NAS?从零开始搭建自托管的影音服务器

2024-11-28 16:47:07 53点赞 437收藏 33评论

相信在你的日常生活中,电影、电视剧、动画等等已经成为你不可或缺的娱乐活动。你现在可能会选择打开某一个流媒体服务(Bilibili、爱奇艺、腾讯视频、网飞等等),但是你可能面临着平台没有你想看的那一部电影、电视剧、动画,也可能是你追求更高质量的影片,或者你觉得这些平台或者应用过于臃肿,铺天盖地的广告等等没法给你一个纯净的观看体验。

那么, 我推荐你搭建一个专属于你自己的影音服务器 吧!

影音服务器 是一种专门用于存储、管理和播放视频内容的软件系统。你可以将自己的影音内容集中存储在某处,然后通过搭建一个影音服务器,将这些影片统一管理,并且允许你在各种设备上访问和播放这些影片。

声明:本文仅讨论不同的影音服务器部署方案, 不讨论具体的影视资源应该如何获取 ,我鼓励 使用正版资源

Jellyfin 海报墙Jellyfin 海报墙

在传统的认知中,影音服务器往往和 NAS 绑定。然而,购买一个 NAS 服务器和一堆硬盘,需要花费几千元,又潜在地需要花费大量时间精力来部署和维护。得益于现在各种方便的云服务,实际上部署自己专属的媒体服务器,操作并不麻烦,效果也不差,成本也不高。

本文会首先讨论影响影音服务器部署的几个关键要素,帮助你挑选更适合自己需求的方案。

当然,如果你懒得研究各种乱七八糟的方案,你也可以直接 跳转到文章最后的方案 4 ,抄我目前在用的、成本很低的、用的最舒服的一套方案。

影音服务器部署的关键要素

影音服务器的运行方式,如下图所示,有 5 个关键要素: 影音资源存储 影音服务器 服务器访问存储的方式 播放客户端 网络访问影音服务器 的方式。

影音服务器的运行方式影音服务器的运行方式

影音资源存储 :你的视频文件存储在什么地方。

例如,你自建的 NAS 服务器里、直接存在本地电脑里、存在某个网盘里。

影音服务器 :你使用了什么软件系统作为影音服务器。

这里你可以选择使用 Jellyfin Emby Plex Kodi 等专门的媒体服务器系统,这类系统往往功能强大,能够管理视频资源,刮削视频资源的元数据,生成海报墙(如前文图示),提供相应的播放器客户端,服务端视频解码,保存观看记录,多用户管理等等各种丰富的功能。

Jellyfin Emby Plex Kodi 这几个专门的媒体服务器系统软件中,我推荐的是 Jellyfin ,我用了它一年多的时间,它是 Emby 的开源版本。早期, Emby 也是开源的,后面转向了闭源的收费软件, Jellyfin 是原本 Emby 开源仓库 fork 下来继续维护的版本。 Jellyfin 整体使用下来感觉 UI 比较清爽,符合直觉,对着点一点就能明白如何操作。 Plex 下载过,但是安装完根本打不开,完全部署不起来,它本身也是收费软件,所以也 pass。 Kodi 是老牌的经典媒体服务器软件,为整个社区生态发展做出了很多贡献,但是用下来感觉像是针对电视等产品形态设计使用的,不过功能看起来很强大,有很多可以配的东西。因此,综合下来,我觉得 Jellyfin 是影音服务器软件不错的一个选择。

除此以外,你也不一定需要选择一个专门的影音服务器系统软件,来管理视频资源。你可以直接搭建一个自托管的云盘服务,或者已经使用了某个云盘作为资源存储,并且这个云盘提供了某些开放能力供用户访问视频资源。目前,比较流行的方式是暴露 WebDAV 形式的接口,供客户端访问使用;也有某些云盘提供商给了特定的 SDK,供客户端访问使用。然后,使用特定播放客户端(Infuse / VidHub 等),读取服务器上的资源,以此在客户端上实现 Jellyfin 等影音服务器提供的能力。

具体来说,自托管网盘,只推荐目前比较流行的 AList ,它提供了一个比较易用的 Web UI,支持挂载几十种网盘,并且提供了 WebDAV 接口供客户端访问。提供 WebDAV 开放能力的云盘,推荐两个,一个是 阿里云盘 ,一个是 PikPak 。其中, 阿里云盘 的价格大概 18 每月,给 8 TB 空间,不限速,但是目前似乎因为给大家薅了好几年了,疑似有开始噶韭菜的嫌疑,但反正我目前用的没有任何问题; PikPak ,在打折时期大概 200 一年,平常比较贵,疑似是原迅雷的团队出海搞的产品,主要卖点其实是下 torrent + 网盘,同样我用下来没有感觉有任何问题。

资源访问 :你的影音服务器如何从资源存储中读取视频,是连接两者的桥梁,往往根据服务器和存储所处的位置,选择对应的访问方式。

例如,可能有几种组合方式:

  • 你有公网的云服务器,视频存在服务器本地,服务器启动 Jellyfin:于是 Jellyfin 就是简单的通过读取本地目录,实现资源访问。

  • 你有公网的云服务器,视频存在某个云盘中,服务器启动 Jellyfin:由于Jellyfin 只支持读取本地目录,因此你需要将这个云盘,通过 AList / rclone 等软件,将网络目录挂载成「真实」的本地目录(下文介绍)。

  • 你的视频存在本地电脑,在本地启动 Jellyfin:同上,Jellyfin 读取本地目录。

  • 你的视频存在某个网盘中,在本地启动 Jellyfin:同上,你需要将网盘挂载到本地,在 Windows 中,你可以使用 Windows 原生的 WebDAV 功能、rclone、Rai Drive 来实现本地目录的挂载。

  • 你的视频存在 NAS 里,在公网的云服务器上启动 Jellyfin:那么你可能需要先本地起一个 WebDAV 或者其它什么服务器,内网穿透到公网或者你直接有公网 IP,然后在把暴露在公网的 WebDAV 挂载的云服务器本地,供 Jellyfin 使用。

  • 你的视频存在阿里云盘里,你直接通过阿里云盘的开放能力连接播放器使用:那么资源访问由阿里云内部掌控,与我们无关。

  • ……

你可以发现,根据你的视频存储位置不同、运行影音服务器和播放器客户端不同,资源访问方式也是千奇百怪,在实现上都是理论可行的。但是,我们需要强调的是,整个从用户到访问视频资源的完整链路,拖得越长,例如你要把 NAS 中的视频给公网云服务器使用,就经过 3 层软件,因此,整个访问的稳定性、速度等体验都可能会打折扣。正如短板效应,中间任何一个环节有差错,整个观看链路就有问题。对于长链路的部署方案,你可能需要实际尝试,慎重选择,但是本着折腾着玩的精神,后文其实也演示了这样的一种方案。

网络访问 :你的播放客户端如何访问到你的影音服务器。

如果你只在内网使用,即只在自己家里用,那么你几乎不需要考虑这个问题,你只需要保证服务器和你的电脑、手机等客户端,在同一个 Wi-Fi 下就行了(或者服务器在公网)。

如果你需要公网访问,有 2 种可能:

  • 你的影音服务器跑在你的 NAS 上:那么你需要有一个公网 IP 或者使用内网穿透,来将影音服务器暴露在公网。这个方案可能需要注意的是,你的网络上传带宽怎么样,内网穿透需要有云服务器或者购买内网穿透服务或者薅 Cloudflare 的羊毛,这些会无形中增加你的部署成本。

  • 你的影音服务器跑在云服务上:那么其本身就是在公网上的,有 IP 或者域名就能公网访问。

播放客户端 :你如何点播影音服务器上的视频。

如果你使用 Jellyfin 等某种影音服务器软件,一般它们都会提供 Web UI 或者相应的应用,来访问服务器上视频。

如果你在影音服务器部署时,没有使用的专门的软件,而是采用暴露 WebDAV 接口等形式,那么你就需要挑选一款合适的播放客户端:

  • 对于苹果用户,目前最流行的是 Infuse ,以及国人开发的 VidHub 正在追赶 Infuse ,也达到了相当高的完成度。

  • 由于我不是安卓用户,也没有安卓设备,没有实际使用过,只列举一个 Infuse 的可能替代品, AfuseKt ;另外,由网易开发的 Fimly,还处于非常早期的状态,不知道有没有安卓的版本。

  • PC 端还有一个方案是使用 弹弹 Play ,它是一个有弹幕的播放器,放动画的时候能够从各个平台获取弹幕显示。它支持与 Jellyfin 类似的读取本地目录的方式,得到一个媒体库。如果使用此方案,需要使用 rclone / Rai Drive 等将 WebDAV 挂载到本地目录。

  • 除此以外,还有部分返璞归真的方案,这些方案真的只有单纯的文件目录功能,没有上述软件中的海报墙生成等等高级功能,例如:

    • 你的媒体服务器使用了 AList 云盘的话,可以直接在它提供的 Web UI 里播放,也可以结合 Pot Player 等本地播放器使用。

    • 对于苹果用户,你也可以使用 nPlayer 连接某个云盘,以此播放云盘中的视频资源。

灵活的部署方案

在上述的这 5 个影响影音服务器部署的要素中,主要需要考虑的因素是:影音资源 存储 方式,使用了何种 影音服务器 ,使用了何种 播放客户端 。另外的 2 个要素并不是主要选择考虑的点:服务器访问资源的方式,由存储和影音服务器决定;客户端网络访问方式,主要取决于你的是否有公网访问的需求。

前 3 种主要因素几乎可以任意排列组合,形成多种不一样的方案,各个方案各有自己满足的需求和优劣,可能需要你自己根据需求抉择。

下面列举了我使用过的几套无需 NAS 的影音服务器方案。 我目前正在使用的是第 4 种方案 ,如果你只想抄作业的话,你可以直接跳到这一节中。

  1. 数据存在自己的 PC(NAS)里,内网访问,本地部署 Jellyfin 服务器,使用 Jellyfin 自带的客户端 / Infuse / VidHub / 弹弹 Play / 播放器:

    1. 成本:只有电费,可选的内网穿透成本;

    2. 优点:操作极其简单,几乎无需进行任何网络配置;

    3. 缺点:如果是个人 PC,那么存储容量可能受限,公网访问基本需要内网穿透,带宽和个人 PC 的电费是问题。

  2. 数据存在网盘里,公网服务器部署 AList,服务器部署 Jellyfin 服务器,使用 Jellyfin 自带的客户端 / Infuse / VidHub:

    1. 成本:网盘会员,公网服务器等云服务;

    2. 优点:AList 支持挂载非常多种网盘,另外使用了 Jellyfin,能够直接通过 Web UI 提供丰富的功能,PC、安卓、苹果等各个平台都能直接用;

    3. 缺点:整个视频播放链路比较长,相应的配置比较麻烦,可能会出现速度、稳定性不太行的情况。

  3. 数据存在网盘里,公网服务器部署 AList,不用影音服务器软件,使用 Infuse / VidHub / 支持访问 WebDAV 的播放器:

    1. 成本:网盘会员,公网服务器等云服务;

    2. 优点:AList 支持挂载非常多种网盘;

    3. 缺点:Infuse / VidHub 只在苹果有。

  4. 数据存在阿里云盘或 PikPak 里,直接使用它提供的 WebDAV 访问,不使用影音服务器软件,使用 Infuse / VidHub:

    1. 成本:网盘会员;

    2. 优点:便宜,配置方便,直接连到存储的阿里云盘,速度和稳定性有保障;

    3. 缺点:Infuse / VidHub 只在苹果有。

后文将会对这几种方案给一些部署教程。正如上面所说,这些方案中的组件可以互相组合,如果你需要部署上述之外的方案,希望通过上文的分要素分析,你能够触类旁通。

另外,单独将这些无需 NAS 的方案,与 NAS 做一个简单的对比:

  • 无需 NAS 的方案,在前期(可能是前几年时间),相对于 NAS 成本更低。

  • 使用云盘存储的方案,涉及到一些数据隐私的问题,也容易出现存的东西被审核拿下的情况,而 NAS 隐私性更高。

  • 无需 NAS 的方案自带了公网访问能力,而自建 NAS 如果需要公网访问,可能会比较麻烦(没有实际用过,感觉),诸如配置内网穿透等等,考虑自家的网络情况等等。

  • 各类无需 NAS 或者需要 NAS 的方案,有操作麻烦的,需要具备一定计算机知识和实操能力,也有简单无脑的。比如,直接用阿里云盘 + Infuse / VidHub 弄起来起来非常简单,而涉及服务器就比较麻烦。对于 NAS 也是类似的,你可以用小成本 DIY 一套东西,但是需要各种软硬件知识和技能,也可以无脑加钱买一套群晖,相对操作起来更容易,遇到问题也更容易求助解决。

  • 组一套 NAS 不仅能搭建影音服务器,还能更方便的解锁更多玩法。

因此,没有最完美的方案,一切都是 trade-offs(权衡利弊),只有最适合你自己需求的方案。

如果你不知道自己是否真的需要 NAS,那么你可以试试后文的教程,感受一下。

方案 1:本地 PC 部署 Jellyfin

数据存在自己的 PC 里,内网访问,本地部署 Jellyfin 服务器,使用 Jellyfin Web UI / 弹弹 Play / 播放器。

如果使用 Jellyfin Web UI / 弹弹 Play / 播放器,方案 1 的部署结构如下图所示:

本地 PC 部署 Jellyfin本地 PC 部署 Jellyfin

Jellyfin

从官网 Downloads | Jellyfin 下载安装 Jellyfin 的 Windows 版本,安装完成后打开 http://localhost:8096 跟随指示进行配置。

视频资源目录

在开始配置 Jellyfin 时,它会让你指定一个本地存放视频资源的目录。

Jellyfin 会扫描这个目录,自动分析出这之中包含哪些视频,并从 TMDB 等平台获取这些视频的元数据(影片名,海报,演职人员等)。

这就要求,你的 视频资源目录结构 以及视频文件名,需要 符合一定的约定 ,才能让 Jellyfin 识别出来。这个要求对后文提到的其它影音服务器软件、弹弹 Play、Infuse 等客户端软件也同样适用,后文将不再赘述。

如下图所示,你需要在配置 Jellyfin,指定它从「资源根目录」中检索视频资源。根目录下需要包含一个个文件夹,每个文件夹表示一部电影 / 电视剧 / 动画,这个文件夹内存放着具体每一集的资源。

资源根目录/ ├── 孤独摇滚/ │ ├─ 孤独摇滚.S01E01.mp4 │ ├─ 孤独摇滚.S01E02.mp4 │ ├─ 孤独摇滚.S01E03.mp4 │ ├─ ... │ └─ 孤独摇滚.S01E12.mp4 ├── 葬送的芙丽莲/ │ ├─ 葬送的芙丽莲.S01E01.mp4 │ ├─ ... │ └─ 葬送的芙丽莲.S01E28.mp4 ├── ...

在这个例子中,「资源根目录」(至少)有 2 部动画:「孤独摇滚」和「葬送的芙丽莲」。「资源根目录/孤独摇滚/」这一目录中,存放着所有孤独摇滚的视频资源,命名方式为 「 孤独摇滚 」+「 . 」+ 「 S01 」(表示第一季)+ 「 Exx 」(表示具体的集数)+ 「 文件后缀 」。对于「资源根目录/葬送的芙丽莲/」,也是类似的。

具体你可以参考 Jellyfin 提供的官方文档: Movies | Jellyfin Shows | Jellyfin

因此,Jellyfin 等软件可以从你的视频资源目录中,「 刮削 」(识别)出有哪些影片或剧集,获取剧集的信息( 元数据 ),并进行相应的整理,生成前文出现过的「 海报墙 」。

内网中的 Infuse / VidHub

数据存在自己的 PC 里,内网访问,本地部署 Jellyfin 服务器,使用 Jellyfin 移动端 APP / Infuse / VidHub。

如果使用 Jellyfin 移动端 APP / Infuse / VidHub,方案 1 的部署结构如下图所示:

你可能不需要一个 NAS?从零开始搭建自托管的影音服务器

内网使用 Jellyfin

你可以在手机上使用 Jellyfin 的 APP 以及 Infuse / VidHub 来连接你的 PC 上的 Jellyfin 服务器。

简单来说,你需要知道本机在局域网的 IP,在终端运行 ipconfig 命令,得到我这里的局域网 IP 是 192.168.18.209

ipconfigipconfig

然后,保证你的手机和 PC 处于同一网络下,使用 Jellyfin 的 APP 以及 Infuse / VidHub,配置它们连接到 http://192.168.18.209:8096 (Jellyfin 默认 8096 端口),就可以在手机上利用内网播放 PC 上的视频资源了。

方案 2:在服务器用 WebDAV 部署 Jellyfin

数据存在网盘里,公网服务器部署 AList,服务器部署 Jellyfin 服务器,使用 Jellyfin 自带的客户端 / Infuse / VidHub。

方案 2 的部署结构如下图所示,由于过程比较复杂,可以参考我之前的博客 在服务器用 WebDAV 部署 Jellyfin 进行部署。

在服务器用 WebDAV 部署 Jellyfin在服务器用 WebDAV 部署 Jellyfin

在上面的这篇博客中,涉及在 Linux 环境中挂载 WebDAV 目录。如果你有其它需求要在 Windows 上挂载 WebDAV 目录,可以参考我之前的另外一篇博客 Windows 上挂载 WebDAV

方案 3 / 4:阿里云盘 / PikPak + AList? + Infuse / VidHub

数据存在网盘里,公网服务器部署 AList,不用影音服务器软件,使用 Infuse / VidHub / 支持访问 WebDAV 的播放器。

数据存在阿里云盘或 PikPak 里,直接使用它提供的 WebDAV 访问,不使用影音服务器软件,使用 Infuse / VidHub。

这 2 个方案是我目前正在使用的,总体体验还行,成本不高,配置简单。个人比较推荐给,想从 Infuse / VidHub 开始简单尝试影音服务器的朋友。

云服务器部署 AList

对应方案 3,它的部署结构如下图所示:

云服务器部署 AList云服务器部署 AList

实际上,这个话题已经有非常多的博客介绍,在此我只做简要介绍,你可以搜索相关的教程进行操作。

在 Linux 服务器上,确保已经安装了 Docker,运行以下命令就可以启动一个 AList 服务:

docker run -d --name=alist --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 xhofe/alist:latest

此时,AList 被启动了在了 5244 端口上。假设你知道后续应该如何操作,包括诸如打开云服务器上的 5244 端口,使用云服务器公网 IP + 端口 5244 访问到 AList 等等。

你可能会担忧在自己的服务器上,启动网盘播放视频,是否会消耗大量带宽和流量。实际上,基本无需担心这个。AList 对很多网盘,都能支持重定向的转发过程,实际上视频播放是直接从云盘到你播放器中,并不会经过 AList 服务器。因此,我们不会受到自己的服务器带宽限制,你完全可以使用非常低配的服务器来部署 AList,而 AList 起到的核心作用是作为中间层转发访问文件的请求。

之后,你需要参考 AList 的官方文档或者博客,将你的云盘挂载到 AList 中。

最后,你需要在 Infuse / VidHub 中添加一个 WebDAV 文件源(AList 文件源)。你需要指定自己的云服务器公网 IP 和端口,指定 AList 登录的用户名和密码,以及 AList 暴露的 WebDAV 的路径是 /dav 。VidHub可以参考下图进行配置,对于 Infuse 也是类似的:

VidHub 添加远程 AList 参考配置VidHub 添加远程 AList 参考配置

别忘了,你需要添加的文件源中选出你的「资源根目录」,它们应该满足类似的文件夹和文件名要求。

对于 Infuse,可以参考官方目录结构和文件名的指南: Metadata 101 – Firecore Support

对于 VidHub,可以参考官方目录结构和文件名的指南: VidHub视频文件命名规范 (okaapps.com)

Infuse / VidHub 直接连接到云盘

对应方案 4,它的部署结构如下图所示:

Infuse / VidHub 直接连接到云盘Infuse / VidHub 直接连接到云盘

这个方案播放链路是最短的,相应的配置操作也是最简单的。

你只需要在 Infuse / VidHub 上添加文件源时,选择阿里云盘,根据提示登录,最后选择「资源根目录」即可。选出的「资源根目录」应该满足与前文介绍类似的文件夹和文件名要求。

对于 PikPak,可以点击其 Web 页面的右上角设置按钮,打开「设置 > 实验室功能 > WebDAV」,获取到生成的 WebDAV 配置信息,填入 Infuse / VidHub 的文件源配置中即可。

展开 收起
33评论

  • 精彩
  • 最新
  • 我觉得大部分人和我一样,组nas就是想搞一个自己的影音库,家里各设备都可以共享资源。我也想过整一套,但是成本太高了。后来发现迅雷有个片库的功能,用电脑下载资源,然后打开迅雷这个功能,手机和电视也下载迅雷,就可以局域网,甚至远程共享电脑上的资源了,什么刮削,在线字幕,HDR全都有,就这么省事,省成本,足以满足我的需求!

    校验提示文案

    提交
  • 我有50t的电影刮好了的,放在家里nas,nas安装j,安装frp,在家就是局域网访问j,在外面就是frp外网ip访问j。简单省事儿。你们说呢?

    校验提示文案

    提交
  • 我用的N100小主机,刷了pve做虚拟机,又装了openwrt做主路由,又装了一个nas买了一块4T的机械盘,全部下来1K搞定。NAS里面装了2T的影视,又装500多G的无损音乐资源,在外面直接用ipv6(已做DDNS)访问家里NAS。

    校验提示文案

    提交
  • 主要是资源!

    校验提示文案

    提交
    pt

    校验提示文案

    提交
    收起所有回复
  • 这种会员那种会员还不如直接买个 Apple TV 会员

    校验提示文案

    提交
    道理是这个道理,但是科学上网也是个问题

    校验提示文案

    提交
    没多少片源

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • alist + 网易爆米花 试试、简单轻便

    校验提示文案

    提交
    改的名字是真蠢

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 影音爱好者可以弄这些东西,普通人真没必要弄什么NAS呀,现在的硬盘价格这么高,真是不值当。

    校验提示文案

    提交
  • 我鼓励 使用正版资源 .哈哈,好无奈啊😅

    校验提示文案

    提交
  • 用飞牛

    校验提示文案

    提交
  • 用nas更为方便一些,当然,除了前期的成本投入和后期的电费

    校验提示文案

    提交
  • 买了nas装了Emby,不知道去哪下载电影

    校验提示文案

    提交
    索引器

    校验提示文案

    提交
    夸克群

    校验提示文案

    提交
    收起所有回复
  • 没啥用,我一堆视频会员基本都不花钱

    校验提示文案

    提交
    爱优腾三家的画质太差,好多剧还没有,网飞的补全还行,但是价格贵,还得手动网络。

    校验提示文案

    提交
    收起所有回复
  • jellyfin直接有安卓客户端

    校验提示文案

    提交
  • 如果只在局域网看电影是不是只用alist部署在apple tv挂载网盘就可以了 。不需要租公共服务器。 另外有没有局域网能播放网盘资源又有音频直通的设备啊?atv不支持音频直通一直是痛点

    校验提示文案

    提交
  • 本地部署jeffyfin有没有在win10下可以直接部署的?

    校验提示文案

    提交
    直接win装服务端

    校验提示文案

    提交
    收起所有回复
  • 弄好了 也没时间看,网上下个tv-box 得了

    校验提示文案

    提交
  • 怎么访问 Pikpak 呢?

    校验提示文案

    提交
    买张机票去新加坡,不行就高铁去香港

    校验提示文案

    提交
    收起所有回复
  • 飞牛os,可以了解下,哈哈。再装个nastool

    校验提示文案

    提交
  • 1、看影音,用5T的onedrive+alist+甲骨文。
    2、存照片,破电脑装个Linux,photoprism+syncthing多节点同步。解决随时可查看照片并多节点同步保证数据安全。

    校验提示文案

    提交
  • 以前弄个4盘nas光下片,下完再刮削资料下字幕,现在就box里直接追神秘的哥哥们,省事。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
437
扫一下,分享更方便,购买更轻松