Blueprint: External Drive → Proxmox → VM → Container¶
1. Attach and Identify the Drive (Proxmox host)¶
- Plug in the external drive.
- Run:
- 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.:
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:
3. Make Mount Persistent with fstab (Proxmox host)¶
- Get the UUID:
- Edit
/etc/fstab:
- Add line (replace UUID with yours):
- Test:
4. Export Folders via NFS (Proxmox host)¶
- Edit exports:
- Add lines for each library:
/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:
5. Mount in VM (client side)¶
- Create mount points:
- Test mount:
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/fstabon VM:
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:
6. Map Folders into Containers (VM)¶
- In your
docker-compose.yml:
volumes:
- ./config:/config
- ./metadata:/metadata
- /mnt/audiobooks:/audiobooks
- /mnt/podcasts:/podcasts
- /mnt/digitalbooks:/digitalbooks
- Restart container:
7. Add Library in the App¶
- In Audiobookshelf → add
/audiobooksand/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.