Why use Proxmox over Podman or Docker?
tl;dr: Proxmox or bare metal? Containers yes/no? What is your use case?
I used a Dell R710 when I first started self-hosting, it ran ESXi with one VM for each service I wanted. Restarting the server required me to first shutdown each VM in order and then the whole host. When setting up a new service to host I had to create a new VM (allocate RAM, disk etc), install the OS (I ran Debian) and then follow instructions for how to setup the service. This mostly was not a problem but one software I never managed to get working was Apache Guacamole.
Nowadays I have a Dell Optiplex I salvaged for parts, got a new case and all my HDDs from my R710. Because it has much less RAM and an old Intel i5 (6th or 7th generation), I decided to get into Docker. With Docker containers you write your compose file and it will just work. No more need to dig through documentation for which version of a dependency to use, how to handle if two services on the same host need different versions (this was part of the reason for one VM/service). With Docker, I can try out a software in seconds and have it configured to my liking in minutes.
Today I have NixOS (bare metal) and it comes with Podman which uses systemd. Hence restarting my OS (albeit not that often, almost never unless I mess up my config) is a no-brainer because Podman via systemd will manage everything. Adding, stopping or removing containers in general is easy. I have a script running as a service which will stop a container, create a BTRFS subvolume snapshot, start the service again and start borg backup to backup from the snapshot.
For me using Proxmox would just an extra layer of complexity I don’t need. I only have one server and I am the only user.
Questions:
- Do you use Proxmox instead of a bare metal installation?
- Do you use containers or do you install manually?
- What is you use case that requires your setup the way it is?
I use both. The main benefit of proxmox is having VM snapshots/daily backups, if you mess up, just restore the whole thing. You also have stricter isolation, e.g. put public facing containers in one VM and local only stuff in another.
Also has high availability if you have multiple nodes but that can be achieved with container orchestration as well.
Couldnt you just make daily snapshots on baremetal? Like most configs will support a ZFS pool.
All my stuff is just configs anyway, so my backup is a Git commit. Lighter than a full snapshot. My server can be restarted with like 50mbs of information.
Docker images are images so disposable. All my files and databases are on my NAS which is a ZFS pool mirrored and with a weekly backup to a secondary NAS also mirrored. Plus I have an offsite cloud backup of everything. There isnt really anything on my server that matters other than some configs, scripts and ymls. Which by commiting to my Gitea, are all on my NAS with the rest of my data.
I still feel like Proxmox just invites you to tinker and fiddle with stuff that should be set and forget. Or overcomplexify your setup with too many moving parts.
For public stuff I just use a VPS. Better internet connection than at home, high availability and DDOS protection. Otherwise, an LXC with good firewall rules and a well configured reverse proxy should be sufficient.
I used to be bare metal Debian, but I moved to ProxMox for a few reasons.
It works, it’s easy, and the simplicity has saved my butt a few times. I don’t think I’ll be switching, and I’d recommend it to anyone running a homelab. I still use docker to manage most of my services inside a VM.
I’ll die on this hill.
Containers run on “bare metal” in the same way that other processes on your system run.
Who was saying it was otherwise? Containers are not virtualization and never have been.
Maybe I misunderstood - The “NixOS (bare metal)” seemed to imply to me that the containers were not bare-metal by omission. If not then my complaint is retracted.
I like the flexibility that proxmox provides me. I do this as a hobby and I’m self taught. I can try a bunch of things and if I mess up I can start over without much hassle.
I use proxmox for basically anything in my homelab, but there’s no particular reason. I use it because it does what I need. It supports VMs in case I need a bit more control over what runs in the system (like a Windows VM) and it supports LXCs that fundamentally work like docker with less configuration steps. It provides a nice webUI if I need to check up on some things and an API so I can orchestrate all my systems with terraform.
It does the job and I never saw a reason to switch away from it.
I moved from VMware Fusion after a hardware failure and migrated to Proxmox. I use VMs to isolate client information and to test and use different OS versions and distros.
I have a VM that runs Docker and connect to it via SSH for running applications I don’t want to install on my main workstation.
My main workstation is also a VM.
I came from bare metal Linux for years and found that I spent too much time recompiling kernels to make it work with my hardware.
Now that everything is a VM, changing underlying hardware, and even hypervisor is trivial.
If VMware hadn’t been bought by Broadcom and allowed me to virtualise x86 on Apple Silicon, I’d still be running VMware Fusion. UTM by the way is completely unreliable … I really tried.
As it is, I’m running Proxmox on AMD.
in summary, Proxmox allows me to build what I need when I need it virtually and it’s running on a standard Debian host.
Edit: #$#__# autocorrect (unreadable -> unreliable)
I’m running Docker inside a Debian VM on Proxmox and I forgot why. Next time I’d just run Docker on Debian.
Proxmox running LXC’s and VM’s, all of them also have docker installed
I use Proxmox with a VM for each service I provide and I still use docker compose.
This way I have nice VM backups (with Proxmox BS) + dockerized services deployed via GitLab CI pipelines.
Check out the krun runtime for podman, if you want stronger container isolation from the host. It creates a small VM for each container. Gpu passthrough on linux is limited though.
I used to run bare metal monolith container host and it worked pretty well but eventually network configurations started tripping over each other and causing real issues (complicated by me running rootless Podman and wanting to run K3s cluster etc). I wanted to run Proxmox native containers but it turns out they run full root therefore breakout in one container means full host access, so now I run VMs as container hosts.
You should be using them depending on your needs. There’s a difference between app containers (single app per container), system containers (multiple apps in the same container) and VMs (OS + whatever, virtualized rather than containerized).
You probably need app containers most of the time so docker or podman is a good fit. But sometimes you might feel more confortable with another level of abstraction. Tools like Proxmox or Incus make it easy to manage “system”-level abstractions like system containers (with LXC) or VMs (with KVM) and give you a unified management approach.
You don’t have to give up app containers either. You can run docker or podman inside an LXC system container and have the best of both worlds.
Deciding when to take advantage of the system abstraction is the hard part. A simple rule of thumb is to do it when you’d like to manage the “machine” that holds the stack in a way that’s different from the host. Maybe you want to run a different Linux distro; maybe it’s the same distro as the host but you want to organize it differently; maybe you need to run a non-Linux OS.
I have a mix…
I have a home built NAS running on Arch with local installation of Immich (ie not a container)
I also have a low power, passively cooed box with Proxmox installed to run VMs for Home Assistant, ansible, uptime kuma, smokeping, etc.
I only intended to run Proxmox to test it out (my Home Assistant was running on a Pi3 and getting too slow for Voice), as I’d been using ESXi for years at work.
I now want to migrate to Arch with Incus and move those VMs across, but as I currently only have the 1 host and hardware’s expensive, it’ll stay that way for a while…
(Bonus: I have a few RasPi Zeros scattered around the house too running various things bare metal)
I like Proxmox for it’s first-class treatment of ZFS. You can easily run Docker/Podman on top of it or in a VM. Proxmox has some other advantages like replication and clustering, but I’d say you don’t need that in a home setup (at least I don’t).
If I had to redo my setup today, I’d probably give TrueNAS SCALE a chance though.
Generally speaking:
Generally, these days, containers win 99% of the time as the best home lab backbone.
Just about everything is Proxmox for me, though a few things are just Debian.
I use LXCs, in general I don’t like Docker so I avoid it in most cases. I have a couple VMs for it where I may spin something up to test, but if its around long-term it gets moved to an LXC. Usually because I prefer a bit more control on setup, and find it more manageable than having a bunch of mounts for everything. It also keeps things arranged in a way I prefer, gives me a single interface to access what I want, and makes backup more straightforward.
Whether I want a whole VM or just to run a single app as a service, I only have to go to one spot to do it.
I don’t care much for proxmox but that’s because I live in the terminal anyway and have a lot of experience administering Linux systems. So for me it’s just an extra layer of complexity, the benefits don’t really apply when my setup has IaC, most of my containers are in Podman rather than LXCs, my backups are automated with my own scripts and cronjobs, and I only run a couple of VMs. Also it makes encrypting the base system more difficult than it is with a standard distro
When I got started I saw a lot of suggestions for proxmox. For me, it was an extra layer I didn’t feel like I needed. I installed Open Media Vault (just Debian with a web interface) and I have my docker containers for running the apps and eventually setup VMs for various other things. Staring out, Docker was a bit of a headache but now that I’ve got practice with it docker compose is fairly simple.
I appreciate that these days there are a bunch of really good tools out there and options.
I moved away from proxmox about 3 years ago to incus, primarily because Proxmox has a lot going on that I don’t need, but also incus is much more amenable to configuration with ansible. Also, and maybe this has changed recently, but passing through PCI devices to incus is much easier.
I use Proxmox as a VDI server. I understand that this isn’t homelab territory, but selfhosted VDIs have proven exponentially more reliable and easier to manage than cloud based ones (after the initial PitA setup). Flawless copy/paste, screen resize, and most importantly, file transfers. When you connect to 12 different clients, each with a different set of security requirements, system hardening, monitoring, and VPN access, being able to console amd fully interact with a sandboxed desktop becomes priceless.
because sometimes i need a vm (home assisstant has more features thsn home assisstant container), sometimes a container (i mostly use lxc).
its not really an extra lauer because proxmox is an os.you use nixos i use proxmox. everything is out of the box. proxmox has comminntiu scripts to run everything and set them up. there is an i stall script for about everything community-scripts.org
sure podman has similar setup but i also need vms and they are all mamaged in one place
EDIT: you can read the script, its text
so want to install radarr? Paste this totally not sketchy bash script into your terminal and execute it as root!!
ProxmoxVE helper scripts have been around for quite a while and are pretty easy to read, as well as being pretty well supported in the community. You can just go to the GitHub page and read them. I’ve used some of their scripts before by downloading them, customizing the scripts to my needs, and hosting it on a local web server inside my network. Now I can run one command and I’ll have a new debian container on my host with ssh keys and everything.
While I agree with you that they’re well seasoned and established I disagree a lot with them being easy to read. They have a lot of sub-scripts that they include willy-nilly over multiple levels.
Another thing I dislike about them is basically the same as with docker, that they all include everything in it. Like every container wants his own mariadb/postgres/whatever. It should be at least an option to use existing containers, I don’t need to run 5 psql servers… (I know that it had advantages too having everything separate but ehh). And then switching the software back to using the existing psql is more work then just not using the scripts at all…
@oha @terabyterex @selfhosted
You should checked that script first.....
I use a different ‘type 1’ hypervisor, create a small handful of VMs and then have a mess of containers inside containers in a couple of those. There’s a distinct VM for email since that has so many special requirements that it was just easier, one lxc/incus container host for admin tools, one for user apps, one for piefed because all these fediverse apps are so busy with the constant exchanges it kind of needs its own host to not affect others…
Why is more a case of ease of administration frankly. Pretty much everything gets auto patched and backed up and it’s easy to put up a new service or restore things if I hose something up.
The structure though has been a years long evolution that started out as ‘I just want a NAS to share files’ which then needed a frontend to make it more user friendly, and another app to play videos, and why not organize different file types rather than just dump em in a folder…
I run Proxmox and have all my services running as docker containers on a VM. Snapshotting is amazing
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
[Thread #111 for this comm, first seen 24th Sep 2026, 14:20] [FAQ] [Full list] [Contact] [Source code]