Ubuntu 下 Jellyfin 用户与权限配置
一 系统用户与目录权限
- 使用系统服务专用的 jellyfin 用户运行服务,避免以 root 直接运行:
- 创建系统用户:sudo adduser --system --group --disabled-login --no-create-home jellyfin
- 修正关键目录属主,确保 Jellyfin 可读写其数据与日志:
- 数据目录:sudo chown -R jellyfin:jellyfin /var/lib/jellyfin
- 日志目录:sudo chown -R jellyfin:jellyfin /var/log/jellyfin
- 媒体库目录权限建议(更安全的最小权限):
- 将媒体目录所属组设为 jellyfin,并仅赋予组读/执行(目录)与读(文件)权限:
- 设组:sudo chgrp -R jellyfin /path/to/media
- 目录权限:sudo find /path/to/media -type d -exec chmod 0755 {} ;
- 文件权限:sudo find /path/to/media -type f -exec chmod 0644 {} ;
- 可选增强:若需写入(如字幕下载、缓存),仅对需要的子目录加写:sudo chmod 0775 /path/to/media/Subtitles
- 启动与开机自启:
- sudo systemctl start jellyfin
- sudo systemctl enable jellyfin
- 验证与排错:
- 查看服务状态:sudo systemctl status jellyfin
- 实时查看日志:sudo tail -f /var/log/jellyfin/jellyfin.log
以上要点可确保运行账户、目录与日志的权限正确,减少因权限不足导致的媒体扫描与播放失败。
二 媒体库访问与访问控制
- Jellyfin 的“用户与权限”主要在 Web 管理端配置:
- 创建多个用户,并为每个用户分配各自的媒体库可见性与播放权限(如禁止下载、限制播放等)。
- 通过“用户—媒体库”授权模型,精细化控制每位用户对电影、剧集、音乐等库的访问与操作范围。
- 网络访问控制与加固:
- 仅在内网开放时,使用 UFW 限制来源或端口:例如仅允许局域网段访问 8096/tcp,或直接禁用外网直连、仅允许反向代理端口。
- 对外服务建议启用 HTTPS(如 Nginx/Apache + Let’s Encrypt),并在反向代理层做访问限制与速率限制。
- 云服务器需同时放行云厂商安全组的 8096 端口(或代理端口)。
- 反向代理示例(Nginx,仅作要点):
- 将域名或 IP 的 80/443 转发至 http://127.0.0.1:8096,并设置必要的请求头(Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto),WebSocket 路径(/socket)按需代理。
- 启用后,建议仅暴露 443,关闭对外 8096 直连。
以上措施覆盖 Jellyfin 应用层多用户授权与外部访问控制,兼顾可用性与安全性。
三 常见问题与快速修复
- 媒体扫描不到或权限被拒:
- 确认媒体目录对 jellyfin 用户可读(目录 755、文件 644,必要时将目录组设为 jellyfin 并赋予组读/执行)。
- 查看日志定位:sudo tail -f /var/log/jellyfin/jellyfin.log
- 日志目录不可写导致启动失败或无法写入日志:
- 修正属主:sudo chown -R jellyfin:jellyfin /var/log/jellyfin
- 端口与防火墙:
- 直连访问需放行 8096/tcp(UFW:sudo ufw allow 8096/tcp);若经由反向代理,仅暴露代理端口更稳妥。
- 外部访问异常:
- 核对云安全组与 UFW 规则、反向代理配置与证书是否正确生效。
以上为高频故障的快速处置路径,可先查日志再校核权限与网络策略。
四 进阶安全建议
- 以 Docker 部署实现进程与文件系统隔离,降低对宿主机的影响。
- 保持系统与 Jellyfin 的及时更新,修补已知漏洞。
- 全链路启用 HTTPS,并在反向代理层配置访问控制、缓存与限流。
- 仅授予 jellyfin 运行所需的最小权限,避免赋予不必要的系统权限或 sudo 能力。
- 如可用,为管理员启用 MFA(多因素认证)提升账户安全。
这些做法能显著提升运行安全与可维护性,建议在生产环境中优先采用。