🎬 NAS买回来只当网盘用?Plex/Emby会员费太贵?本文手把手教你搭建完全免费的家庭影院!
为什么你需要 Jellyfin?
先说结论:如果你在意免费+开源+硬解,Jellyfin 是唯一选择。
我身边很多朋友买了NAS之后,装了群晖、绿联或威联通,结果它就安静地躺在角落当网盘用。偶尔想看个电影,还得把文件下载到本地,或者忍受网页播放的卡顿——这种体验,怎么说呢,有点像买了辆跑车却只用来买菜。
更让人肉疼的是,想要流畅播放4K视频,Plex要买终身会员($119.99),Emby也要Premier订阅。就为了一个硬件转码功能,掏这么多钱? 换言之,你的核显明明闲着,却还要额外付费才能用上它。
Jellyfin 完美解决了这个痛点——完全免费、开源、硬件转码免费。简单来说,它就是 Plex 的"开源平替",而且功能丝毫不差。
Jellyfin vs Plex vs Emby:一张表说清楚
| 特性 | Jellyfin | Plex | Emby |
|---|---|---|---|
| 💰 价格 | 完全免费 | 免费版受限 / 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 中启用硬解:
- 进入:
控制台 → 播放 → 转码 - 硬件加速选择:
Intel QuickSync (QSV) - 勾选:
启用硬件解码下的所有格式 - 勾选:
启用硬件编码 - 保存

验证硬解生效:
# 播放一个需要转码的视频,然后执行:
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 系统,那恭喜你,这是最省事的方案:
- 访问 jellyfin.org/downloads 下载安装包
- 双击运行,按向导安装
- 安装完成后访问
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 插件
- 进入
控制台 → 插件 → 存储库 → 添加 - 填入国内加速地址:
https://ghproxy.com/https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest_cn.json
- 在插件目录找到
MetaShark并安装 - 重启 Jellyfin 容器(这步别忘了!)
- 在媒体库设置中将 MetaShark 设为首选元数据提供商
安装完刷新媒体库,看着海报墙一张张被填满,那种满足感不亚于吃火锅时肉刚好熟了。
坑4:外网无法访问
症状:家里内网正常播放,出门后打不开
解决方案对比:
| 方案 | 难度 | 成本 | 推荐场景 |
|---|---|---|---|
| Tailscale | ⭐ | 免费 | 个人/家庭使用首选 |
| frp 内网穿透 | ⭐⭐⭐ | 需云服务器 | 有服务器资源 |
| DDNS + 端口转发 | ⭐⭐ | 免费 | 有公网IP |
Tailscale 极简配置(5分钟搞定):
- 注册 Tailscale 账号
- NAS 上安装 Tailscale 客户端
- 手机/电脑安装 Tailscale 客户端
- 全部登录同一账号
- 使用 Tailscale 分配的内网IP访问 Jellyfin
💡 Tailscale 的原理是建立设备间的点对点 VPN 隧道,不经过公网,速度快且安全。简单来说,就像给你的所有设备拉了一条专线,走到哪都像在家里。
客户端推荐
| 平台 | 推荐客户端 | 说明 |
|---|---|---|
| 🌐 Web | 直接浏览器访问 | http://IP:8096 |
| 📱 iOS | Swiftfin | App Store 免费下载 |
| 🤖 Android | Findroid | Play Store / GitHub |
| 📺 Android TV | Jellyfin for Android TV | 官方客户端 |
| 🍎 Apple TV | Swiftfin | tvOS 版本 |
| 💻 Windows | Jellyfin Media Player | 官方桌面客户端 |
💡 小建议:iOS 用户首选 Swiftfin,界面比官方客户端好看太多;Android 用户试试 Findroid,流畅度更佳。
效果展示
完成以上配置后,你将获得:
- 🎬 精美的海报墙:自动刮削电影/电视剧封面、简介、评分
- 📱 多端同步:手机、平板、电视、电脑随时续播
- ⚡ 流畅硬解:4K HDR 也能流畅转码播放
- 🌍 随时随地:通过 Tailscale 外网也能秒开
愉快的追剧吧!🍿


写在最后
Jellyfin 是目前最值得推荐的开源家庭影院方案。虽然配置比 Plex 稍复杂,但一次配好,终身免费——这笔账怎么算都划算。
折腾的过程本身也很有趣。从一开始对着一堆报错抓耳挠腮,到最后看着精美的海报墙怦然心动,这种从无序到有序的掌控感,大概就是我们这些"折腾党"乐此不疲的原因吧。
如果你在配置过程中遇到问题,欢迎评论区留言,我会尽量解答~