返回博客

Plex和Jellyfin家庭服务器的代理:如何安全地与朋友分享媒体内容

想给朋友访问您的Plex或Jellyfin媒体库,但不知道如何安全地做到这一点?代理服务器可以解决这个问题,无需打开路由器端口,降低家庭网络被黑客攻击的风险。

📅2026年5月11日
```html

您已经在 Plex 或 Jellyfin 上搭建了家庭媒体服务器,填充了电影、电视剧和音乐——并希望让朋友或家人访问。但打开路由器的端口是可怕的:这直接在您的家庭网络中留下了一个漏洞。代理服务器优雅地解决了这个问题:它充当您的服务器与观众之间的中介,隐藏真实的 IP 地址,并且不需要危险的路由器设置。

为什么不能简单地打开端口:家庭服务器的风险

给朋友访问 Plex 或 Jellyfin 的最明显方法是通过路由器转发端口。例如,打开端口 32400(Plex)或 8096(Jellyfin),然后将链接发送给朋友,格式为 http://您的-IP:32400。从技术上讲,这样是可行的。但从安全的角度来看——这是灾难。

当您在互联网上打开家庭路由器的端口时,会发生以下情况:

  • 您的家庭 IP 变为公开。 任何知道您服务器地址的人都知道您的真实家庭 IP。这是地理定位、提供商,甚至是您所在地区的地址。
  • 机器人扫描器会在几个小时内找到您。 Shodan、Censys 和数千个自动扫描器不断扫描整个互联网。打开的 Plex 或 Jellyfin 端口将在开放后几个小时内被发现,并开始收到黑客攻击尝试。
  • 软件漏洞 = 网络被黑。 Plex 和 Jellyfin 是复杂的软件,历史上有漏洞。如果您使用的版本有未修补的漏洞,攻击者可以通过它进入您的媒体服务器,甚至整个家庭网络:笔记本电脑、NAS、智能设备。
  • DDoS 和滥用投诉。 您的家庭提供商没有义务保护您免受 DDoS 攻击。在大规模攻击下,您可能会被直接断开连接。
  • 动态 IP。 大多数家庭用户的 IP 地址是动态的。每次都需要告诉朋友新的地址,或者设置 DDNS 服务。

结论显而易见:开放端口并不是让外部人员连接的家庭媒体服务器的解决方案。需要一个中介,接受观众的请求并将其转发到您的服务器,同时不暴露您的真实 IP,并且不在家庭网络中创建漏洞。

代理如何帮助分享媒体:工作原理

在家庭媒体服务器的上下文中,代理充当中介点。您的朋友并不是直接连接到您的家庭 IP,而是连接到代理服务器的 IP。代理接受请求,将其转发到您的服务器,获取响应(视频流、元数据、封面)并将其发送回观众。

工作原理如下:

朋友(观众) → 代理服务器(公共 IP) → 您的家庭 Plex/Jellyfin 服务器
您的家庭服务器 → 代理服务器 → 朋友(观众)

实际上,这带来了什么好处:

  • 您的家庭 IP 被隐藏。 观众只能看到代理服务器的 IP。即使朋友与其他人分享链接——他们也无法直接攻击您的家庭网络。
  • 无需打开路由器的端口。 您的服务器会主动与代理(或隧道)建立出站连接。来自互联网的入站连接不会进入您的网络。
  • 统一的稳定地址。 代理服务器具有固定的 IP 地址。即使您的家庭 IP 发生变化——观众也不会知道。
  • SSL 加密。 代理可以终止 HTTPS,确保观众与代理之间的流量加密。
  • 访问控制。 在代理级别,可以限制谁可以连接到服务器。

重要的是要理解使用代理进行媒体服务器的两种场景之间的区别。第一种场景——您租用代理服务器(或 VPS),并在其上设置反向代理(reverse proxy):nginx、Caddy 或 Traefik。该服务器接受观众的请求并将其代理到您的家庭服务器。第二种场景——您使用商业代理服务作为隧道或中介节点,以匿名化来自您服务器的出站请求。

在本文中,我们将讨论这两种方法,但主要重点是实践设置,使您的朋友能够轻松观看来自您服务器的内容,而无需他们方面的技术复杂性。

哪种类型的代理适合 Plex 和 Jellyfin

并非所有类型的代理都适合视频流。以下是考虑到家庭媒体服务器特性的比较表:

代理类型 速度 稳定性 适合流媒体 备注
数据中心代理 ★★★★★ ★★★★★ ✅ 非常好 高带宽,稳定的延迟。非常适合流媒体隧道。
住宅代理 ★★★☆☆ ★★★☆☆ ⚠️ 有限 适合在 Plex 中访问外部服务时绕过地理限制。用于流媒体——不稳定。
移动代理 ★★★☆☆ ★★★☆☆ ❌ 不推荐 流量成本高,速度不稳定。不适合视频流。
反向代理(nginx/Caddy 在 VPS 上) ★★★★★ ★★★★★ ✅ 理想 最合适的长期使用方法。需要租用 VPS。

关于类型的结论: 对于持续流媒体内容,最佳选择是租用 VPS 上的反向代理,或者高带宽的数据中心代理。住宅代理在另一种场景中有用:当 Plex 或 Jellyfin 访问外部元数据源或阻止服务器 IP 的插件时。

💡 重要提示

Plex 有自己的云中继服务(Plex Relay),通过 Plex Inc. 的服务器作为内置代理。它是免费的,但将速度限制在 ~2 Mbps,这不足以支持 1080p。为了获得正常质量,您需要直接连接(打开端口)或自己的代理。

为 Plex 媒体服务器设置代理:逐步指南

我们将考虑最实用的场景:您有一个带有 Plex 的家庭服务器,并希望通过 VPS 上的反向代理让朋友访问。这提供了一个稳定的 URL、SSL 证书,并隐藏您的家庭 IP。

所需材料:

  • 安装了 Plex 媒体服务器的家庭 PC 或 NAS
  • VPS(任何,甚至最便宜的——1 vCPU,1 GB RAM 足以进行代理)
  • 域名(可以是免费的:DuckDNS、FreeDNS)
  • 大约 30-60 分钟的时间

步骤 1. 在家庭服务器上设置 Plex

在家庭服务器上打开 Plex Web。转到 设置 → 远程访问。确保“允许远程访问”选项已启用。记住端口——默认是 32400。目前不要在路由器上打开此端口——我们将通过代理完成所有操作。

步骤 2. 在 VPS 上安装 Nginx

通过 SSH 连接到 VPS。安装 Nginx 和 Certbot 以获取 SSL:

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx -y

步骤 3. 设置从 VPS 到家庭服务器的隧道

这是关键点。我们需要确保 VPS 能够访问您的家庭 Plex。有两种方法:

方法 A(更简单):从家庭服务器到 VPS 的 SSH 隧道。 在您的家庭服务器上执行命令,创建一个持久隧道——将家庭 Plex 的 32400 端口转发到 VPS 的 32400 端口:

ssh -N -R 32400:localhost:32400 user@您的_VPS_IP

为了让隧道保持持续运行,请将其添加到 systemd 或使用 autossh 以在断开时自动重新连接。

方法 B(更可靠):家庭服务器与 VPS 之间的 Tailscale 或 WireGuard VPN。这创建了一个持久的加密隧道,无需转发端口。更多信息请参见替代方案部分。

步骤 4. 将 Nginx 设置为反向代理

为您的域名创建配置。创建文件 /etc/nginx/sites-available/plex

server {
    listen 80;
    server_name plex.您的域名.com;

    location / {
        proxy_pass http://localhost:32400;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 对于视频流至关重要:
        proxy_buffering off;
        proxy_read_timeout 36000s;
        proxy_send_timeout 36000s;
        client_max_body_size 0;
    }
}

步骤 5. 获取 SSL 证书

sudo certbot --nginx -d plex.您的域名.com

Certbot 将自动更新 Nginx 配置并添加 HTTPS。之后,您的朋友可以访问 https://plex.您的域名.com——并看到带有 SSL 加密的 Plex。

步骤 6. 在 Plex 设置中指定代理 URL

在 Plex 媒体服务器中转到 设置 → 网络。在 "自定义服务器 URL" 字段中指定您的域名:https://plex.您的域名.com:443。这将告诉 Plex 客户端应通过此地址连接,而不是寻找直接路径。

为 Jellyfin 设置代理:逐步指南

Jellyfin 是 Plex 的完全免费和开源替代品。为 Jellyfin 设置反向代理略有不同,但逻辑是相同的。Jellyfin 默认在 8096(HTTP)和 8920(HTTPS)端口上运行。

步骤 1. 设置 Jellyfin 以通过代理工作

打开 Jellyfin 控制面板。转到 控制面板 → 网络。找到 "基本 URL" 字段并保持为空(如果 Jellyfin 将在根路径上)。确保启用 "允许远程连接" 选项。

步骤 2. Jellyfin 的 Nginx 配置

Jellyfin 的 Nginx 配置稍微复杂一些,因为服务器使用 WebSocket 进行同步:

server {
    listen 80;
    server_name jellyfin.您的域名.com;

    location / {
        proxy_pass http://localhost:8096;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持(对 Jellyfin 至关重要!)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 无缓冲流
        proxy_buffering off;
        proxy_read_timeout 36000s;
    }
}

替代方案:使用 Caddy 替代 Nginx

如果您不想处理 Nginx,可以尝试 Caddy——它会自动获取 SSL 证书,并具有更简单的配置语法。Jellyfin 在 Caddy 中的配置如下:

jellyfin.您的域名.com {
    reverse_proxy localhost:8096
}

是的,这实际上只有两行。Caddy 会自动设置 HTTPS,获取 Let's Encrypt 证书并自动更新。对于大多数家庭用户来说,Caddy 是更方便的选择。

步骤 3. 设置隧道(与 Plex 类似)

使用与 Plex 部分中描述的相同 SSH 隧道或 VPN 方法,但使用 8096 端口:

ssh -N -R 8096:localhost:8096 user@您的_VPS_IP

💡 安全提示

设置代理后,请确保 Jellyfin 仅在 localhost(127.0.0.1)上监听,而不是在所有接口(0.0.0.0)上。这将防止直接访问服务器而绕过代理。在 Jellyfin 的设置 → 网络 → "绑定到本地地址" 中指定 127.0.0.1。

替代方案:Tailscale、Cloudflare Tunnel 和代理 — 比较

除了通过 VPS 的经典反向代理外,还有更现代的解决方案。让我们分析它们的优缺点:

Tailscale(和 Headscale)

Tailscale 是基于 WireGuard 的 VPN,它在您的设备之间创建了一个私有网络。您在家庭服务器和朋友的设备上安装 Tailscale——他们通过虚拟网络获得对服务器的直接加密访问。

  • 优点: 非常容易设置,最大安全性,没有代理延迟,免费至 3 个用户
  • 缺点: 朋友需要安装 Tailscale 客户端,依赖于 Tailscale Inc. 的服务器,难以扩展到大量观众
  • 选择时机: 如果您有 2-5 个技术精通的朋友,他们不介意安装应用程序

Cloudflare Tunnel(以前称为 Argo Tunnel)

Cloudflare Tunnel 允许您通过 Cloudflare 的基础设施将家庭服务器发布到互联网,而无需打开端口。您在家庭服务器上安装 cloudflared,它创建一个到 Cloudflare 的出站隧道,您的服务器通过 Cloudflare CDN 变得可访问。

  • 优点: 免费,无需 VPS,Cloudflare 提供 DDoS 保护,自动 SSL
  • 缺点: Cloudflare 在其服务条款中禁止使用免费计划进行视频流。对于大量流量,需要付费计划。此外,Cloudflare 可以看到您的所有流量。
  • 选择时机: 用于测试或不频繁访问 Jellyfin/Plex

解决方案比较表

解决方案 复杂性 成本 速度 观众要求
Nginx/Caddy 在 VPS 上 中等 ~$3-5/月(VPS) ★★★★★ 仅限浏览器或 Plex/Jellyfin 客户端
Tailscale 免费(最多 3 个用户) ★★★★★ 安装 Tailscale
Cloudflare Tunnel 免费 / 从 $20/月 ★★★☆☆ 仅限浏览器或客户端
Plex Relay(内置) 免费 ★★☆☆☆ 仅限 Plex 客户端

通过代理的流媒体速度和质量:影响因素

使用代理进行媒体服务器时,主要问题是视频质量是否会下降?让我们分析一下实际影响通过代理流媒体速度的因素。

家庭互联网的带宽

这是最重要的限制。所有视频流都通过您的家庭互联网通道(上传)。典型的上传速度要求如下:

  • SD 质量(480p):~2-4 Mbps 每个观众
  • HD 质量(720p):~5-8 Mbps 每个观众
  • Full HD(1080p):~8-15 Mbps 每个观众
  • 4K HDR:~25-40 Mbps 每个观众

如果您的家庭套餐为 50 Mbps 上传速度,您可以同时支持 3-4 个 1080p 观众。代理在这里没有额外的限制——它只是转发流量。

转码与直接流

Plex 和 Jellyfin 能够实时转码视频——根据客户端设备的能力转换格式。转码会增加家庭服务器的 CPU 负担,但与代理无关。如果客户端设备支持直接播放(Direct Play)——负担最小。

建议:将 Plex/Jellyfin 客户端应用程序设置为最高质量和直接播放——这将降低服务器负担并消除转码延迟。

代理延迟

代理在路由中增加了额外的“跳跃”。对于视频流,20-50 毫秒的延迟几乎是不可察觉的——视频播放器的缓冲会弥补这一点。选择位于离您的观众较近的 VPS 是至关重要的:如果朋友在莫斯科——请在莫斯科或欧洲租用 VPS,而不是美国。

优化的实用建议

  • 在 Nginx 中禁用缓冲(proxy_buffering off)——这对视频流至关重要
  • 增加超时(proxy_read_timeout 36000s)——否则长电影会中断
  • 在 Nginx 中启用 HTTP/2——降低多个并行请求的开销
  • 仅对文本响应(元数据、API)使用 gzip,但不对视频流使用
  • 在代理级别设置封面和元数据的缓存——减少对家庭服务器的负担

安全性:如何保护服务器和用户数据

设置代理后,您已经显著提高了安全性,相比于打开端口。但还有一些重要的措施值得实施。

代理级别的身份验证

在 Nginx 级别添加基本的 HTTP 身份验证作为额外的屏障。即使有人找到了您的 URL——没有登录名和密码,他们也无法看到 Plex/Jellyfin 的界面。创建密码文件:

sudo htpasswd -c /etc/nginx/.htpasswd 用户名

但是请注意:Nginx 的基本身份验证可能与 Plex/Jellyfin 的 API 冲突。最好完全依赖这些服务内置的身份验证——它相当可靠。

IP 限制

如果您的朋友有静态 IP(或者他们愿意在更改时告诉您他们的 IP)——请在 Nginx 中添加白名单:

location / {
    allow 1.2.3.4;   # 朋友 1 的 IP
    allow 5.6.7.8;   # 朋友 2 的 IP
    deny all;
    proxy_pass http://localhost:32400;
}

Fail2ban 防止暴力破解

在 VPS 上安装 Fail2ban——它会自动阻止进行过多失败登录尝试的 IP 地址。这将保护 Nginx 和 VPS 上的 SSH:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

定期更新

定期更新 Plex/Jellyfin、Nginx 和 VPS 的操作系统。大多数媒体服务器的黑客攻击是通过过时版本软件中的已知漏洞进行的。为 VPS 设置自动安全更新:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades

监控和日志

设置 Nginx 日志查看以跟踪可疑活动。实时查看最近请求的命令:

sudo tail -f /var/log/nginx/access.log

注意异常的 User-Agent 请求、对 /admin/wp-admin 和其他标准路径的大量请求——这些都是自动扫描的迹象。

家庭媒体服务器的安全检查清单

  • ✅ 代理隐藏真实的家庭 IP
  • ✅ SSL 证书已安装并自动更新
  • ✅ Plex/Jellyfin 的端口未直接在路由器上打开
  • ✅ Plex/Jellyfin 仅在 localhost 上监听
  • ✅ Fail2ban 已在 VPS 上安装
  • ✅ VPS 上的 SSH 仅通过密钥(而非密码)工作
  • ✅ 启用安全自动更新
  • ✅ 为每个观众在 Plex/Jellyfin 中创建单独的帐户
  • ✅ 限制对管理部分的访问

结论和建议

为家庭 Plex 或 Jellyfin 媒体服务器设置代理是便利性、安全性和速度之间的平衡。打开路由器的端口提供了最大的速度,但对整个家庭网络构成了真实风险。代理解决了这个问题,增加了最小的延迟,但提供了正常的保护。

对于大多数家庭用户来说,最佳选择是在便宜的 VPS 上使用反向代理,通过 Caddy(更简单)或 Nginx(更灵活)结合 SSH 隧道或 WireGuard/Tailscale。这提供了一个稳定的 URL、SSL 加密,并完全控制谁以及如何连接到您的服务器。

如果您不仅使用 Plex 或 Jellyfin 与朋友分享内容,还访问外部元数据源、预告片或阻止服务器 IP 的插件——对于这些请求,住宅代理 非常合适:它们模拟普通家庭用户的流量,不会引起外部服务的怀疑。

对于那些希望以最小延迟最大化视频流隧道速度的人,值得关注 数据中心代理——它们提供高带宽和稳定的正常运行时间,这对 Full HD 和 4K 的无缝流媒体至关重要。

```