08 June 2026

Proxmox Samba Share for Sonos: A Lightweight LXC Setup

I've got a fair bit of music on local storage and I wanted to be able to play it through Sonos without paying for yet another streaming subscription. Turns out you can host a Samba share from a lightweight LXC container on Proxmox and point Sonos straight at it. The container idles at around 30–50 MB RAM, so it's basically free in terms of resources.

Here's exactly how I set it up.

The approach

  • Store music on the Proxmox host's second drive
  • Run a minimal Debian 12 LXC container with Samba
  • Bind-mount the music folder into the container (read-only)
  • Point Sonos at the Samba share

Stage 1 — Download the Debian 12 Template

In the Proxmox web UI:

  1. Click your node in the left panel
  2. Click local storage → CT Templates
  3. Click the Templates button
  4. Search for Debian 12 Standard and click Download

Stage 2 — Create the LXC Container

Click Create CT and use these settings:

SettingValue
TemplateDebian 12 Standard
RAM256 MB
Swap512 MB
CPU1 core
Disk8 GB
NetworkDHCP (set static IP after creation)
SSH public keyPaste your OpenSSH public key


Getting your OpenSSH public key from PuTTYgen

If your key is in .ppk format, open PuTTYgen → Conversions → Import Key → load your .ppk. Copy the text from the box labelled "Public key for pasting into OpenSSH authorized_keys file" (starts with ssh-rsa or ssh-ed25519) and paste that into the Proxmox SSH public key field.

Don't use "Save public key" — that saves in PuTTY format which Proxmox won't accept. Copy directly from the text box.

Stage 3 — Fix Network (DHCP)

If the container has no IP after starting, the network interfaces file needs updating. Inside the container console:

# Check current IP (look for eth0)
ip a

# If no IPv4 address, request a lease
dhclient eth0

# Make DHCP persistent across reboots
nano /etc/network/interfaces

Add these lines:

auto eth0
iface eth0 inet dhcp

Then restart networking:

systemctl restart networking

Force IPv4 for apt (fixes IPv6 connection errors)

echo 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/99force-ipv4

Set a static IP (recommended)

In the Proxmox UI: container → Network tab → edit eth0 → change IPv4 from DHCP to Static and set a fixed IP outside your router's DHCP range (e.g. 192.168.1.111/24) with your gateway (e.g. 192.168.1.1). A static IP ensures Sonos never loses the share.

Stage 4 — Prepare Music Storage on the Proxmox Host

Music is stored on the Proxmox host and mounted into the container. Run the following on the Proxmox host shell — not inside the container.

Create the music directory

mkdir -p /mnt/shared/music

Copy music from a USB drive

Plug in your USB drive, then find it:

lsblk

Look for the new device (e.g. /dev/sdb1). Mount it and copy:

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

# Install rsync if needed
apt install rsync

# Copy music across (adjust source path if needed)
rsync -av --progress /mnt/usb/ /mnt/shared/music/

# Unmount USB when done
umount /mnt/usb

Fix permissions

This is critical — files copied from USB often arrive with restrictive permissions that prevent Samba from reading them:

chmod -R 755 /mnt/shared/music

Verify:

ls -la /mnt/shared/music/ | head -5
# Should show drwxr-xr-x for all folders

Stage 5 — Bind-Mount Music into the Container

On the Proxmox host shell, edit the container config (replace 103 with your container ID):

nano /etc/pve/lxc/103.conf

Add this line:

mp0: /mnt/shared/music,mp=/mnt/music,ro=1

The ro=1 enforces read-only at the mount level. Restart the container:

pct stop 103
pct start 103

Verify inside the container:

ls /mnt/music
# Should list your music folders

Stage 6 — Install and Configure Samba

SSH into the container and run:

apt update && apt install -y samba smbclient

Replace the entire Samba config:

nano /etc/samba/smb.conf

Delete all existing content and paste this (adjust the subnet to match your network):

[global]
   workgroup = WORKGROUP
   server string = Music
   server min protocol = SMB2
   server max protocol = SMB3
   map to guest = Bad User
   guest account = nobody
   ntlm auth = yes
   lanman auth = yes
   raw NTLMv2 auth = yes
   restrict anonymous = 0
   log level = 0
   hosts allow = 192.168.1.0/24
   hosts deny = ALL

[Music]
   path = /mnt/music
   browseable = yes
   read only = yes
   guest ok = yes
   guest only = yes
   force user = nobody
Change 192.168.1.0/24 to match your network. If your IP addresses are 192.168.0.x use 192.168.0.0/24.

Start and enable Samba:

systemctl restart smbd nmbd
systemctl enable smbd nmbd

Verify it's running:

systemctl status smbd

Verify the share is accessible:

smbclient -L 192.168.1.111 -N
# Should list the Music share

Stage 7 — Add to Sonos

In the Sonos S2 app:

  1. SettingsServices & VoiceMusic Library
  2. Tap Add Music Library (or the + icon)
  3. Enter the path: //192.168.1.111/Music
  4. Leave username and password blank
  5. Tap Add

Sonos will index your library — this may take a few minutes depending on library size. Once complete it appears under Music Library in your sources.

Troubleshooting

Container has no network

Check /etc/network/interfaces has auto eth0 and iface eth0 inet dhcp. Run dhclient eth0 to get a lease manually.

apt update fails with IPv6 errors

echo 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/99force-ipv4

Samba share not visible

Test from inside the container:

smbclient -L 192.168.1.111 -N

Check Samba is listening:

ss -tlnp | grep -E "445|139"

Sonos connects but fails to add library

Almost certainly a permissions issue. On the Proxmox host:

chmod -R 755 /mnt/shared/music
ls -la /mnt/shared/music/ | head -5
# Verify drwxr-xr-x on all folders

Bind-mount shows empty inside container

Use stop and start rather than restart:

pct stop 103
pct start 103

Update the container IP and paths above to match your setup. Drop any questions in the comments and I'll do my best to help.