[GUIDE] Volumio + Jellyfin on Dell 3050: Full Dockerized Setup Guide

Volumio + Jellyfin on Dell 3050: Full Dockerized Setup Guide

We transformed a single Dell OptiPlex 3050 into a modular home server running Volumio and Jellyfin side‑by‑side in Docker. This guide documents every step — from SSD mounting to delayed boot — so others can replicate the setup.


:bulb: Why We Did It

  • Budget constraints: Couldn’t afford a second device, so we consolidated services on one machine.
  • Future‑proofing: 32 GB RAM + multiple SSDs gave us headroom for Dockerized services.
  • Modularity: Each SSD dedicated to a role:
    • NVMe 512 GB → Music library (fast reads for Volumio)
    • SATA M.2 512 GB → Movies (Jellyfin indexing)
    • 2.5" SSD 256 GB → Volumio OS + Docker configs
  • Reliability: Persistent mounts, SMB access, and delayed boot ensured smooth startup.

:hammer_and_wrench: Step‑by‑Step Setup

Dell OptiPlex 3050 hardware
└── Volumio OS (Debian base)
├── Volumio service stack (native)
└── Docker engine
└── Jellyfin container

  1. Base System Prep

  • Installed Debian/Ubuntu minimal.
  • Held back Node.js to avoid breaking Volumio backend:
    sudo apt-mark hold nodejs
  1. Docker Installation

  • Installed Docker + Docker Compose:
    curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh
    sudo apt install docker-compose -y
  • Held Docker packages:
    sudo apt-mark hold docker-ce docker-ce-cli containerd.io
  1. Delayed Boot for Volumio

  • Created systemd override:
    sudo systemctl edit volumio.service
    Added:
    [Service]
    ExecStartPre=/bin/sleep 30
  1. Jellyfin Installation

  • Docker Compose service:

    jellyfin:
    image: jellyfin/jellyfin:latest
    volumes:
    - /srv/media:/media
    - /srv/jellyfin/config:/config
    - /srv/jellyfin/cache:/cache
    ports:
    - 8096:8096
    restart: unless-stopped

  • Pointed Jellyfin to /media/music and /media/movies.

  1. SSD Setup & Mounting Points

We divided drives by role to avoid I/O contention:

  • NVMe 512 GB (Music Library)
    sudo mkdir -p /media/music
    fstab:
    UUID= /media/music ext4 defaults,noatime 0 2

  • SATA M.2 512 GB (Movies Library)
    sudo mkdir -p /media/movies
    fstab:
    UUID= /media/movies ext4 defaults,noatime 0 2

  • 2.5" SSD 256 GB (Volumio OS + Docker)
    Root (/) hosts OS, /srv for configs:
    UUID= /srv ext4 defaults,noatime 0 2

Best Practices:

  • Use UUIDs instead of device names.
  • Add noatime to reduce SSD wear.
  • Label drives (MUSIC_NVME, MOVIES_SATA, VOL_OS).
  • Test with sudo mount -a before reboot.
  1. SMB File Management

  • Installed Samba:
    sudo apt install samba

  • Configured /etc/samba/smb.conf:

    [Music]
    path = /media/music
    read only = no
    guest ok = yes

    [Movies]
    path = /media/movies
    read only = no
    guest ok = yes

  1. Volumio in Docker

  • Docker Compose service:

    volumio:
    image: volumio/volumio:latest
    privileged: true
    network_mode: “host”
    volumes:
    - /srv/volumio/config:/data
    - /media/music:/music:ro
    restart: unless-stopped


:gear: Result

  • Jellyfin indexes movies + music, streams via DLNA.
  • Volumio plays music bit‑perfectly via DAC.
  • SMB allows easy file management.
  • Docker orchestration keeps services modular.
  • Delayed boot + fstab ensures reliability.
  • Been using this for more than 2 weeks now and haven’t had any issues at all.

:dart: Lessons Learned

  • Holding Node.js + Docker versions prevents dependency breakage.
  • SSD separation avoids I/O bottlenecks.
  • Volumio in host mode is essential for audio fidelity.
  • A single Dell 3050 can handle multiple services if RAM + SSDs are allocated wisely.

:person_raising_hand: Community Note

This setup shows how resourcefulness and modular design can turn one budget‑friendly machine into a resilient home media hub.

And hey — maybe @patrickkfkan could even make a plugin out of this someday… hehehe :smile:

2 Likes