需求
家庭有多人要看剧和电影,有时候想投屏,有时候想在外网访问。目标是:所有设备都能看、内外网都能访问。
整体架构
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 自动下载,实现追剧自动化。