Want to test drive a Synology NAS before you spend $500+ on hardware? In this guide I’ll show you how to run Virtual DSM โ Synology’s Disk Manager software โ as a Docker container on an Ubuntu VM in Proxmox. By the end, you’ll have a fully functional DSM instance running in your home lab, accessible locally and remotely via Tailscale, so you can evaluate whether Synology’s the right fit for you.
If that command isn’t found, install the CPU checker tools:
Then run
If you see those lines, you’re good to go. If not, double-check that you set the Proxmox CPU type to “host” and rebooted the VM.
Docker will pull the Virtual DSM image, the Tailscale image, and start both containers. This takes a minute or two. You can watch the logs with:
Wait until you see something like “DSM booted” or similar. Then move on.
๐ฅ Watch the Video Tutorial
โ ๏ธ Legal Note
Virtual DSM itself is open source and legal. However, Synology’s End User License Agreement only permits DSM to be installed on official Synology hardware. Running it in a virtual machine or Docker container violates the EULA. I’m covering this for educational and home lab evaluation purposes only. If you decide to follow along, that’s your call โ but please read Synology’s EULA first.โน๏ธ Note: The real value here is that you can test the DSM interface, explore the app ecosystem, and answer the question “Is Synology right for me?” before committing to expensive hardware. It’s a low-risk evaluation tool, not a permanent replacement.
๐ก Why Virtual DSM?
Synology NAS hardware is solid but expensive. A mid-range NAS runs $500โ$1500+. Before you invest that much money, wouldn’t it be nice to actually use the DSM interface for a few hours and see if it fits your workflow? Virtual DSM lets you do exactly that. It’s a full Synology operating system running in a Docker container โ with the same File Station, Package Manager, storage pools, and admin interface as a real NAS. You can create shares, upload files, explore the app ecosystem, and decide whether you actually want to buy one. The catch: it runs inside a Docker container using QEMU and KVM, which requires your Proxmox host to pass through virtualization extensions to the VM. This guide covers how to set that up.๐ What You’ll Need
- A Proxmox host with CPU virtualization support (Intel VT-x or AMD-V)
- An Ubuntu VM running on Proxmox with Docker and Docker Compose installed
- Docker image: Virtual DSM (from GitHub)
- Storage: At least 64GB of disk space for the DSM container (configurable)
- Tailscale account (free tier, for remote access)
- Basic familiarity with SSH, terminal commands, and Docker
๐ก Tip: If you haven’t set up Proxmox or an Ubuntu Docker host yet, see my earlier guides on IT HomeLab Online for the full setup walkthrough. This guide picks up from there.
๐ Step-by-Step Setup
1. Enable Nested Virtualization on Your Ubuntu VM
Virtual DSM runs KVM inside the container, which requires your Proxmox VM to pass through virtualization extensions from the physical CPU. Without this, the container will either fail to start or fall back to pure software emulation, which is painfully slow. In Proxmox:- Shut down your Ubuntu VM completely (not just reboot โ it needs to be powered off)
- In the Proxmox web UI, click on your VM and go to Hardware
- Select your CPU and click Edit
- Change the CPU Type from the default to host
- Click OK and power the VM back on
2. Verify KVM Acceleration is Available
SSH into your Ubuntu VM and check that KVM is actually available:kvm-ok
sudo apt install cpu-checker -y
kvm-ok again. You should see output like:
INFO: /dev/kvm exists INFO: Your CPU supports KVM extensions INFO: KVM acceleration can be used
3. Download Run the build.sh script
Create a directory and files from https://github.com/ithomelabonline/resources/tree/main:mkdir /media/docker/scripts/nas/ cd /media/docker/scripts/nas/ nano compose.yml # paste in the contents of the compose.yml from github docker/scripts -> nas nano /media/docker/scripts/.env # update your .env file, include your tailscale auth key nano build.sh # paste in the contents of the build.sh sudo chmod +x build.sh # make the build script executable ./build.sh
docker compose logs -f dsm
4. Access Virtual DSM Remotely via Tailscale
With Tailscale running in the sidecar container, Virtual DSM is automatically available on your Tailscale network. From any device connected to Tailscale, access DSM using your Tailscale domain:
https://virtual-dsm.tailXXXX.ts.net/
Tailscale generates a certificate for you automatically, so HTTPS just works. No port forwarding, no exposing ports to the internet, completely private.
5. Set Up Your DSM Admin Account
The setup wizard will ask you to:- Name the NAS (e.g., “dsm”)
- Create an administrator account (use a strong password, don’t use “admin”)
- Configure storage (you can skip this for now)
6. Create Your First Share
To actually store files, you need to create a storage pool and then a share:- Go to File Station
- Right-click and select Create โ Shared Folder
- Name it something like “shared” or “media”
- Leave the defaults and click Next
- Configure permissions (you can allow all users for now)
๐ What’s Next?
Now that you’ve got Virtual DSM running, you can:- Explore the app ecosystem โ Install Docker, Git, or other packages from the Package Manager
- Test backup workflows โ See how Synology’s backup features work
- Check the admin interface โ Get familiar with storage management, user creation, permissions
- Evaluate media apps โ If you’re thinking of using Synology for Plex, Docker, or other media services, test them here first
- Load some test data โ Upload files and see how File Station and sharing work in practice