## Summary - Quartz's "shortest" path mode resolves wiki-links by **filename**, not frontmatter title - Previous PR used title-based links like `[[Grafana Alloy]]` which looked for non-existent `Grafana-Alloy.md` - Now using filename-based links like `[[alloy|Grafana Alloy]]` which correctly resolve ## Changes - Rename zk duplicate files with `-log` suffix (e.g., `argocd.md` → `argocd-log.md`) - Rename `reference/storage/postgresql.md` to `postgresql-storage.md` - Convert all 175 wiki-links from `[[Title]]` to `[[filename|Title]]` format - Rename `doc-card-titles` task to `doc-filenames` (checks filename uniqueness, not titles) - Update pre-commit hook for renamed task ## Deployment and Testing - [x] Pre-commit hooks pass - [x] `mise run doc-filenames` shows no duplicate filenames - [ ] Verify wiki-links work correctly in Quartz build 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/90
2.5 KiB
2.5 KiB
| id | tags | |
|---|---|---|
| jellyfin-log |
|
Jellyfin Management Log
Jellyfin is a free, open-source media server running natively on indri for full VideoToolbox hardware transcoding support.
Service Details
- URL: https://jellyfin.ops.eblu.me
- Port: 8096 (localhost only, proxied via Caddy)
- Data directory:
~/Library/Application Support/jellyfin - Media path:
/Volumes/allisonflix(NFS from sifaka) - LaunchAgent:
mcquack.jellyfin
Useful Commands
# Check LaunchAgent status
ssh indri 'launchctl list | grep jellyfin'
# View logs
ssh indri 'tail -f ~/Library/Logs/mcquack.jellyfin.err.log'
# Check port is listening
ssh indri 'lsof -nP -iTCP:8096 -sTCP:LISTEN'
# Restart Jellyfin
ssh indri 'launchctl unload ~/Library/LaunchAgents/mcquack.jellyfin.plist && launchctl load ~/Library/LaunchAgents/mcquack.jellyfin.plist'
# Check metrics
ssh indri 'cat /opt/homebrew/var/node_exporter/textfile/jellyfin.prom'
Hardware Transcoding
Jellyfin uses Apple VideoToolbox for hardware-accelerated transcoding on the M1 Mac Mini.
Capabilities:
- H.264 encode/decode: Hardware
- HEVC (H.265) encode/decode: Hardware
- AV1 decode: Software only (requires M3+)
- HDR to SDR tone mapping: VPP (hardware)
- Concurrent 4K streams: ~3 with HDR tonemapping
Configuration (Dashboard > Playback):
- Hardware Acceleration: Apple VideoToolbox
- Allow hardware encoding: Enabled
- VPP Tone mapping: Enabled (for HDR to SDR)
Observability
- Metrics: Collected via
jellyfin_metricsansible role to Prometheus textfile - Logs: Forwarded to Loki via Alloy (
service="jellyfin") - Dashboard: "Jellyfin Media Server" in Grafana
Metrics collected:
jellyfin_up- Server availabilityjellyfin_version_info- Server versionjellyfin_library_items{library,type}- Library countsjellyfin_sessions_total- Active sessionsjellyfin_sessions_playing- Playing sessionsjellyfin_transcode_sessions_total- Transcoding sessions
API Key Setup
Metrics collection requires an API key:
- Open https://jellyfin.ops.eblu.me
- Go to Dashboard > API Keys > Add
- Create key with description "metrics"
- Save to indri:
ssh indri 'echo "YOUR_API_KEY" > ~/.jellyfin-api-key && chmod 600 ~/.jellyfin-api-key'
Log
2026-01-30 (Initial Deployment)
- Deployed Jellyfin natively on indri via Ansible
- Installed via Homebrew cask, managed via LaunchAgent
- Added Caddy routing for
jellyfin.ops.eblu.me - Added metrics collection (jellyfin_metrics role)
- Added log collection via Alloy
- Created Grafana dashboard