Piping Hardware Through Software: The DVD Passthrough Project
I love physical media. I have a shelf full of DVDs that prove it. But in an era where I can stream 4K content to my phone while standing in the yard, getting up to swap a disc feels archaic.
Recently, I decided to digitize the entire collection. My goal was simple: get the movies off the plastic discs and onto my Jellyfin server so the family can watch them anywhere.
The problem? My “server” is a virtualized environment running on Proxmox. The DVD drive is real hardware; the file server doing the ripping is a Linux VM. In the world of hypervisors, getting the two to talk isn’t always a handshake; sometimes it requires a little plumbing.
Here is how I piped a physical optical drive through the virtualization layer to build a headless ripping station.
The Architecture
As a network engineer, I don’t like “all-in-one” messy boxes. I like separation of duties. Here is the layout I’m working with:
- The Hypervisor: Proxmox VE running on bare metal.
- The Storage: A Linux VM acting as a Samba file server (NAS).
- The Application: A separate Debian container running Jellyfin.
- The Hardware: A standard SATA DVD/RW drive physically connected to the Proxmox server.
The goal was to pass the SATA drive through to the Linux file server VM so I could run MakeMKV directly on the storage backend, rather than ripping movies on my desktop and transferring huge files across the LAN.
Step 1: The Physical Layer (Finding the Drive)
First, I had to ensure the Proxmox host actually saw the drive. It seems obvious, but never assume physical connectivity.
I dropped into the shell on the Proxmox node and ran:
Sure enough, sr0 showed up as a read-only optical device. The plumbing was there, it just wasn’t connected to the faucet yet.
Step 2: The Passthrough (Punching the Hole)
This is where people get hung up. In Proxmox, you have a few ways to handle drives. You can mount an ISO (virtual), or you can pass through the hardware.
I didn’t want emulation; I wanted raw access so MakeMKV could read the disc structure correctly.
- I shut down the Linux file server VM.
- In the Proxmox GUI, I selected the VM > Hardware > Add > CD/DVD Drive.
- Crucially, I selected “Use physical CD/DVD Drive” rather than “Use CD/DVD disc image file (ISO).”
Step 3: The Software (Headless Ripping)
Once the VM booted back up, I verified the drive was visible inside the Linux guest using dmesg | grep -i dvd.
For the ripping software, I stuck with the gold standard: MakeMKV. Since this is a server without a monitor (headless), I couldn’t use the GUI. I installed the command-line tools (makemkvcon).
The workflow is now incredibly streamlined:
- Pop a disc into the server.
- SSH into the file server.
- Run a command to identify the title tracks.
- Rip the stream directly to the
/samba/movies/directory.
The End Result
Jellyfin (running in its own container) has a bind mount to that same media share. The moment the rip finishes, I scan the library, and the movie appears with metadata and artwork, ready to stream.
This project was a classic example of “Internet Plumbing.” We took a legacy input (physical DVD), piped it through a modern virtualization stack, and dumped it into a digital reservoir (Samba) for consumption.
It took a bit of configuration to get the permissions right, but now? No more swapping discs.
Oh, and I automated it as well. Check out the project on my GitHub:
https://github.com/mgrffn117/ProxmoxLXC-DVD-Ripper
