在 Ubuntu 22.04 LTS 上安装 Jellyfin 时,可能会遇到服务无法正常启动的问题。以下记录一次完整的排查和修复过程,供后续参考。


问题现象

通过官方脚本或 APT 安装 Jellyfin 后,执行 systemctl status jellyfin.service 得到以下报错:

× jellyfin.service - Jellyfin Media Server
     Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/jellyfin.service.d
             └─jellyfin.service.conf
     Active: failed (Result: exit-code) ...
    Process: ... ExecStart=/usr/bin/jellyfin ...
   Main PID: ... (code=exited, status=200/CHDIR)

关键提示是 status=200/CHDIR,表示 systemd 在切换工作目录时失败,常见原因是目录不存在或无权限。


排查步骤

  1. 确认服务配置 systemctl cat jellyfin 检查 WorkingDirectory 和相关环境变量是否正确。
  2. 检查目录及权限
    默认情况下,Jellyfin 使用以下目录:
    • /etc/jellyfin:配置文件
    • /var/lib/jellyfin:应用数据
    • /var/log/jellyfin:日志目录
    检查它们是否存在,并确保属主为 jellyfin 用户: ls -ld /etc/jellyfin /var/lib/jellyfin /var/log/jellyfin
  3. 发现问题
    部分目录和文件被错误地设置为 tcpdumptssroot 用户,导致 Jellyfin 无法进入工作目录。
  4. 修复权限
    将相关目录和文件归还给 jellyfin 用户: sudo chown -R jellyfin:jellyfin /var/lib/jellyfin sudo chown -R jellyfin:jellyfin /etc/jellyfin sudo chown -R jellyfin:jellyfin /var/log/jellyfin 如果媒体库放在用户主目录,也需授予 Jellyfin 访问权限,可选择直接更改属主,或通过 ACL 授权: sudo setfacl -R -m u:jellyfin:rx "/path/to/Media Library" sudo setfacl -dR -m u:jellyfin:rx "/path/to/Media Library"
  5. 重启服务 sudo systemctl daemon-reload sudo systemctl restart jellyfin systemctl status jellyfin 服务成功进入 active (running) 状态。

验证结果

日志显示 Jellyfin 已正确绑定到内网地址:

[INF] Bind Addresses ["0.0.0.0"]
[INF] Filtered interface addresses: ["127.0.0.1", "192.168.2.101", ...]

在浏览器中访问:

http://<服务器IP>:8096

即可进入初始化向导。


总结与经验

  • status=200/CHDIR 通常意味着工作目录权限或路径问题。
  • 确保 /etc/jellyfin/var/lib/jellyfin/var/log/jellyfin 属主为 jellyfin 用户。
  • 媒体库目录建议保持原属主,仅通过 ACL 授权 jellyfin 访问,避免日常操作受限。
  • 排查问题时,可结合 journalctl -u jellyfin 查看详细日志。

通过以上步骤,Jellyfin 服务成功启动,系统恢复正常使用。

Leave a Reply

Your email address will not be published. Required fields are marked *