Finished downloads stopped appearing in Jellyfin after the 2026-08-30 storage move, and everything looked healthy: the file was on nas, visible through NFS inside the container, and /media/downloads is a configured library. The cause is that Jellyfin watches libraries with inotify, which only reports changes made through the local mount — transmission now writes on nas while jellyfin-server reads over NFS on nuc, so no event ever reaches it. EnableRealtimeMonitor is true and SupportsLibraryMonitor reports true, which is why it looks fine. Previously both shared one local dataset on nuc and it worked. transmission now calls Jellyfin's /Library/Refresh via script-torrent-done. The hook always exits 0 and never blocks (transmission runs it synchronously; a hanging hook stalls the daemon), and both the success and missing-key paths are tested. nuc is usually powered off, so a failed request is expected and logged rather than treated as an error — the scheduled scan catches up. Also records that nuc's mount is read-only, so reorganising downloads into movies/tv-shows must now happen on nas, and the ordered checklist for "my download is not in Jellyfin" — the first three checks all passed when this was hit, which is what made it confusing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Homelab: nuc
Incus host on the LAN — on-demand: since 2026-08-30 it only needs to
run when watching Jellyfin or using the Spotify Connect kiosk. Everything
always-on (blocky/DNS, privoxy, transmission-bt) moved to
nas, which is why nuc can now be powered off.
⚠️ Powering nuc off has backup consequences — its 03:30 replication to nas only runs while it is up. See nas-install.md §9.
-
Debian 13, Intel Alder Lake-N (iGPU
i915, shared by both Jellyfin containers) — bare-metal reinstall: nuc-install.md -
Instances are bridged onto the LAN (192.168.0.0/24)
-
Storage: ZFS pool
dataon the SSD (all instance disks). The USB 4 TB and its pool left nuc on 2026-08-30 — the enclosure's JMicron bridge was suspending the pool (usb4t-dropouts.md); the disk now sits on direct SATA innasas pooltank. -
Media library:
/srv/mediais now an NFSv4 mount from nas (192.168.0.4:/media, read-only).jellyfin-serverstays here for the iGPU and reads it withshift=false(jellyfin-server.md). -
Backups: nuc and nas cross-replicate — nuc pushes all its instances to
nas:nucbackupat 03:30, nas pushes its own tonuc:nasbackupat 04:00, so neither host's instances depend on that host surviving (nas/nas-install.md §9). The ks4 pull leg moved to nas as well (ks2/nas-seed.md), so nuc no longer runs a WireGuard tunnel. -
⚠️ Never reboot nuc with the display powered on — the i915 probe dies and takes every container with it (including LAN DNS). Symptoms and fix: jellyfin-client.md
Instances
| Name | IP | Doc | Features |
|---|---|---|---|
| jellyfin-server | 192.168.0.5 | ✅ | unprivileged, autostart; iGPU render node (gpu device, render gid) for QSV/VAAPI transcoding; /srv/media disk device (NFS from nas, shift=false, read-only); proxy device → host :8096 |
| jellyfin-client | 192.168.0.6 | ✅ | privileged, autostart; full iGPU (gpu device, gid 44) → HDMI kiosk (cage + Jellyfin Media Player); custom raw.lxc (bind /dev/snd, /dev/input, host /run/udev); Pioneer USB audio as ALSA default; FR keymap; go-librespot Spotify Connect ("Pioneer A-70") |
| homeassistant | (stopped) | — | virtual machine, 50 GiB root disk on pool data |
Moved to nas on 2026-08-30: transmission-bt
(next to the media dataset it writes to), plus blocky and privoxy
so LAN DNS and the proxy survive nuc being shut down.