claude-projects/Media & Automation/media-stack.md

76 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 (815GB 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.100105`
- Front driveway zone: car detection → Alexa announcements
- Version: 0.17
## SMTP
- Fastmail: `jgitta@jgitta.com`