Builds the box that ends the usb4t dropouts: the JMicron bridge was the least reliable device in the setup and it held the intended off-site copy of ks4. The 4 TB now sits on direct SATA as pool `tank`. - OS on mdraid RAID1 across two 120 GB SSDs (Intel 330 + Toshiba Q300), both ESPs bootable; `incus` ZFS mirror on their tails, ~22% left unallocated as over-provisioning - media at /export/media, exported read-only over NFSv4 to nuc - transmission-bt moves here (its WireGuard tunnel is in-container, so ks4 needed no change) and writes to the dataset locally - backup pools nucbackup / ks4backup / nasbackup - monitoring live: msmtp (submission+auth, verified 250), zed with NOTIFY_DATA, zpool-health.sh every 15 min, smartd on all three disks Traps recorded because none of them point at their own cause: booting with the display active kills the i915 probe and wedges incus; d-i picks grub-pc vs grub-efi from how the installer booted; `incus storage create` hangs forever on a mountpoint=none dataset; the BMC is deliberately never cabled, so there is no out-of-band console. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Homelab: nuc
Incus host on the LAN.
- 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)
- USB 4 TB WD Red: ZFS pool
usb4t—usb4t/backup→/backup(incus exports,nuc/+ks4/subdatasets, 1 TB quota) andusb4t/media→/srv/media(media library, shared into containers viashift=truedisk devices; works because ZFS ≥ 2.2 supports idmapped mounts) - ⚠️ The USB enclosure drops off the bus periodically and suspends the pool, which silently breaks the nightly replication — symptoms, recovery and fixes: usb4t-dropouts.md
- Backups: all local instances replicated to the USB pool
(
/root/scripts/incus-copy.sh -p backup -s nucbackup; replicas stopped, autostart off) — see nuc-install.md; ks4 replicas pulled into poolks4backup— see ks4/incus-copy.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 (shift=true); 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") |
| transmission-bt | 192.168.0.7 | ✅ | unprivileged, autostart; always-on WireGuard full tunnel → ks4 (egress = 193.70.35.17, kill switch: no default route); /srv/media disk device (shift=true), downloads to /media/downloads; web UI :9091 (LAN only) |
| blocky | 192.168.0.254 | — | unprivileged, autostart; DNS ad-blocker |
| privoxy | 192.168.0.11 | — | unprivileged, autostart; filtering HTTP proxy |
| homeassistant | (stopped) | — | virtual machine, 50 GiB root disk on pool data |