🔥 Introduction

Want to turn your old PC or server into a powerful NAS with media streaming, downloading tools, backups, VPN, and home automation? This step-by-step guide shows you how to install:

  • Proxmox VE
  • OpenMediaVault (OMV)
  • CasaOS
  • And 15+ Docker apps (like Jellyfin, Plex, Stremio, qBittorrent, JDownloader, etc.)

All set up in one integrated environment using a shared 400GB BTRFS partition for your media and downloads.

🧱 System Overview

  • Host: Proxmox VE on HP DL380 G8 (or any server/PC)
  • NAS VM: Ubuntu/Debian with OMV + CasaOS
  • Partition: Shared 400GB BTRFS mounted at /mnt/data
  • Access: File sharing (SMB), Docker apps via web UI, TV media streaming

⚙️ Step 1: Install Proxmox VE

  1. Download latest Proxmox ISO: https://www.proxmox.com/en/downloads
  2. Create a bootable USB using Rufus or BalenaEtcher.
  3. Boot and install Proxmox.
  4. Configure storage:
    • Use SSD RAID for OS
    • Use HDD RAID or separate disk for data

💿 Step 2: Create NAS VM (Ubuntu or Debian)

  • Allocate 4+ cores, 8GB+ RAM, and the 400GB storage as secondary disk
  • Install Ubuntu Server or Debian
  • Update and upgrade:
sudo apt update && sudo apt upgrade -y

🗄️ Step 3: Mount Shared BTRFS Partition

Mount /dev/sdb1 or similar to /mnt/data:

sudo mkdir -p /mnt/data
sudo mount /dev/sdX1 /mnt/data

Make it permanent:

sudo nano /etc/fstab
# Add:
UUID=XXXX-XXXX /mnt/data btrfs defaults 0 0

Set permissions:

sudo chown -R 1000:1000 /mnt/data
sudo chmod -R 775 /mnt/data

🧰 Step 4: Install OpenMediaVault (OMV)

Install OMV on Debian/Ubuntu:

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
  • Access OMV: http://your-ip
  • Add SMB share pointing to /mnt/data
  • Enable Docker/OMV-Extras plugin

🖼️ Step 5: Install CasaOS

Install CasaOS:

curl -fsSL https://get.casaos.io | sudo bash
  • Access: http://your-ip:81
  • Set download folder in CasaOS apps to /mnt/data/Downloads

🔧 Step 6: Install Docker Apps

All apps below use /mnt/data/Downloads as shared volume.

📥 Downloaders

qBittorrent

docker run -d --name=qbittorrent   -e PUID=1000 -e PGID=1000   -e TZ=Asia/Muscat   -e WEBUI_PORT=8080   -p 6881:6881 -p 6881:6881/udp -p 8080:8080   -v /mnt/data/Downloads:/downloads   -v /mnt/data/qbittorrent:/config   --restart unless-stopped   linuxserver/qbittorrent

JDownloader

docker run -d --name jdownloader2   -p 5800:5800 -p 5900:5900   -v /mnt/data/Downloads:/output   -v /mnt/data/jdownloader:/config:rw   jlesage/jdownloader-2

Aria2

docker run -d --name=aria2-pro   -p 6800:6800   -v /mnt/data/Downloads:/downloads   p3terx/aria2-pro

🎬 Media Servers

Jellyfin

docker run -d --name jellyfin   -v /mnt/data/Downloads:/media   -v /mnt/data/jellyfin:/config   -p 8096:8096   jellyfin/jellyfin

Plex

docker run -d --name=plex   -e TZ="Asia/Muscat"   -v /mnt/data/Downloads:/data   -v /mnt/data/plex:/config   -p 32400:32400   plexinc/pms-docker

Stremio (Use CasaOS version)

  • Enable local addon via: http://127.0.0.1:11470/local-addon/manifest.json

🎞️ Media Management

Sonarr

docker run -d --name=sonarr   -p 8989:8989   -v /mnt/data/Downloads:/downloads   -v /mnt/data/sonarr:/config   linuxserver/sonarr

Radarr

docker run -d --name=radarr   -p 7878:7878   -v /mnt/data/Downloads:/downloads   -v /mnt/data/radarr:/config   linuxserver/radarr

☁️ Cloud & Network Tools

Nextcloud

docker run -d --name=nextcloud   -v /mnt/data/nextcloud:/var/www/html   -p 8085:80   nextcloud

Watchtower

docker run -d --name watchtower   -v /var/run/docker.sock:/var/run/docker.sock   containrrr/watchtower

OpenVPN

docker run -d --name=openvpn   -v /mnt/data/openvpn:/etc/openvpn   -p 1194:1194/udp   --cap-add=NET_ADMIN   kylemanna/openvpn

MariaDB

docker run -d --name mariadb   -e MYSQL_ROOT_PASSWORD=mysecret   -v /mnt/data/mariadb:/var/lib/mysql   mariadb

📡 Network & Automation

Pi-hole

docker run -d --name pihole   -p 53:53/tcp -p 53:53/udp -p 80:80   -e TZ="Asia/Muscat"   -v /mnt/data/pihole:/etc/pihole   --cap-add=NET_ADMIN   pihole/pihole

Home Assistant

docker run -d --name homeassistant   --privileged   -v /mnt/data/homeassistant:/config   --network=host   ghcr.io/home-assistant/home-assistant:stable

Guacamole

docker run -d --name guacamole   -p 8088:8080   oznu/guacamole

📺 Free IPTV in Jellyfin

  1. Find M3U playlist (e.g., freeiptv or github sources)
  2. Upload M3U in Jellyfin:
    • Settings → Live TV → Add M3U tuner
    • Point to /mnt/data/iptv.m3u

✅ Best Practice Summary

  • Use Proxmox for virtualization
  • Choose Debian/Ubuntu for NAS VM
  • Mount 400GB partition to /mnt/data
  • Configure OMV and CasaOS to use /mnt/data/Downloads
  • Install all Docker apps with shared download/media paths
  • Use Portainer for Docker management
  • Backup using Proxmox or Clonezilla

📢 Find More WordPress & Tech Tutorials on EngineerHow.com

At EngineerHow.com, we provide in-depth tutorials on:

  • WordPress setup, customization, and optimization.
  • Self-hosted software and VPS management.
  • Networking, NAS, and cloud storage solutions.
  • IT and engineering topics.

🚀 Bookmark EngineerHow.com and subscribe to our YouTube Channel for more valuable guides and tutorials!