需求

家庭有多人要看剧和电影,有时候想投屏,有时候想在外网访问。目标是:所有设备都能看、内外网都能访问

整体架构

NAS (UGREEN DH4300 Plus)
  ├─ Jellyfin          媒体库管理 + 转码 + Web界面
  ├─ AList             聚合云盘(阿里云盘/百度网盘/115)
  └─ 物理存储          电影/剧集/照片
        ↓
路由器 (华为 Q6 mesh)
  ├─ 母路由  → 主卧/客厅
  └─ 子路由  → 电视房(1 LAN口 + 交换机)
        ↓
电视房设备
  ├─ 创维 Android TV   运行 Kodi / TVBox
  ├─ IPTV 机顶盒       走独立网络
  └─ 交换机            扩展 LAN 口
        ↓
公网访问
  ├─ frp (ECS)         端口映射到公网
  └─ Tailscale         全节点组网

Jellyfin 部署

Jellyfin 是开源的媒体服务器,功能和 Emby/Plex 类似,但完全免费。

docker run -d \
  --name jellyfin \
  --network host \
  -v /path/to/media:/media \
  -v jellyfin-config:/config \
  -v jellyfin-cache:/cache \
  linuxserver/jellyfin:latest

主要配置:
- 媒体库:指向 NAS 上的电影/剧集目录
- 封面获取:Jellyfin 自动刮削 TMDB/TVDB 封面和简介
- 转码:Jellyfin 支持实时转码,电视盒直接播放不用下载

内网访问 http://<NAS_IP>:8096,外网通过 frp 映射到 ECS 的 8444 端口。

AList 云盘聚合

我有很多资源存在各个云盘里,AList 可以把它们聚合在一起,提供统一的 WebDAV / 直链访问。

docker run -d \
  --name alist \
  -p 43275:5244 \
  -v /etc/alist:/opt/alist/data \
  -e PUID=0 -e PGID=0 \
  xhofe/alist:latest

目前接入了:
- 阿里云盘(2025年7月停个人开发者API,实际使用中需要处理)
- 百度网盘
- 115

阿里云盘有个坑:2025年7月后个人开发者 API 停了,只能用网页 Cookie 方式挂载。302 直链方案可以省 ECS 带宽——文件直接由云盘服务器吐给用户,不走 ECS 流量。

外网通过 frp 映射 ECS 的 8445 端口访问。

电视端方案

创维 Android TV + Kodi

电视是创维的 Android TV,跑了 Kodi:
- Jellyfin 插件:Kodi 里装 Jellyfin Connetion Manager,直接播放 Jellyfin 媒体库
- 本地播放:有些资源直接存电视 SD 卡,用 Kodi 播放

Kodi 配置 Jellyfin 很简单:设置 → 服务 → UPnP/DLNA → 启用"允许 Kodi 作为 Jellyfin 服务器",然后在 Jellyfin 后台添加 Kodi 客户端。

TVBox

备用方案,Android TV 上装了 TVBox 直播点播聚合 APK,有些直播源比 Kodi 方便。

IPTV 问题

电视房的 IPTV 机顶盒走的是 ISP 独立网络(不占用宽带带宽),但华为 Q6 子路由只有 1 个 LAN 口。我用 TP-Link 8口交换机扩展,同时接了 NAS 和机顶盒。

目前 IPTV 配置参考了社区方案:
- 光猫改桥接,路由器拨号
- IPTV 单独 VLAN
- 交换机端口镜像/Tagged 方式透传

还没完全调通,直播源偶尔不稳定,继续研究中。

公网访问

内网穿透方案:
- Tailscale:手机/电脑在外网通过 Tailscale 直连 NAS
- frp:浏览器直接访问固定域名(https://video.ttc.sx.cn 等)

Tailscale 体验更好(延迟低),但需要装客户端。frp 适合临时访问和分享给朋友。

效果

目前这套方案能覆盖:
- 家里电视看 4K 电影(Kodi + Jellyfin)
- 手机在外网看剧(Tailscale + AList 直链)
- 电脑直接下载 NAS 资源(SMB/WebDAV)

下一步考虑加上 Radarr/Sonarr 自动下载,实现追剧自动化。