Jellyfin was 5 patch releases behind (10.11.6 -> 10.11.11). 10.11.7 and 10.11.10 contain disclosed CVE/GHSA security fixes. Upgraded via brew upgrade --cask jellyfin on indri; service verified healthy and externally reachable (HTTPS 200). Documented the recurring Gatekeeper gotcha: cask upgrades re-quarantine the .app and the launchd service hangs silently until the first-launch dialog is approved on indri's GUI console (xattr removal over SSH is blocked by macOS TCC). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
| title | modified | last-reviewed | tags | ||
|---|---|---|---|---|---|
| Jellyfin | 2026-06-08 | 2026-06-08 |
|
Jellyfin
Open-source media server running natively on indri for VideoToolbox hardware transcoding.
Quick Reference
| Property | Value |
|---|---|
| URL | https://jellyfin.ops.eblu.me |
| Local Port | 8096 |
| Data | ~/Library/Application Support/jellyfin |
| Media | /Volumes/allisonflix (NFS from sifaka) |
| LaunchAgent | mcquack.jellyfin |
Hardware Transcoding
Apple VideoToolbox on M1 Mac Mini.
| Codec | Support |
|---|---|
| H.264 encode/decode | Hardware |
| HEVC (H.265) encode/decode | Hardware |
| AV1 decode | Software (requires M3+) |
| HDR to SDR tone mapping | VPP (hardware) |
Concurrent 4K streams with HDR tonemapping: ~3
Configuration
Dashboard > Playback:
- Hardware Acceleration: Apple VideoToolbox
- Allow hardware encoding: Enabled
- VPP Tone mapping: Enabled
Upgrades
Installed via Homebrew cask (state: present, unpinned), so the Ansible role
won't bump an already-installed cask. To upgrade, run on indri:
brew upgrade --cask jellyfin
Gatekeeper gotcha: a cask upgrade replaces /Applications/Jellyfin.app and
re-applies the com.apple.quarantine xattr. When launchd respawns the service,
the new binary hangs silently — process alive but ~0 CPU, no logs, no listening
socket — because Gatekeeper is holding the first launch pending approval.
Removing the xattr over SSH fails (xattr -dr com.apple.quarantine ... →
"Operation not permitted", blocked by macOS TCC). Approve the first-launch
dialog on indri's GUI console (or run the xattr removal from a local Terminal
with Full Disk Access), then reload the LaunchAgent.
Observability
- Metrics:
jellyfin_metricsansible role - Logs: Forwarded via alloy
- Dashboard: "Jellyfin Media Server" in grafana