# Media Stack — Project Knowledge ## Host: VM102 / jellyfin - IP: `192.168.88.10` - Specs: 2c/12GB RAM - SSH: `root@192.168.88.10` (via Proxmox host jump) - Media disk: 6000GB at `/mnt/media/` - Single `/data` mount structure for hardlink support ## Services on VM102 | Service | Port | URL | |---|---|---| | Jellyfin | 8096 | jellyfin.jgitta.com | | qBittorrent-nox | — | — | | Radarr | 7878 | radarr.jgitta.com (internal only) | | Sonarr | 8989 | sonarr.jgitta.com (internal only) | | Prowlarr | 9696 | prowlarr.jgitta.com (internal only) | | FlareSolverr | 8191 | — | ## Jellyfin - Port: 8096 - GPU: NVIDIA (VFIO passthrough from Proxmox host — GPU is NOT on host, it's passed to VM102) - Hardware transcoding: NVIDIA NVENC enabled - Live TV: HDHomeRun FLEX QUATRO - DeviceID: `10B00DE1` - IP: `192.168.88.22` - DeviceAuth-based XMLTV guide (refreshed every 20h via cron) - Script: `/home/jgitta/scripts/refresh-hdhomerun-guide.sh` - DVR license key: unassigned (SiliconDust ticket raised) - DNS fix service: `fix-jellyfin-dns.service` (fixes DNS after ProtonVPN kill switch on boot) - Sets nameserver to `192.168.88.1` - Removes kill switch default route ## ProtonVPN - Interface: `proton0` / `pvpnksintrf1` (kill switch interface) - Kill switch enabled - qBittorrent bound to proton0 - Port forwarding: port `54514`, renews via NAT-PMP every 60s - Cron sync script: runs every 5 minutes (`*/5`) - Split tunneling service: `me.proton.vpn.split_tunneling.service` ## qBittorrent-nox - Bound to ProtonVPN interface - systemd hard cap: `MemoryMax=2G` - Downloads to `/mnt/media/downloads/` ## *arr Stack - All services in Docker on VM102 - Quality profiles: HD-1080p (8–15GB cap) - Prowlarr URLs must point to `192.168.88.10` (not wrong IP) - IndexerStatus/DownloadClientStatus cleared from SQLite DBs if stale ## Photos (on VM113 / photos — 192.168.88.32) - PhotoPrism: `https://photos.jgitta.com` (port 2342) - Immich: `https://pictures.jgitta.com` (port 2283) - Source: `/mnt/photos/joe` and `/mnt/photos/cynthia` (NFS from big-11t, mounted at `/mnt/photos`) - Migrated from Siklos (VM112) to dedicated VM113: April 2026 ## Home Automation - **Home Assistant** (VM106): `192.168.88.39`, `ha.jgitta.com` - Integrated with Hubitat via HACS - Grafana/Telegram monitoring - **Hubitat**: `192.168.88.65`, `hub.jgitta.com` - Primary Z-Wave/Zigbee hub - Maker API: app ID `146`, token `8fb12954-f427-4972-99e2-f9c893d4420c` - Zooz S505D Matter dimmer "Island Light": static DHCP at `192.168.88.15` - **Frigate NVR** (ThinkStation, `192.168.88.41`): `cameras.jgitta.com` - Auth disabled, Caddy proxy headers: `Remote-User: guest_viewer`, `Remote-Role: viewer` - Reolink cameras: `192.168.88.100–105` - Front driveway zone: car detection → Alexa announcements - Version: 0.17 ## SMTP - Fastmail: `jgitta@jgitta.com`