External Drive to Container Blueprint: Proxmox → VM → Docker
A repeatable blueprint for mounting external drives through Proxmox hosts to VMs and into Docker containers using NFS shares.
External Drive to Container Blueprint: Proxmox → VM → Docker
Blueprint: External Drive → Proxmox → VM → Container
1. Attach and Identify the Drive (Proxmox host)
- Plug in the external drive.
- Run:
1
lsblk -f
- Identify the device (
/dev/sda1
,/dev/sdb1
, etc.), filesystem, and UUID.
2. Create Mount Point(s) (Proxmox host)
- Decide where to mount it, e.g.:
1
2
3
sudo mkdir -p /mnt/Ext_T7_ssd_nuc3/audiobooks
sudo mkdir -p /mnt/Ext_T7_ssd_nuc3/podcasts
sudo mkdir -p /mnt/Ext_T7_ssd_nuc3/digitalbooks
- Mount it temporarily:
1
sudo mount /dev/sda1 /mnt/Ext_T7_ssd_nuc3
3. Make Mount Persistent with fstab (Proxmox host)
- Get the UUID:
1
blkid /dev/sda1
- Edit
/etc/fstab
:
1
sudo nano /etc/fstab
- Add line (replace UUID with yours):
1
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/Ext_T7_ssd_nuc3 ext4 defaults 0 2
- Test:
1
sudo mount -a
4. Export Folders via NFS (Proxmox host)
- Edit exports:
1
sudo nano /etc/exports
- Add lines for each library:
1
2
3
/mnt/Ext_T7_ssd_nuc3/audiobooks 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
/mnt/Ext_T7_ssd_nuc3/podcasts 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
/mnt/Ext_T7_ssd_nuc3/digitalbooks 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
- Apply:
1
2
sudo exportfs -ra
showmount -e localhost
5. Mount in VM (client side)
- Create mount points:
1
sudo mkdir -p /mnt/audiobooks /mnt/podcasts /mnt/digitalbooks
- Test mount:
1
2
3
sudo mount -t nfs 192.168.1.121:/mnt/Ext_T7_ssd_nuc3/audiobooks /mnt/audiobooks
sudo mount -t nfs 192.168.1.121:/mnt/Ext_T7_ssd_nuc3/digitalbooks /mnt/digitalbooks
sudo mount -t nfs 192.168.1.121:/mnt/Ext_T7_ssd_nuc3/podcasts /mnt/podcasts
- Make persistent in
/etc/fstab
on VM:
1
2
3
192.168.1.121:/mnt/Ext_T7_ssd_nuc3/audiobooks /mnt/audiobooks nfs defaults 0 0
192.168.1.121:/mnt/Ext_T7_ssd_nuc3/podcasts /mnt/podcasts nfs defaults 0 0
192.168.1.121:/mnt/Ext_T7_ssd_nuc3/digitalbooks /mnt/digitalbooks nfs defaults 0 0
- Reload:
1
sudo mount -a
6. Map Folders into Containers (VM)
- In your
docker-compose.yml
:
1
2
3
4
5
6
volumes:
- ./config:/config
- ./metadata:/metadata
- /mnt/audiobooks:/audiobooks
- /mnt/podcasts:/podcasts
- /mnt/digitalbooks:/digitalbooks
- Restart container:
1
sudo docker compose down && sudo docker compose up -d
7. Add Library in the App
- In Audiobookshelf → add
/audiobooks
and/podcasts
. - In Calibre-Web → add
/digitalbooks
.
✅ Summary
With this process:
- New libraries (movies, ebooks, comics, etc.) just mean adding a new directory under
/mnt/Ext_T7_ssd_nuc3
, exporting it, mounting it in the VM, and mapping it into the container. - Same steps every time → repeatable blueprint.
This post is licensed under CC BY 4.0 by the author.