Phase 2: Add Reference section with 24 technical reference cards (#88)
## Summary
- Create `docs/reference/` section with 24 technical reference cards
- Services (16): alloy, argocd, borgmatic, 1password, forgejo, grafana, jellyfin, kiwix, loki, miniflux, navidrome, postgresql, prometheus, teslamate, transmission, zot
- Infrastructure (3): hosts, tailscale, routing
- Kubernetes (2): cluster, apps
- Storage (2): sifaka, backups
- Update README to mark Phase 2 as complete
- Add towncrier changelog fragment
## Deployment and Testing
- [ ] Build docs locally to verify wiki-links resolve
- [ ] Deploy via ArgoCD and verify at docs.ops.eblu.me/reference/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/88
2026-02-03 14:27:37 -08:00
|
|
|
---
|
2026-02-07 21:44:57 -08:00
|
|
|
title: Jellyfin
|
2026-06-08 06:35:23 -07:00
|
|
|
modified: 2026-06-08
|
|
|
|
|
last-reviewed: 2026-06-08
|
Phase 2: Add Reference section with 24 technical reference cards (#88)
## Summary
- Create `docs/reference/` section with 24 technical reference cards
- Services (16): alloy, argocd, borgmatic, 1password, forgejo, grafana, jellyfin, kiwix, loki, miniflux, navidrome, postgresql, prometheus, teslamate, transmission, zot
- Infrastructure (3): hosts, tailscale, routing
- Kubernetes (2): cluster, apps
- Storage (2): sifaka, backups
- Update README to mark Phase 2 as complete
- Add towncrier changelog fragment
## Deployment and Testing
- [ ] Build docs locally to verify wiki-links resolve
- [ ] Deploy via ArgoCD and verify at docs.ops.eblu.me/reference/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/88
2026-02-03 14:27:37 -08:00
|
|
|
tags:
|
|
|
|
|
- service
|
|
|
|
|
- media
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# 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:
|
|
|
|
|
1. Hardware Acceleration: Apple VideoToolbox
|
|
|
|
|
2. Allow hardware encoding: Enabled
|
|
|
|
|
3. VPP Tone mapping: Enabled
|
|
|
|
|
|
2026-06-08 06:35:23 -07:00
|
|
|
## Upgrades
|
|
|
|
|
|
|
|
|
|
Installed via Homebrew cask (`state: present`, unpinned), so the Ansible role
|
|
|
|
|
won't bump an already-installed cask. To upgrade, run on indri:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
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.
|
|
|
|
|
|
Phase 2: Add Reference section with 24 technical reference cards (#88)
## Summary
- Create `docs/reference/` section with 24 technical reference cards
- Services (16): alloy, argocd, borgmatic, 1password, forgejo, grafana, jellyfin, kiwix, loki, miniflux, navidrome, postgresql, prometheus, teslamate, transmission, zot
- Infrastructure (3): hosts, tailscale, routing
- Kubernetes (2): cluster, apps
- Storage (2): sifaka, backups
- Update README to mark Phase 2 as complete
- Add towncrier changelog fragment
## Deployment and Testing
- [ ] Build docs locally to verify wiki-links resolve
- [ ] Deploy via ArgoCD and verify at docs.ops.eblu.me/reference/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/88
2026-02-03 14:27:37 -08:00
|
|
|
## Observability
|
|
|
|
|
|
|
|
|
|
- Metrics: `jellyfin_metrics` ansible role
|
2026-02-04 17:21:34 -08:00
|
|
|
- Logs: Forwarded via [[alloy|Alloy]]
|
2026-02-03 16:06:35 -08:00
|
|
|
- Dashboard: "Jellyfin Media Server" in [[grafana]]
|
Phase 2: Add Reference section with 24 technical reference cards (#88)
## Summary
- Create `docs/reference/` section with 24 technical reference cards
- Services (16): alloy, argocd, borgmatic, 1password, forgejo, grafana, jellyfin, kiwix, loki, miniflux, navidrome, postgresql, prometheus, teslamate, transmission, zot
- Infrastructure (3): hosts, tailscale, routing
- Kubernetes (2): cluster, apps
- Storage (2): sifaka, backups
- Update README to mark Phase 2 as complete
- Add towncrier changelog fragment
## Deployment and Testing
- [ ] Build docs locally to verify wiki-links resolve
- [ ] Deploy via ArgoCD and verify at docs.ops.eblu.me/reference/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/88
2026-02-03 14:27:37 -08:00
|
|
|
|
|
|
|
|
## Related
|
|
|
|
|
|
2026-02-03 16:06:35 -08:00
|
|
|
- [[navidrome]] - Music streaming
|
2026-02-04 17:21:34 -08:00
|
|
|
- [[sifaka|Sifaka]] - Media storage
|