The Sheley Media Lab

Running Emby, Immich, and Pinchflat on a Proxmox Homelab

My entire home lab runs on Proxmox, hosting a mix of VMs and containers. At the center of it is Emby for movies, TV, and archived YouTube channels, with Immich handling family photos and video as a Google Photos replacement. Here's how it's put together, and some tips if you're thinking about setting up your own.

The Stack, and Where It Runs

Everything runs on Proxmox — a mix of VMs and LXC containers, with most services running in Docker inside a VM for easy management. Emby's official Linux packages support Ubuntu, CentOS, Fedora, openSUSE, and Arch, which also makes it a good fit for a lightweight native LXC container if you'd rather skip Docker for that one service.

🎬 Emby

My media server of choice for streaming movies, TV shows, and archived YouTube content to any device in the house — phones, smart TVs, tablets, you name it. Jellyfin and Plex are solid alternatives if you'd rather go a different direction.

📸 Immich

My replacement for a Google Photos subscription. Immich backs up photos and video automatically from everyone's phones, with face recognition, search, and a timeline view that feels a lot like what it's replacing — just self-hosted.

⚙️ Radarr / Sonarr

Automation tools for managing and monitoring movie (Radarr) and TV show (Sonarr) libraries — keeps everything named and organized correctly, automatically.

Archiving YouTube Channels

One of my favorite parts of the setup: I archive YouTube channels the family actually watches and host them locally through Emby, right alongside movies and TV shows. It plays like any other library — no ads, no algorithm, no worrying about a channel or video disappearing later.

This pairs well with the archivist mindset I cover on my Data Hoarding page — if a video matters to your family, a local copy is a lot more permanent than a bookmark.

How It Works, Roughly

  • Pinchflat handles the downloading — a self-hosted YouTube manager (built on yt-dlp under the hood) where you set rules per channel or playlist and it keeps everything up to date automatically.
  • It writes files out in a folder structure Emby recognizes as a TV-style library, one "show" per channel, and can strip sponsored segments using SponsorBlock data.
  • New videos from favorite channels just show up in Emby automatically, no manual downloading involved.

Tips for Organizing Family Media

Consistency is key. A well-structured file system is essential for any media stack.

1. Standardized Naming Conventions

Use tools like Filebot or the built-in renaming features of the *arr stack to ensure all files follow a standard format (e.g., Movie Name (Year) or Show Name S01E01).

2. Separate Data Volumes

Map separate Docker volumes for configuration data (/config), media files (/data/media), and temporary files (/downloads). Makes migrations and backups much simpler.

3. Handle Duplicates Immediately

For photo collections, use Immich's built-in duplicate detection. Consolidating family photos into one source of truth prevents headaches later on.

4. The "Common Media Root" Strategy

Establish a single top-level directory (e.g., /mnt/media) with subdirectories per media type (Movies, TV Shows, YouTube, Photos). Mount this single root into all your Docker containers to avoid complex path mappings.

Tips for Setting Up Your Own Home Media Server

A few things I'd tell anyone getting started, beyond just "pick a media server app":

Use Hardware Transcoding

If your server has an Intel CPU with Quick Sync or an Nvidia GPU with NVENC, enable hardware transcoding in Emby/Jellyfin/Plex. Software transcoding on a CPU alone will bottleneck fast once more than one device is streaming.

Secure Remote Access Properly

Don't just port-forward your media server directly to the internet. Put it behind a reverse proxy with HTTPS, or better, access it through a VPN like Tailscale or WireGuard so it's never directly exposed.

Use Hardlinks, Not Copies

Configure the *arr stack to use hardlinks/atomic moves instead of copying files between your download and media folders. Saves disk space and avoids doubling your storage needs for every file.

Set Up Separate User Profiles

Give each family member their own profile with appropriate content restrictions. Makes watch history, recommendations, and parental controls actually useful instead of one shared mess.

Automate Subtitles

Bazarr integrates with the *arr stack to automatically find and download subtitles for your library, which is a lot less tedious than doing it manually per file.

Plan Storage Growth Ahead of Time

Media libraries grow faster than people expect. Look into MergerFS + SnapRAID or a proper NAS OS like TrueNAS early, rather than scrambling to migrate a full drive later — more on this on my Data Hoarding page.

Robust Backup and Recovery

The most important part of any lab: never lose data. A 3-2-1 strategy is non-negotiable for irreplaceable family media — original, purchased, or archived.

3 Copies of Data:

The original on the server, a local backup copy, and an offsite copy.

2 Different Media Types:

Store copies on different types of hardware (e.g., internal SSD for the original, external HDD for the local backup).

1 Offsite Copy:

A cloud provider (Backblaze B2, AWS S3 Glacier) or an offsite physical drive rotation for crucial data, especially family photos.

Container Config Backup:

Regularly back up the /config folders for Emby, Immich, and the *arrs, so the whole stack can be rebuilt quickly if the server fails.