项目/家庭服务
家庭服务 · 运行中

家庭影音 Jellyfin

自建影音库,全家设备随时看电影剧集。

JellyfinDocker影音

它是什么

这是家里自建的影音库:电影和剧集放在 NAS 的 3TB 盘上,用 Jellyfin 统一管理和播放,手机、电脑、电视都能直接看。外网走 https://video.xiejun-server.top,在家就走内网 http://192.168.50.223:8096,速度更快;主页 https://xiejun-server.top 上也有「影音」卡片入口。

为什么做

公有平台片源分散、会员一直涨价,还得担心下架。自己的片子自己管:加片只要把文件丢进 NAS 对应目录,Jellyfin 自动扫描入库,海报和简介自动补齐。转码交给 .223 的 Intel Iris Plus 655 核显(VAAPI),电视盒子这类弱客户端也能流畅播放,不用额外买硬件。

现在什么状态

运行中。容器是 jellyfin/jellyfin:latest,compose 放在 /opt/jellyfin;公网链路是公网 443 → 香港 VPS 上的 frps 按 SNI 分流 → NPM 反代到 192.168.50.223:8096。最近修掉了国内 DNS 污染导致抓不到海报的问题:给容器指定本机 unbound,只把影视元数据域名经 SSH 隧道送到香港解析,普通域名仍走国内。媒体库现在是空的,等着放片。

功能

  • NAS 上的电影/剧集目录自动扫描入库,加片就是丢文件
  • Intel 核显 VAAPI 硬件转码,弱客户端也能流畅播
  • 手机/外网与内网双入口,主页有「影音」卡片
  • 公网 443 → 香港 VPS frps 按 SNI 分流 → NPM 反代
  • 自建 DNS 通道解决 TMDB 被污染、海报抓不到的问题
  • 带一键重装脚本与明确回退步骤

技术栈

JellyfinDocker ComposeNginx Proxy ManagerfrpVAAPIunbound

使用 / 部署教程

部署步骤

1. 准备目录 在宿主机建好设置与缓存目录,媒体目录只读挂载:

/opt/jellyfin/config    # 设置
/opt/jellyfin/cache     # 转码缓存
/nas/影音/电影          # 只读
/nas/影音/剧集          # 只读

2. 写 compose 放在 /opt/jellyfin/docker-compose.yml,镜像用 jellyfin/jellyfin:latest。端口映射 8096(HTTP)、7359/udp(客户端发现)、1900/udp(DLNA)。硬件转码把 /dev/dri/renderD128 传进容器,并指定 dns: [192.168.50.223, 223.5.5.5]。然后 docker compose up -d。

3. 首次向导 等日志出现 Main: Startup complete 再去走 /Startup/* 向导,否则会出现「向导标记完成但没建用户」,只能重建数据库。注意 /health 和 /System/Info/Public 提前就返回 200,不能当就绪判据。

4. 配媒体库 添加媒体库时路径要写容器内路径(如 /media/电影),不是宿主机路径。命名建议:电影 片名 (年份).mkv,一部一个文件夹;剧集 剧名/Season 01/剧名 S01E01.mkv。之后「控制台 → 媒体库 → 扫描媒体库」可手动触发。

5. 硬件转码 控制台里选 VAAPI,设备选 renderD128,实测 h264_vaapi 编码通过。

6. 公网入口 公网 443 打到香港 VPS 的 frps,按 SNI 分流,再由 NPM 用 12-jellyfin.conf 反代到 192.168.50.223:8096;frpc 侧加上 video.xiejun-server.top。

7. 海报抓不到怎么办 先 dig +short @192.168.50.223 api.themoviedb.org,回真实 CloudFront IP 才算正常;容器内直连 https://api.themoviedb.org/3/ 应返回 401。海报突然没了,先 systemctl restart dns-hk-tunnel。

回退:删掉 NPM 的 12-jellyfin.conf 并 reload,再删 frpc 里对应两行重启;彻底删除就 docker compose down && rm -rf /opt/jellyfin。

注意

  • 数据库文件 jellyfin.db 不要在服务运行时用外部 sqlite3 打开,会干扰 WAL 导致 malformed;要看就先复制文件或用只读模式
  • 账号口令属于家庭常用密码,别写进公开文档,建议单独设一个并定期更换
  • 海报依赖香港隧道与 unbound,链路断了只是抓不到元数据,但记得开机自启和备份 frpc/NPM 配置