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?
  • Jason2357@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 days ago

    Ram is expensive… so all my 24x7 things are containers (docker compose on Alpine Linux) or FreeBSD jails.

  • fruitycoder@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 days ago

    I use VMs for OS isolated and hardware isolation. I run containers on top of OSs for apps.

    That said I use Harvester so I can run containers on bare metal AND VMs as containers.

    Even on one bare metal I do this, so I can spin up a test VM of harvester to confirm configs. If you one node is super beefy a neat trick is to have VMs running a cluster so you can have a kind of high availability even if your infra is a single point of failure.

  • suicidaleggroll@lemmy.world
    link
    fedilink
    English
    arrow-up
    20
    ·
    6 days ago

    It’s not an either-or scenario. Running services in Docker/Podman is great and makes a lot of sense, as you’ve found. But there’s no reason the OS running those Docker containers can’t be a VM on a hypervisor like Proxmox. Then you get the simplicity of Docker, in addition to the isolation and segmentation (network and process) provided by VMs, and snapshot-based incremental backups from PBS. It’s the best of both worlds. You wouldn’t have a VM per service like you ran before, instead you’d have a VM per group of related services with common networking and security requirements. For example, all of your publicly exposed services can run in Docker in their own isolated VM that’s walled off from the rest of your network, while your internal-only services also run in Docker, but on a separate VM on your internal network.

  • WeirdGoesPro@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    24
    ·
    6 days ago

    I used to be bare metal Debian, but I moved to ProxMox for a few reasons.

    1. Backup and restore is a breeze, and the UI makes things human friendly.
    2. It makes it easier to separate my wiki notes in an LXC so that I can still see them if I’m doing maintenance on my main server VM that requires restarts.
    3. There is essentially no noticeable performance reduction.

    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.

    • trilobite@lemmy.ml
      link
      fedilink
      English
      arrow-up
      3
      ·
      5 days ago

      I secon running docker apps on a Proxmox VM. It has saved my homlab admin time significantly.

      • WeirdGoesPro@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 days ago

        I could, but it’s more convenient for me to have it served up by an LXC container on the server. I’m usually interacting with things on a laptop or a phone, so it’s just easy being able to have a tab open with my wiki served through Tailscale, and ProxMox makes sure it stays backed up to an external drive and the cloud so I don’t lose anything.

        The few times I’ve had a critical error with ProxMox, it’s been super simple to do a fresh install and just restore my daily backup.

        There are many ways it could be done, but this way has been mine, and it’s worked for me.

  • hirihit640@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    9
    ·
    5 days ago

    Security is a big reason to use VMs. Containers share the kernel with the host. That means that any of the kernel vulnerabilities from this year (like DirtyFrag and CopyFail) could have been used to compromise your host. Once the host is compromised, the only way to be safe is to literally buy a new machine. Seriously. Viruses can bury deep and even infect the motherboard firmware to persist indefinitely.

    Kernel vulnerabilities are frequent enough that I find VMs worth it. I still use containers in my VMs though.

  • retry1203@lemmy.ca
    link
    fedilink
    English
    arrow-up
    14
    ·
    6 days ago

    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.

  • Lka1988@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    4 days ago

    Proxmox is a hypervisor, while docker is containerization.

    Comparing them is like comparing an apple to a glass of milk. They have different use cases.

    I run multiple VMs specifically for Docker services. I run other VMs for other things. And LXCs for applications where containerization makes sense but I don’t want to use Docker.

  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    10
    ·
    6 days ago

    I’ll die on this hill.

    Containers run on “bare metal” in the same way that other processes on your system run.

  • Alvaro@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    6
    ·
    6 days ago

    Generally speaking:

    • just want it to work with minimal effort: containers
    • need very custom things, or very high efficiency: bare metal
    • need high security, emulating bare metal, or like to do extra IT work: virtualization

    Generally, these days, containers win 99% of the time as the best home lab backbone.

  • No_Bark@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 days ago

    I like running docker containers inside of specific unprivileged LXCs on my proxmox host. Why? Because it works and I’m not an expert.

    I can spin up a new LXC and test things without fucking up my entire server. It allows me the flexibility to try new services or attempt things that I’d otherwise be too timid to try on the chance it fucks up my entire system and I have to spend two and half weekends trying to get back to where I was when things just worked.

  • ferret@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    4
    ·
    5 days ago

    Having to manually start and stop your VMs is very atypical, proxmox can absolutely handle that itself

  • Jo Miran@lemmy.ml
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 days ago

    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.

  • Svinhufvud@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 days ago

    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.

  • lemonaz@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 days ago

    Proxmox exclusively with unprivileged LXCs, which themselves host other docker containers/stacks managed with Dockhand (a more modern alternative to both Portainer and Dockge). I have a very tiny low power machine so I have to be kind with my resources, therefore no VMs. But LXCs are simpler anyway. I can easily pass devices like /dev/tun for tailscale and i forget the name of the iGPU for accelerated workloads (for Immich, Nextcloud).

    Reasoning: with containers it’s easy to make mistakes without dire consequences (just docker compose down -v and start over). The LXCs are easy to back up and restore. They hold internal running state of whatever docker containers I run in them.

    Pro tip: don’t map host paths using the UI (mp0 etc), use lxc.mount instead. This will let you continue to have snapshots of your LXCs whereas the other approach makes your LXC incompatible with snapshots.

    Good luck!