Add a USB Drive or Memory to an LXC and Share it Over the Network with Samba

Guides~20 min

Attach a USB hard drive or memory stick to a privileged LXC container on Proxmox VE, install Samba inside the container, and share the contents over the network.

Recommended

ProxMenux now exposes both halves of this workflow as guided menus:

  • Disk Manager → Format / Wipe Physical Disk for the format step.
  • Storage & Share Manager → LXC network sharing → Samba server in LXC for the privileged-CT install + Samba config.

The guided flows handle the unprivileged-CT permission quirks, share-mode presets (read-write / read-only / custom) and the sharedfiles group setup. This guide is the manual equivalent — useful if you want full visibility into each step or prefer to wire things by hand.

Sometimes it's useful to add a hard drive or USB memory stick to a Proxmox host, especially on a mini PC with limited internal expansion. This guide walks through:

What you'll do

  1. Attaching the USB disk to a privileged LXC.
  2. Installing Samba inside the container.
  3. Sharing the disk contents over the LAN.

Use cases

  • Hosting Torrent files and serving them on the network.
  • Backing a media server (Plex / Jellyfin / Emby).
  • Holding documents that get auto-scanned by Paperless.
  • Generic NAS-style storage for the home network.

Privileged container required

Direct device passthrough (mp0 with a host path) needs a privileged LXC. Unprivileged CTs can't bind-mount block devices directly — for those you need bind mounts of host directories instead (see ProxMenux Storage & Share Manager → LXC Mount Points).

1. Attach the USB disk to the LXC

1.1 Identify the device

Compare the disk list before and after plugging in the USB drive — the new device is your target.

Before:

Disk list before adding USB drive

After:

Disk list after adding USB drive

You can also use lsblk -o NAME,SIZE,MODEL,SERIAL to list every block device with model and serial.

Important — use a stable identifier

/dev/sdb1 can change between boots if you have multiple USB disks. Find the persistent identifier:

ls -l /dev/disk/by-id/ | grep -v part

Use the /dev/disk/by-id/usb-... path in the LXC config below instead of /dev/sdb1. It survives reboots and re-plugging.

1.2 Format the disk

ext4 is a sensible default for Linux-backed shares (case-sensitive, supports POSIX ACLs, no file-size limits). Run from the Proxmox host, not the container:

mkfs.ext4 /dev/sdb1

Replace /dev/sdb1 with the actual partition device — or with the persistent /dev/disk/by-id/usb-...-part1 path.

1.3 Create the mount point inside the LXC

Inside the LXC, create the directory where the disk will appear (any name works):

mkdir /mnt/lxc_USB

1.4 Wire the device into the LXC

On the Proxmox host (not inside the CT), edit the container's config. Replace <CTID> with the container ID:

nano /etc/pve/lxc/'<'CTID'>'.conf

Add this line:

mp0: /dev/disk/by-id/usb-VENDOR_MODEL_SERIAL-part1,mp=/mnt/lxc_USB,backup=0

(Or, if you accept the risk of the device path changing, the shorter form: mp0: /dev/sdb1,mp=/mnt/lxc_USB,backup=0.)

The backup=0 flag excludes this mount point from vzdump backups — usually the right call for large external drives that are the host's target storage rather than its data.

1.5 Restart the LXC and set permissions

Restart the CT to apply the mount point:

pct restart '<'CTID'>'

Inside the LXC, give the directory permissions appropriate for the user that will own the share:

# Inside the container
mkdir -p /mnt/lxc_USB
chown -R proxmenux:proxmenux /mnt/lxc_USB
chmod 770 /mnt/lxc_USB

Note

Replace proxmenux with the username you'll create in step 2.2 below. 770 gives full access to the user and group, no access to others — safer than the wide-open chmod -R 777 while still letting the share work.

2. Install Samba

2.1 Install the package inside the LXC

apt-get update
apt-get install -y samba

Confirm the service is running:

systemctl status smbd.service

2.2 Create the share user

Pick a username (here we use proxmenux; substitute your own). Create it as a system user with no shell:

adduser proxmenux

Set the Samba password (separate from the system password — Samba maintains its own credential store):

smbpasswd -a proxmenux

2.3 Set ownership / ACLs

If the simple chown from step 1.5 is enough for your case, you're done with permissions. For finer-grained control (multiple users sharing the same path with different rights), use ACLs:

apt-get install -y acl
setfacl -R -m "u:proxmenux:rwx" /mnt/lxc_USB
setfacl -d -R -m "u:proxmenux:rwx" /mnt/lxc_USB    # default ACL — applies to new files

3. Configure the Samba share

3.1 Edit smb.conf

nano /etc/samba/smb.conf

Append a share definition at the end:

[lxc_usb]
    comment = Shared USB storage
    path = /mnt/lxc_USB
    read only = no
    writable = yes
    browseable = yes
    guest ok = no
    valid users = proxmenux
    create mask = 0660
    directory mask = 0770

Note

The valid users = proxmenux line restricts access to that single Samba user. For group-based access, use valid users = @samba_users after adding the user(s) to a group named samba_users.

3.2 Reload Samba

systemctl restart smbd

4. Verify access

From any LAN client, browse to \\<CT_IP> (Windows) or smb://<CT_IP> (macOS / Linux file managers). Authenticate with the Samba user (proxmenux) and the password you set with smbpasswd.

Samba server access from a clientSamba authentication prompt

You can use the share both inside the container and across the network:

Using the USB drive over the share

Troubleshooting

  • pct restart fails with "device not found": the device path in mp0 doesn't exist on the host. Check with ls -l /dev/disk/by-id/ and update the path.
  • CT starts but /mnt/lxc_USB is empty: the disk isn't mounted inside the CT. Check from the host: pct exec <CTID> -- mount | grep lxc_USB. If absent, the mount point in the config is wrong.
  • Samba authenticates but writes fail with "Permission denied": Linux permissions on the directory don't allow the Samba user to write. Re-check chown / setfacl in section 1.5 / 2.3.
  • Share doesn't appear in network browsers but smb://<ip>/lxc_usb works: browseability over the LAN depends on NetBIOS / WS-Discovery. Add nmbd: apt-get install -y samba-common-bin and ensure nmbd is enabled.
  • Want to add a second user to the same share: create the user with adduser, register with smbpasswd -a, add to the share's valid users = list comma-separated.

Sponsor

If you would like to support the project.

Support me on Ko-fi

Connect

Join the community discussions on GitHub to get help, share ideas, and contribute to the project. Every idea is welcome!

Join the Discussion

ProxMenux, an open-source and collaborative project by MacRimi.