在 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 在切换工作目录时失败,常见原因是目录不存在或无权限。
排查步骤
- 确认服务配置
systemctl cat jellyfin检查WorkingDirectory和相关环境变量是否正确。 - 检查目录及权限
默认情况下,Jellyfin 使用以下目录:/etc/jellyfin:配置文件/var/lib/jellyfin:应用数据/var/log/jellyfin:日志目录
jellyfin用户:ls -ld /etc/jellyfin /var/lib/jellyfin /var/log/jellyfin - 发现问题
部分目录和文件被错误地设置为tcpdump、tss或root用户,导致 Jellyfin 无法进入工作目录。 - 修复权限
将相关目录和文件归还给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" - 重启服务
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 服务成功启动,系统恢复正常使用。