- 尾标 它避免了打开端口,并且支持 CGNAT,但需要在每个想要访问它的设备上安装并授权该应用程序。
- 对于拥有三星、LG 或 Google TV 电视且技术技能有限的家庭来说, 最透明的选项 通常情况下,这是一个带有 VPN 和反向代理的 VPS:他们只能看到带有 HTTPS 的普通域名。
- 选择之前, 检查您是否拥有 CGNAT如果路由器的 WAN IP 地址与您在互联网上看到的地址不匹配,则端口转发将无法工作。
Jellyfin 在家使用简直完美:安装服务器,添加文件夹,几分钟后,你的媒体库就能在客厅里访问了。但当你想在远在千里之外的亲戚的手机、iPad 或电视上观看节目时,麻烦就来了。这时就涉及到路由器、端口、域名以及其他一系列设置,对于那些不想把事情搞复杂的人来说,这足以让一个宁静的下午变成一场噩梦。远程访问更是另一回事,如果你想让那些技术耐心有限的人也能使用它,那就更加复杂了。
好消息是,有些解决方案无需开放端口,即使您的 ISP 使用 CGNAT 也能正常工作。Tailscale 是目前最流行的无需修改路由器即可实现此功能的方案,但它并非万能:它需要在每个设备上安装一些软件,并且在处理三星或 LG 电视,以及一些老旧设备时存在明显的局限性。虽然没有一种万能方案能让 Jellyfin 无需任何设置就能为全家人提供 Plex 服务,但确实存在一些比其他方案更清晰的途径。接下来,我们将仔细探讨所有细节,包括 Tailscale、Cloudflare Tunnel、VPS 和 Jellyfin 安全设置中一些鲜为人知的方面。
为什么水母离开家时会被困住?
在本地网络中,一切都很简单:服务器拥有一个私有地址,例如 192.168.1.50,连接到同一 Wi-Fi 网络的任何设备都可以毫无问题地访问它。但当请求来自互联网时,情况就不同了,因为你的路由器不知道该将流量转发到哪个设备。为了解决这个问题,通常使用三种经典方案:端口转发、设置反向代理或使用类似 Cloudflare 的隧道。这三种方案都很复杂,而且都不适合远在地球另一端的岳母来配置。
端口转发是指告诉路由器,所有到达特定端口的流量都应该路由到运行 Jellyfin 的计算机。这听起来很简单,但实际上需要访问路由器的控制面板,创建规则,分配服务器的本地 IP 地址,并且还要祈祷公网 IP 地址不会频繁更改。此外,在路由器上打开端口会造成一个从互联网可见的漏洞,如果防护措施不当,可能会成为一个严重的安全漏洞。
反向代理更优雅,但也更复杂。它用于接收访问请求,使用 HTTPS 加密连接,然后将请求转发到内部的 Jellyfin 服务器。这通常需要购买或管理域名、配置证书,并且需要了解每个步骤的具体操作。虽然并非不可能,但对于只想在 iPad 上看电影而不想求助于电脑专家的人来说,这显然不是最佳选择。
Cloudflare Tunnel 是另一种选择:您需要在服务器上安装一个程序,它会打开一个出站连接,您的访客可以使用普通名称访问,而无需开放端口或拥有公网 IP 地址。问题在于,Cloudflare 在视频服务方面的细则并不像表面看起来那么友好,而且您还依赖于一个可能更改规则或限制您服务的中间方。
所有这些选项的共同点在于,它们都会以某种方式将您的家庭网络暴露给互联网、发布域名或依赖第三方服务提供商。这就解释了为什么许多人在遇到过于复杂的问题之前就放弃了 Jellyfin 的远程访问功能。Jellyfin 自身的建议也很明确:不建议直接开放一个端口连接到互联网,因为如果您使用纯 HTTP 协议,密码可能会以未加密的形式传输。端口 8096 用于 HTTP 协议,端口 8920 用于 HTTPS 协议(但默认情况下未使用),端口 7359 用于本地发现,因此这些端口也不应该暴露。
Tailscale 提供什么服务?又有什么陷阱呢?
Tailscale 基于 WireGuard 构建私有网络。其理念是,用户在多台设备上安装应用程序,使用同一账户进行授权,所有设备即使身处不同国家/地区,也能像连接到同一路由器一样正常工作。无需开放端口或使用公网 IP 地址,因为每台设备都主动连接到 Tailscale 网络,所有设备都位于网络中心。对于运行 CGNAT 的家庭服务器而言,这无疑是一大福音。
注册多个设备后,系统会创建一个尾网(tailnet),它是与您的帐户关联的私有网络。每个设备都会获得一个类似 100.xyz 的地址和一个 MagicDNS 名称,这样您就无需记住这些数字。然后,您需要将此地址输入到 Jellyfin 应用中,才能从外部连接。Tailscale会分配 100.64.0.0/10 网段的地址,该网段也用于 CGNAT,但请注意:您的路由器的互联网地址完全不同,这才是您在验证是否启用 CGNAT 时需要检查的内容。
Tailscale 的个人版套餐对非商业用途免费,最多允许六位用户(包括您自己)使用,因此您可以邀请五位好友。该公司称该套餐永久免费,对于普通家庭用户来说,通常完全够用。结合免费开源的 Jellyfin,您就能拥有一个无需订阅的多媒体生态系统,这与 Plex Pass 的远程流媒体服务不同,Plex Pass 需要付费。
当运营商强制使用 CGNAT 或 ISP 屏蔽某些入站连接时,Tailscale 也是推荐的选择。服务器和客户端无需通过路由器,而是连接到私有网络并进行通信。由于无需外部人员访问您的家庭网络,因此CGNAT 对这种连接而言不再重要。
然而,隐藏的成本并非金钱,而是便利性。每个想要访问内容的设备都需要安装并授权 Tailscale,而且服务器必须开机并连接到 TailNet 网络,内容才能可用。如果你的母亲使用三星电视,你的岳母使用 Google TV,而你的兄弟分发旧的安卓平板电脑,那么你必须在每台设备上安装和配置 Tailscale,或者找到一个桥接器。对于不熟悉技术的人来说,这本身就是一个障碍。
与他人共享也并非没有条件。Tailscale 的所有套餐都支持机器共享,但受邀者需要拥有自己的账户,并且必须是其所属 Tailscale 服务器的所有者、管理员或 IT 经理才能接受邀请。这并非像发送链接后对方无需任何操作即可登录那么简单。对于你的岳母来说,这可能意味着在观看第一部电影之前,需要完成安装、注册,甚至还要浏览几个页面。
最后,Tailscale 并非总是在两个端点之间建立直接连接。当存在硬 NAT、防火墙或其他限制时,流量会通过 Tailscale 的 DERP 中继进行路由。这会增加延迟,并且在视频播放中尤为明显:有时流畅,有时即使没有更改任何设置也会出现卡顿。Tailscale 的可接受使用政策并未包含关于带宽、视频或流量的具体条款,但这并不能改变中继是最后的选择,并不能保证完美流媒体播放的事实。
在进行任何操作之前:请检查您是否拥有 CGNAT。
CGNAT 指的是您的互联网服务提供商与多个用户共享同一个公网 IP 地址。您在互联网上没有独立的地址,无论您在路由器上开放多少端口,网络外部的任何人都无法访问您的家庭网络。由于是共享的公网 IP 地址,传统的端口转发方法无法生效,无论您如何配置都无济于事。
检查方法很简单。打开路由器的控制面板,找到它的互联网 IP 地址、WAN IP 地址或外部 IP 地址。然后,使用连接到同一网络的另一台设备,在 Google 上搜索“我的 IP 地址是什么?”,比较两个地址。如果两个地址不匹配,则说明存在中间路由器。如果 WAN IP 地址介于100.64.0.0 和 100.127.255.255之间,问题就很明显了:您位于 CGNAT 之后。同一链路上的另一个路由器也可能出现同样的问题,所以不要排除这种可能性。
如果您使用的是 CGNAT,在尝试任何变通方法之前,建议您先联系您的网络服务提供商,询问他们是否可以为您提供一个公网 IPv4 地址。这取决于您的合同和所在地区,可能需要支付一定的费用,但这是恢复传统端口转发的唯一途径。此外,您还可以选择使用原生 IPv6:如果您的服务器拥有一个全球可路由的 IPv6 地址,并且您访问的网络也使用 IPv6,那么您或许可以通过这种方式连接。CGNAT是一个 IPv4 问题,因此在检查之前不要轻易排除这种可能性。
切记不要走捷径:动态 DNS 并不能解决 CGNAT 问题。指向共享 IP 地址的域名仍然无法访问您的家庭网络。动态 DNS 不会固定共享 IP地址;它只会在您的公网 IP 地址更改时更新域名,因此您首先需要一个真正的公网 IP 地址,然后再考虑域名问题。
轻松驾驭Jellyfin的尾鳞龙

基本流程比周五晚上选看什么还快。首先,在用作服务器的电脑上安装 Jellyfin。如果是 Windows 系统,最好将其设置为服务,这样它就能在登录前自动启动。然后,访问http://localhost:8096,添加硬盘上的文件夹,并配置媒体库、字幕和播放进度同步。
服务器运行后,在同一台计算机以及您希望访问它的设备上安装 Tailscale。初始设置期间,创建帐户并授权设备,这将生成尾网。所有设备都使用同一个帐户,以便它们可以互相访问。如果您在服务器上安装了 Tailscale,但未在移动设备上安装,则移动设备将不会加入私有网络,也无法访问该网络。
要在 Tailscale 中查找服务器地址,您可以在服务器机器上使用 `tailscale ip -4` 命令,或者查看应用程序。它会返回类似 100.121.112.23 的地址。在 Jellyfin 客户端应用程序中,使用该地址和相应的端口手动添加服务器,例如100.xyz:8096。Jellyfin的自动发现功能仅在本地网络中有效,因此在本地网络之外,您需要手动输入地址。
Tailscale 适用于 Windows、macOS、Linux、Android、iPhone、Chromebook、Apple TV 和 Amazon Fire 等平台。虽然支持的设备种类繁多,但并非全部。例如,三星 Tizen 和 LG webOS 电视虽然安装了官方的 Jellyfin 应用,但却不支持 Tailscale。问题就在这里:电视虽然可以运行 Jellyfin,但除非通过其他方式连接到您的私有网络,否则它始终处于您的私有网络之外。
请记住,服务器必须保持开机状态并连接到 Tailnet 网络。服务器持续运行至关重要:如果计算机关机或断开连接,您的家人将无法访问图书馆。此外,免费套餐不允许将 Tailscale 用于商业用途,因此,如果这项服务仅供您一半的家庭成员使用,请确保其满足您的个人需求。
真正的问题在于:电视和缺乏耐心的家人。
在三星 Tizen 或 LG webOS 电视上,Jellyfin 应用商店里有官方版本,但 Tailscale 功能却无法使用。电视可以打开 Jellyfin,但由于它不在家庭网络中,所以无法连接到家庭服务器。电视始终处于家庭网络之外,而且应用内也没有任何设置可以解决这个问题。
技术解决方案是设置一个子网路由器:这台设备预装了 Tailscale,充当私有网络和那些无法安装该应用程序的设备之间的桥梁。方案确实有效,但配置起来不再像以前那样简单:需要设置另一台设备,保持其通电状态,并向所有需要的人解释其工作原理。它的确起到了桥梁的作用,但既不透明也不省时。
对于 Google TV、Chromecast 和较旧的 Android 平板电脑,您需要逐个分析具体情况。如果设备允许从应用商店安装 Tailscale,您可以尝试安装;否则,问题依旧存在。每个想要连接的设备都需要单独安装,或者使用桥接器来实现连接。如果家里有多台旧平板电脑,这可能会非常麻烦。
与家人共享你的Tailnet并非像按个按钮那么简单。访客需要拥有自己的账户,而且必须是自己Tailnet的所有者或管理员才能接受邀请。对于只想看剧的人来说,拥有自己的账户并担任管理员未免要求过高。对于你的母亲或岳母来说,这与打开Plex就能看到已设置好的媒体库完全不可同日而语。
因此,即使 Tailscale 对您来说是最简单的选择,对您的家人来说也未必如此。就最终用户的透明度而言,它无法与 Plex 相提并论。如果所有设备都是您自己的,并且可以预先设置好,那当然很好。但如果存在第三方电视,而且家庭成员中也有不太懂技术的人,情况就不同了。
提供其他方案,这样您的家人就无需安装任何东西。

如果您希望客人无需安装 Tailscale 即可打开电视观看 Jellyfin,最透明的方案是租用一台 VPS 服务器,并连接 VPN 连接到您的家庭网络,同时使用反向代理。您需要租用一台小型服务器(拥有静态公网 IP 地址),在 VPS 和您的家庭网络之间建立 VPN 连接,并使用反向代理来接收访问。客人看到的只是一个带有 HTTPS 安全锁图标的普通域名,无需安装任何软件或进行任何注册。然而,这种方案设置起来最为繁琐,也是唯一需要定期付费的方案。
关键在于,呼叫源自您的家庭网络,而非VPS服务器。您的家庭服务器会建立与VPS的连接,因此CGNAT不会造成干扰。然后,VPS的反向代理会接收您家人的访问请求,并通过隧道将其转发到Jellyfin。呼叫源自您的家庭网络,访客只会看到一个带有证书的域名。然而,VPS并不会占用您的带宽:视频仍然源自您的家庭网络,并占用您的上传速度。
瓶颈在于您的上传速度,而不是您的媒体库大小。即使您拥有 30TB 的电影,也无关紧要:只有正在播放的内容才会通过网络传输。如果您的上传速度低于 100Mbps,建议将 Jellyfin 的比特率限制在该速度的 70%,以避免播放中断。此限制可在控制面板中配置,并且会影响本地网络之外的设备。
如果你没有 CGNAT,WireGuard 是另一个选择。它免费、速度快,并且会暴露一个 UDP 端口而不是 Jellyfin 面板,因此任何没有密钥的人都收不到任何响应。即使没有 CGNAT,WireGuard 也能完美运行;但有了 CGNAT,你的家庭服务器就没有稳定的地址可供调用,所以监听端点必须位于异地:你又回到了 VPS。必须有人在你的家庭网络之外监听;这是无法避免的。
Cloudflare Tunnel 无需开放端口,也不需要公网 IP 地址。您只需在服务器上安装 Cloudflare,即可建立出站连接,访客无需安装任何软件即可通过浏览器访问。问题在于条款细则:Cloudflare 的具体条款规定,除非您是企业客户,否则必须使用付费服务才能通过其 CDN 提供视频和大文件服务。如果Cloudflare 怀疑您在未使用这些服务的情况下使用 CDN,则保留禁用或限制访问的权利。论坛上流传的旧版 2.8 条款已于 2023 年 5 月被废除,新版本中不再出现“Tunnel”一词,因此既没有明确的禁止,也没有明确的授权。这属于灰色地带。
如果您拥有公网 IP 地址,并且只想使用域名而不是一串数字,那么免费的动态 DNS 服务就能满足您的需求。DuckDNS 宣称其服务免费,托管在 AWS 上,无需信用卡。No-IP 也提供免费套餐,包含一个主机名,同样无需信用卡。DuckDNS和 No-IP是最知名的选择,但 DynDNS 已不再提供免费套餐:您只能选择购买服务或七天免费试用。请记住,动态 DNS 服务无法修复 CGNAT 问题,也无法替代端口转发。
将 8096 端口开放给全世界是最糟糕的做法。Jellyfin 直言不讳地指出:直接向互联网开放端口是不安全的,不建议这样做。如果您使用 HTTP 协议,密码将以未加密的形式传输。最佳方案是使用反向代理来终止 HTTPS 连接,并避免使用自签名证书,因为它们会导致兼容性和安全问题。在反向代理中终止 HTTPS 连接是明智之举;只需在 Jellyfin 中启用一些设置,然后祈祷一切顺利即可。
Jellyfin 中值得调整的安全和设置
端口 8096 用于 HTTP,端口 8920 用于 HTTPS 但默认情况下未使用,端口 7359 用于本地发现。端口 8096 不应直接对外开放。如果您要公开某些内容,请使用支持 HTTPS 的反向代理接收访问并将流量路由到 Jellyfin。
远程访问设置有两个独立的开关:一个位于服务器级别,在“网络和远程访问设置”中;另一个位于每个用户的个人资料中,选项为“允许远程连接到此服务器”。这两个独立的开关意味着您可以排除仅在家中使用的帐户,并仅允许真正需要远程访问权限的用户访问。
速度限制在“控制面板”>“播放”>“流媒体”>“互联网流媒体比特率限制”下进行配置。这是针对您网络之外所有设备的单次流媒体播放的限制。如果您的上传速度低于 100 Mbps,Jellyfin 建议将其设置为上传速度的 70%。两个流媒体同时播放时,此限制会翻倍,因此请勿将其视为总限制:它是针对每个流媒体的。您可以在每个用户的配置文件中覆盖此全局值。
快速连接允许您使用一个临时的六位字符代码登录,而无需用户名和密码。此功能默认启用,非常方便,但该代码本身并不有效:它需要经过您已登录设备的授权。它并非万能的后门。如果您不想使用此功能,可以在“设置”>“控制面板”>“常规”中取消选中“在此服务器上启用快速连接”来禁用它。
对于大型媒体库,不必过于关注磁盘空间大小。只有正在播放的文件才会通过网络传输,因此真正重要的是该文件的比特率和你的上传速度。媒体库的大小不会影响带宽;真正重要的是你当前正在观看的电影或剧集的比特率。
根据您的情况选择什么

如果您独自使用手机、笔记本电脑或平板电脑等设备,Tailscale 是最直接的选择:只需一个下午,无需任何费用,CGNAT 就将彻底从您的设备中移除。Tailscale的优势在于您可以独立安装和授权,因此它适用于您自己的设备。当不涉及第三方电视时,它是最简单的解决方案。
如果你打算与家人共享空间,而他们又不想安装任何软件,那么配备 VPN 和反向代理的 VPS 是唯一能提供类似 Plex 体验的方案:他们只需注册一个域名,输入密码,即可观看内容。这种无需安装的方案虽然耗时最长,也是唯一需要按月付费的方案,但对于你的母亲、岳母以及使用旧平板电脑的孩子们来说,这种透明度至关重要。
如果您拥有公网 IP 地址,并且只想设置域名而不是更改 IP 地址,请使用 DuckDNS 或 No-IP。动态 DNS可以解决域名问题,但无法解决 CGNAT 或安全问题。首先,请确认您的公网 IP 地址确实属于您,然后再考虑域名问题。
如果您了解 Cloudflare Tunnel 的条款并且不介意依赖第三方服务,那么它可能很有用。但不要以为它是完全免费且没有任何附加条件的:视频传输存在限制,而且 Cloudflare 也可能限制服务。如果您尝试使用,请务必充分了解相关条款,因为 Cloudflare 的条款中并没有关于 Tunnel 流量的官方说明。
绝对不能做的就是将 8096 端口开放给全世界,然后指望运气。开放 8096 端口是最糟糕的选择:不安全、暴露,而且密码可能以未加密的形式传输。如果你不想做任何设置,可以使用 Tailscale 来保护你的设备;如果你想让家人了解你的网络状况,可以使用带有 VPN 和反向代理的 VPS;如果你只需要一个域名,可以使用动态 DNS;如果你对 Cloudflare Tunnel 感兴趣,请务必先仔细阅读其条款细则。
最终决定取决于谁将使用 Jellyfin 以及您愿意投入多少时间。Tailscale 对您来说是最简单的选择,但对您的家人来说可能不够透明。如果所有设备都属于您,Tailscale 几乎是完美之选。但如果您使用的是三星、LG 或 Google TV,并且您的家人不想操心任何麻烦,那么配备 VPN 和反向代理的 VPS 是最接近 Plex 体验的方案:他们无需安装任何东西,您负责所有工作和费用。如果您只是想免费试用,Tailscale 也能帮您解决燃眉之急,前提是您能够配置好每台设备并接受服务器始终在线。

