🔥 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
- Download latest Proxmox ISO: https://www.proxmox.com/en/downloads
- Create a bootable USB using Rufus or BalenaEtcher.
- Boot and install Proxmox.
- 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/dataMake it permanent:
sudo nano /etc/fstab
# Add:
UUID=XXXX-XXXX /mnt/data btrfs defaults 0 0Set 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/qbittorrentJDownloader
docker run -d --name jdownloader2 -p 5800:5800 -p 5900:5900 -v /mnt/data/Downloads:/output -v /mnt/data/jdownloader:/config:rw jlesage/jdownloader-2Aria2
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/jellyfinPlex
docker run -d --name=plex -e TZ="Asia/Muscat" -v /mnt/data/Downloads:/data -v /mnt/data/plex:/config -p 32400:32400 plexinc/pms-dockerStremio (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/sonarrRadarr
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 nextcloudWatchtower
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtowerOpenVPN
docker run -d --name=openvpn -v /mnt/data/openvpn:/etc/openvpn -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpnMariaDB
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/piholeHome Assistant
docker run -d --name homeassistant --privileged -v /mnt/data/homeassistant:/config --network=host ghcr.io/home-assistant/home-assistant:stableGuacamole
docker run -d --name guacamole -p 8088:8080 oznu/guacamole📺 Free IPTV in Jellyfin
- Find M3U playlist (e.g., freeiptv or github sources)
- 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!
