🎬 NAS买回来只当网盘用?Plex/Emby会员费太贵?本文手把手教你搭建完全免费的家庭影院!


为什么你需要 Jellyfin?

先说结论:如果你在意免费+开源+硬解,Jellyfin 是唯一选择。

我身边很多朋友买了NAS之后,装了群晖、绿联或威联通,结果它就安静地躺在角落当网盘用。偶尔想看个电影,还得把文件下载到本地,或者忍受网页播放的卡顿——这种体验,怎么说呢,有点像买了辆跑车却只用来买菜。

更让人肉疼的是,想要流畅播放4K视频,Plex要买终身会员($119.99),Emby也要Premier订阅。就为了一个硬件转码功能,掏这么多钱? 换言之,你的核显明明闲着,却还要额外付费才能用上它。

Jellyfin 完美解决了这个痛点——完全免费、开源、硬件转码免费。简单来说,它就是 Plex 的"开源平替",而且功能丝毫不差。


Jellyfin vs Plex vs Emby:一张表说清楚

特性JellyfinPlexEmby
💰 价格完全免费免费版受限 / Pass $119.99终身免费版受限 / Premier $119终身
🔓 开源✅ 完全开源❌ 闭源❌ 部分开源
🖥️ 硬件转码✅ 免费❌ 需Plex Pass❌ 需Premier
🌐 远程访问需自行配置一键中继需自行配置
📱 客户端免费部分收费部分收费

💡 Jellyfin 唯一的"缺点"是远程访问需要自己配置,但别担心,本文后面会教你用 Tailscale 5分钟搞定——比你泡一杯咖啡的时间还短。


安装教程:群晖/绿联/威联通全平台覆盖

方案一:群晖 Docker 安装(推荐)

群晖是目前最主流的NAS系统,而 Docker 安装是最灵活的方式。举个例子,它就像用乐高积木搭建——想怎么组合随你心意。

Step 1:创建目录结构

在群晖文件管理器中创建以下目录:

/docker/jellyfin/
├── config    # 配置文件
├── cache     # 缓存目录
└── media     # 媒体文件
    ├── movies    # 电影
    └── tv        # 电视剧

Step 2:Docker Compose 配置

创建 docker-compose.yml 文件:

version: "3"
services:
  jellyfin:
    image: nyanmisaka/jellyfin:latest  # 推荐!预置硬解支持
    container_name: jellyfin
    restart: unless-stopped
    ports:
      - 8096:8096
    volumes:
      - /volume1/docker/jellyfin/config:/config
      - /volume1/docker/jellyfin/cache:/cache
      - /volume1/video:/media  # 你的媒体目录
    devices:
      - /dev/dri:/dev/dri  # Intel核显直通,硬解必需!
    environment:
      - TZ=Asia/Shanghai

⚠️ 重要提示:强烈推荐使用 nyanmisaka/jellyfin 镜像,而不是官方镜像。为什么?这个镜像预置了中文字体、硬解驱动,省去大量配置工作。用官方的还要自己配字体,何必呢?

Step 3:启动容器

docker-compose up -d

Step 4:访问配置

浏览器打开 http://你的NAS-IP:8096,按向导完成初始化:

  • 语言选择:Chinese
  • 地区选择:People's Republic of China
  • 创建管理员账号

到这里,你已经完成了基础安装——是不是比想象的简单?


方案二:绿联/威联通 Docker 安装

配置基本相同,只需调整挂载路径。简单来说,就是把地址换一下而已:

绿联 UGOS:

volumes:
  - /mnt/media_rw/docker/jellyfin/config:/config
  - /mnt/media_rw/docker/jellyfin/cache:/cache
  - /mnt/media_rw/video:/media

威联通 QTS:

volumes:
  - /share/Container/jellyfin/config:/config
  - /share/Container/jellyfin/cache:/cache
  - /share/Multimedia:/media

方案三:Arch Linux 本地安装(详细版)

Arch Linux 是追求极简和最新软件的 Linux 发行版,非常适合作为家庭服务器。如果你也是"用最新软件才有安全感"的人,这个方案适合你。


Step 1:安装 Jellyfin 包

好消息!Jellyfin 已进入 Arch 官方仓库,无需折腾 AUR:

# 安装服务端 + Web 界面
sudo pacman -S jellyfin-server jellyfin-web

# 可选:安装 ffmpeg(用于转码)
sudo pacman -S jellyfin-ffmpeg

💡 包说明:

  • jellyfin-server:核心服务端,大脑
  • jellyfin-web:Web 管理界面,颜值担当
  • jellyfin-ffmpeg:针对 Jellyfin 优化的 ffmpeg 版本,转码利器


Step 2:启动 Jellyfin 服务

# 启动服务
sudo systemctl start jellyfin.service

# 设置开机自启
sudo systemctl enable jellyfin.service

# 查看运行状态
sudo systemctl status jellyfin.service

首次启动后,Jellyfin 会在 /var/lib/jellyfin/ 创建配置和数据目录。

浏览器访问:http://你的IP地址:8096(如 http://192.168.31.9:8096)完成初始化向导。


Step 3:配置文件权限(重要!)

这是 Arch Linux 安装最常见的坑! 我当时在这里卡了半天,特地记录下来帮你避雷。

Jellyfin 以 jellyfin 用户运行,默认无法访问你的 home 目录。为什么会这样?因为 Linux 的权限隔离机制——它很安全,但也很"不近人情"。

方案 A:使用 ACL 授权已有目录(推荐)

如果你的媒体文件已经在某个目录(比如迅雷下载目录),使用 ACL 精确授权最可靠:

# 安装 ACL 工具
sudo pacman -S acl

# 使用 ACL 给 jellyfin 用户授权(替换为你的实际路径)
sudo setfacl -m u:jellyfin:rx /home/你的用户名
sudo setfacl -m u:jellyfin:rx /home/你的用户名/媒体目录
sudo setfacl -R -m u:jellyfin:rx /home/你的用户名/媒体目录

# 重启服务
sudo systemctl restart jellyfin

⚠️ 不要使用 usermod -aG 把 jellyfin 加入你的用户组! 为什么?因为你的 home 目录组权限通常是空的(---),加入用户组反而会导致权限匹配失败。这就像给人发了钥匙,但门锁根本不认这把钥匙。ACL 方式直接指定用户权限,更精确可靠。

💡 这样配置后,下载目录的电影/剧集会自动出现在 Jellyfin 媒体库中,无需手动移动文件。一次配置,终身省心。

方案 B:创建专用媒体目录

如果你想单独管理媒体文件,可以创建专用目录(权限配置更简单):

# 创建媒体目录
sudo mkdir -p /media/jellyfin/{movies,tv,music}

# 设置权限
sudo chown -R $USER:$USER /media/jellyfin
sudo chmod -R 755 /media/jellyfin

在 Jellyfin 中添加媒体库时,指向 /media/jellyfin/movies 等目录即可。

⚠️ 注意:外接硬盘如果是桌面环境自动挂载的(通过 FUSE),Jellyfin 也无法访问。需要在 /etc/fstab 中手动配置挂载点。这个坑我也踩过,简单来说,就是「自动挂载」和「权限隔离」天生不合。

网页端配置时添加你的目录:


Step 4:Intel QSV 硬件转码配置

如果你的 CPU 有 Intel 核显(6代酷睿及以上),可以启用 QSV 硬解,大幅降低 CPU 占用。换言之,让核显干活,而不是 CPU 受累。

安装必要驱动:

# 安装 Intel 媒体驱动(QSV 必需!)
sudo pacman -S vpl-gpu-rt

# 安装监控工具(可选)
sudo pacman -S intel-gpu-tools

💡 vpl-gpu-rt 是 Intel OneVPL GPU Runtime,Jellyfin 的 jellyfin-ffmpeg 依赖此包进行硬件加速。没装这个,核显就只能干瞪眼。

验证核显是否可用:

# 查看渲染设备
ls -la /dev/dri/
# 应该看到:card0, card1, renderD128 等

# 检查 jellyfin 用户是否有权限
groups jellyfin
# 应该包含 render 或 video 组

# 如果没有,手动添加
sudo usermod -aG render jellyfin
sudo usermod -aG video jellyfin
sudo systemctl restart jellyfin

在 Jellyfin 中启用硬解:

  1. 进入:控制台 → 播放 → 转码
  2. 硬件加速选择:Intel QuickSync (QSV)
  3. 勾选:启用硬件解码 下的所有格式
  4. 勾选:启用硬件编码
  5. 保存

验证硬解生效:

# 播放一个需要转码的视频,然后执行:
sudo intel_gpu_top

# 如果看到 Video 引擎有负载,说明硬解生效

看到 Video 引擎跳动起来的那一刻,成就感拉满。


Step 5:常见问题排查

问题1:Jellyfin 检测不到媒体文件夹

# 检查目录权限
sudo -u jellyfin ls /path/to/media

# 如果报错 Permission denied,执行:
sudo chmod -R 755 /path/to/media

问题2:更新后跳转到初始化向导

这是已知 Bug,修复方法:

# 编辑配置文件
sudo nano /etc/jellyfin/system.xml

# 确保以下值为 true
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>

# 重启服务
sudo systemctl restart jellyfin

问题3:转码路径错误导致直播失败

如果使用 TVHeadend 插件,检查转码路径:

  • ✅ 正确:/var/transcode
  • ❌ 错误:/var/transcode/(多了斜杠)

就一个斜杠的差别,能折腾你一下午——别问我怎么知道的。


Step 6:配置 Nginx 反向代理(可选)

如果需要通过域名访问并启用 HTTPS,这一步适合你:

# 安装 Nginx 和 Certbot
sudo pacman -S nginx certbot certbot-nginx

创建配置文件 /etc/nginx/sites-available/jellyfin.conf:

server {
    listen 80;
    server_name your.domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your.domain.com;

    ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1: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;
        proxy_buffering off;
    }

    location /socket {
        proxy_pass http://127.0.0.1:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}
# 启用配置并重启
sudo mkdir -p /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/jellyfin.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

方案四:Windows 本地安装

如果你用的是 Windows 系统,那恭喜你,这是最省事的方案:

  1. 访问 jellyfin.org/downloads 下载安装包
  2. 双击运行,按向导安装
  3. 安装完成后访问 http://localhost:8096

💡 Windows 版自带托盘图标,支持开机自启,配置相对简单。说实话,如果不是为了折腾,Windows 版真挺省心的。


⚠️ 避坑指南:这些坑我帮你踩过了

接下来是全文最有价值的部分——我踩过的坑,你不用再踩一遍。

坑1:Docker 镜像拉取失败

症状:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled

原因:国内网络访问 Docker Hub 不稳定。嗯,你懂的。

解决方案:配置国内镜像加速

# 编辑或创建 /etc/docker/daemon.json
sudo nano /etc/docker/daemon.json

添加以下内容:

{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}

重启 Docker:

sudo systemctl restart docker

坑2:硬件转码不生效,CPU 100%

症状:播放视频时 CPU 占用飙到100%,风扇狂转,但明明有核显

原因:没有正确配置设备直通。核显虽然在,但 Docker 容器"看不见"它。

解决方案:

Intel 核显(最常见): 在 docker-compose.yml 中添加:

devices:
  - /dev/dri:/dev/dri

验证是否生效:

# 进入容器
docker exec -it jellyfin bash

# 查看是否识别到核显
ls -la /dev/dri/
# 应该看到 card0, renderD128 等设备

# 播放视频时监控核显负载
intel_gpu_top

在 Jellyfin 后台开启硬解: 控制台 → 播放 → 转码 → 硬件加速 选择 Video Acceleration API (VAAPI)


坑3:海报墙全是灰色,刮削失败

症状:媒体库扫描完成,但封面全是灰色占位图

原因:默认刮削器 TMDB 在国内访问不稳定。又是网络问题。

解决方案:安装 MetaShark 插件

  1. 进入 控制台 → 插件 → 存储库 → 添加
  2. 填入国内加速地址:
https://ghproxy.com/https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest_cn.json
  1. 在插件目录找到 MetaShark 并安装
  2. 重启 Jellyfin 容器(这步别忘了!)
  3. 在媒体库设置中将 MetaShark 设为首选元数据提供商

安装完刷新媒体库,看着海报墙一张张被填满,那种满足感不亚于吃火锅时肉刚好熟了。


坑4:外网无法访问

症状:家里内网正常播放,出门后打不开

解决方案对比:

方案难度成本推荐场景
Tailscale⭐免费个人/家庭使用首选
frp 内网穿透⭐⭐⭐需云服务器有服务器资源
DDNS + 端口转发⭐⭐免费有公网IP

Tailscale 极简配置(5分钟搞定):

  1. 注册 Tailscale 账号
  2. NAS 上安装 Tailscale 客户端
  3. 手机/电脑安装 Tailscale 客户端
  4. 全部登录同一账号
  5. 使用 Tailscale 分配的内网IP访问 Jellyfin

💡 Tailscale 的原理是建立设备间的点对点 VPN 隧道,不经过公网,速度快且安全。简单来说,就像给你的所有设备拉了一条专线,走到哪都像在家里。


客户端推荐

平台推荐客户端说明
🌐 Web直接浏览器访问http://IP:8096
📱 iOSSwiftfinApp Store 免费下载
🤖 AndroidFindroidPlay Store / GitHub
📺 Android TVJellyfin for Android TV官方客户端
🍎 Apple TVSwiftfintvOS 版本
💻 WindowsJellyfin Media Player官方桌面客户端

💡 小建议:iOS 用户首选 Swiftfin,界面比官方客户端好看太多;Android 用户试试 Findroid,流畅度更佳。


效果展示

完成以上配置后,你将获得:

  • 🎬 精美的海报墙:自动刮削电影/电视剧封面、简介、评分
  • 📱 多端同步:手机、平板、电视、电脑随时续播
  • ⚡ 流畅硬解:4K HDR 也能流畅转码播放
  • 🌍 随时随地:通过 Tailscale 外网也能秒开

愉快的追剧吧!🍿


写在最后

Jellyfin 是目前最值得推荐的开源家庭影院方案。虽然配置比 Plex 稍复杂,但一次配好,终身免费——这笔账怎么算都划算。

折腾的过程本身也很有趣。从一开始对着一堆报错抓耳挠腮,到最后看着精美的海报墙怦然心动,这种从无序到有序的掌控感,大概就是我们这些"折腾党"乐此不疲的原因吧。

如果你在配置过程中遇到问题,欢迎评论区留言,我会尽量解答~

0成本搭建私人影视库|告别会员费,NAS秒变追剧神器 | 新青年talks