Can I run SparkBox on Proxmox?
· Updated 31 July 2026 · SparkBox team
Short answer: yes, and it's a common setup — plenty of people already run SparkBox inside a Proxmox guest. The two aren't alternatives to each other. Proxmox is the layer that splits one physical machine into several virtual ones; SparkBox is the layer that installs and connects your actual apps. This guide covers which kind of guest to use, and the exact host-side setup an LXC container needs before Docker and the VPN will behave.
Already have Proxmox running? Spin up a Debian guest and install SparkBox inside it — one command, and your apps are wired together for you. Read the install docs →
The 30-second version: Use a VM unless you have a reason not to — it behaves like an ordinary Linux box and needs nothing special. An LXC container is lighter and works too, but you must enable keyctl and FUSE for Docker, and pass the tun device through from the host for the VPN. Skipping those produces symptoms that look like network faults but aren't.
They're different layers, not rivals
This trips people up because both get described as "what you put on your home server", so it sounds like a choice between them.
Proxmox replaces the operating system on the machine. Its job is virtualisation: carving one physical box into virtual machines and containers, snapshotting them, and letting you run several operating systems side by side. It's infrastructure.
SparkBox runs on a Linux system. Its job is applications: installing Jellyfin, Immich, Pi-hole and the rest, connecting them to each other, and giving you a dashboard instead of config files.
So the usual arrangement is a stack, not a choice:
Your physical machine
└── Proxmox (splits the hardware up)
└── A Debian/Ubuntu guest
└── Docker
└── SparkBox + your apps
If you already run Proxmox, nothing about SparkBox conflicts with it. And if you don't run Proxmox, you don't need it — a plain Debian or Ubuntu install works perfectly well, with fewer moving parts.
VM or LXC container?
Proxmox offers two kinds of guest, and this is the decision that actually matters.
A VM — the straightforward option
A virtual machine has its own kernel and behaves exactly like a normal Linux computer. Install Debian or Ubuntu into it, run the SparkBox installer, and everything works with no special configuration. Docker behaves normally. The VPN behaves normally.
Give it a reasonable share of the machine — 4GB of RAM is a comfortable starting point for a handful of apps, more if you're running Immich's photo AI or transcoding video. Point its disk at whatever storage you actually want your media on.
Choose this if you're unsure. It costs a little more memory than a container and saves you every problem in the next section.
An LXC container — lighter, but it needs setup
An LXC container shares the Proxmox host's kernel rather than running its own. That makes it lighter and quicker to start, and it does work — but two things break by default, and neither announces itself clearly.
Because the container shares the host's kernel, it cannot load kernel modules itself. Anything needing a kernel feature has to be arranged on the host and passed in. That single fact causes both problems below.
The LXC setup, start to finish
This sequence comes from working through it with someone running SparkBox in an unprivileged LXC until everything was confirmed working. Do all of it before deciding something is broken — the steps fix different symptoms and partial setup produces confusing half-states.
1. On the Proxmox host (the node itself, not inside the container), load the modules the VPN needs and make them persist across reboots:
modprobe tun
echo tun | tee /etc/modules-load.d/tun.conf
modprobe iptable_nat
echo iptable_nat | tee /etc/modules-load.d/iptable_nat.conf
2. Still on the host, pass the tun device into the container. Edit /etc/pve/lxc/<CTID>.conf — replacing <CTID> with your container's ID number — and add these two lines:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
3. In the Proxmox web interface, select the container, go to Options → Features, and enable keyctl and tick FUSE.
This step is the one people skip, and it produces the most misleading symptoms. Without it, Docker's storage driver misbehaves inside an unprivileged container: image downloads stall at around a megabyte and never finish, and containers cycle endlessly between crashing, being removed and coming back. It reads exactly like a broken internet connection or a failing disk. It is neither.
4. Restart the container so the changes take effect:
pct stop <CTID>
pct start <CTID>
5. Inside the container, install SparkBox as normal — or if it's already installed, restart the media stack so it picks up the now-working tunnel:
sudo sparkbox restart media
Checking your work: run sudo sparkbox doctor inside the container. It detects that it's running inside a container and tailors its advice accordingly, so if something is still missing it will tell you which piece — rather than handing you bare-metal instructions that can't work in here.
If the VPN still won't start
The single most common LXC symptom is a VPN that never connects, with a message telling you to run modprobe tun — a command that always fails inside a container, because there are no modules in there to load. That specific problem has its own walkthrough: VPN stuck on "modprobe tun" in a Proxmox LXC.
Do you actually need Proxmox?
Worth asking plainly, because the honest answer is often no.
Proxmox earns its keep when you want to run several operating systems on one machine, snapshot an entire system before changing it, or keep workloads properly isolated from each other. Those are real benefits and it's excellent at them.
But it's another system to learn — virtual networking, storage pools, guest sizing — and if all you want is your own photos, films and ad-blocking running at home, it's a layer you can skip entirely. A plain Debian or Ubuntu install with SparkBox on top does that job with less to go wrong.
Use Proxmox because you want virtualisation, not because you think self-hosting requires it.
Frequently asked
Does SparkBox replace Proxmox?
No. Proxmox handles virtual machines; SparkBox handles applications. Use either alone, or both together.
Can I move a SparkBox install between guests later?
Yes — take a backup from the SparkBox dashboard, install SparkBox on the new guest, and restore it. That's also the cleanest route if you start in an LXC and decide you'd rather be in a VM.
Will SparkBox interfere with my other Proxmox guests?
No. It only manages things inside its own guest. One thing to be aware of: if you enable Pi-hole or AdGuard, they want port 53 for DNS — so if something else on your network already provides DNS, decide which one you want in charge.
Is an LXC actually worse than a VM here?
Once it's set up correctly, it runs fine and uses less memory. The difference is entirely in the setup — a VM needs none, and a container needs the steps above. That's the whole trade.
Ready to try it? Install SparkBox in your Proxmox guest with one command, and get your apps installed and wired together without editing a single config file.
Questions, or did this not match your box?
Every guide here came from a real problem someone hit. If yours behaves differently, say so — that is how these get corrected, and how the fix gets prioritised.
We answer there rather than in a comment box, because that is where the people who have already solved it are.