Hi all. I was curious about some of the pros and cons of using Proxmox in a home lab set up. It seems like in most home lab setups it’s overkill. But I feel like there may be something I’m missing. Let’s say I run my home lab on two or three different SBCs. Main server is an x86 i5 machine with 16gigs memory and the others are arm devices with 8 gigs memory. Ample space on all. Wouldn’t Proxmox be overkill here and eat up more system resources than just running base Ubuntu, Debian or other server distro on them all and either running the services needed from binary or docker? Seems like the extra memory needed to run the Proxmox software and then the containers would just kill available memory or CPU availability. Am I wrong in thinking that Proxmox is better suited for when you have a machine with 32gigs or more of memory and some sort of base line powerful cpu?

  • fortera@lemmy.zip
    link
    fedilink
    English
    arrow-up
    1
    ·
    17 hours ago

    I use Proxmox/virtualisation because I want to be able to run services within their own OS. I’ve got a VM dedicated to docker both at home and in my colocation, since a lot of services I’m happy to just chuck on there, but there’s others with more complex setups, and other services/systems that just running them in docker isn’t an option.

  • Pika@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    19 hours ago

    I’m currently running proxmox on a 32 gig server running a ryzen 5600 G, it’s going fine the containers don’t actually use all that much RAM and personally I’m actually seeing a better benchmarks than I did when I just ran as a Bare Bones Ubuntu server, my biggest issue has actually been a larger IO strain than anything, because it’s a lot more IO heavy now since everything’s containerized. I think I easily could run it with a lower amount of ram I would just have to turn off some of the more RAM intensive items

    As for if I regret changing, no way Jose, I absolutely love the ability of having everything containerized because I can set things up how I want it when I want it and if I end up screwing something up configuration wise or decide that I no longer need that service I can just nuke the container without having to remember well what did I install on this program so I can remove it and do other programs need this dependency to work. Plus while I haven’t tinkered as much in this area, you can hard set what resources you want a lot to each instance, so if you have a program like say a pi hole that you know is never going to use x amount of resources to be able to appropriately work you can restrict what it can do so if something does go wrong with it it doesn’t use all of your system resources

    The biggest con out of it is probably having to figure out how to do the networking side because every container is going to have a different IP address, I found using a web dashboard is my friend because I can have heimdel tell me where all my services are and I just have to click the icon to bring me to the right IP address, it took a lot of work to figure out how it’s operational and how to get it working, but the benefits I’ve gotten of having it is amazing. Just make sure you have a spare disk to temporarily clone partitions to because it’s extremly difficult to use existing disks in the machine. I’ve been slowly going one at a time copying it over to an external drive nuking the and then reinitializing the disc as part of the proxmox lvm and then copying the data back over onto their appropriate image file.

  • TechnicallyColors@lemm.ee
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    1 day ago

    I used Proxmox for a couple years and it’s good if you run a lot of VMs or LXCs, but I found that I’m not really the target audience. I ended up only running one Debian VM for my Docker containers. It was fine, but I eventually felt that Proxmox added no value for me, and the end result was sacrificing some memory and performance from using virtio emulations for CPU/GPU/RAM/filesystems. If your machines only have 8-16GB of RAM I don’t think it would be a good idea, as I’ve seen the rule of thumb is to dedicate 2GB for Proxmox’s usage, which is in addition to any guest OS’s requirements. Meanwhile I have a Debian install on a VPS that takes about 450MB of RAM.

    For me, pros:

    • Native ZFS support - invaluable, ZFS is terrific. MergerFS+SnapRAID is a decent replacement but the dodgy tooling and laundry list of footguns makes me nervous to use it on important data. ZFS is idiot-proof, as long as you know what you’re doing during the initial setup. RAIDZ expansion is coming this year and you can still use mixed-size disks in a RAIDZ as long as you accept that all disks are equivalent to the smallest one, so I personally feel ZFS is acceptable for grab-bag disk usage now
    • Separation of bare metal and server environment, which means you can spin up another server VM from scratch without impacting the previous one, then switch with zero downtime. In the end, I replaced Proxmox with Debian on ZFS root (ZFSBootMenu) and wrote a few hundred lines of bash to automate the installation, so when I switched it only took about 30 minutes of downtime start to finish.
    • Isolation of different environments. If my VM gets hacked, it will have a harder time reaching my Proxmox host etc. I run all services in isolated Docker environments anyway so this isn’t that big of a perk for my threat profile.

    Cons:

    • Partitioning RAM for ZFS ARC, Proxmox, and VM leads to inherent inefficiencies at the margins.
    • I usually give my VM n-1 CPU cores, which is still less power than if I had just used the CPU natively.
    • GPU passthroughs to VM can be less efficient, depending on the GPU and how it handles it. My iGPU is less performant when using its ~SR-IOV feature
    • Learning requirement - not a huge learning curve but it’s a lot of knowledge that I will not use now that I’ve stopped using Proxmox
    • Hosting your data pool on the Proxmox host or a dedicated data VM means that your server VM needs to use NFS to access its data, which lacks a handful of features (e.g. inotify) and is a pain
    • Need to maintain two systems for updates, downtimes, etc
    • More points of failure
    • Extra startup time
    • Run by a company that thinks it’s okay to use winrar-style nag popups every time you load the console, and requires you to manually dig through the source to disable that. I understand it’s their business model, it doesn’t change how it affects me the end user who lacks $120/year to spend on disabling a popup
    • k_rol@lemmy.ca
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      $550? For a homelab you should only need to pay €110/year. What am I missing here?

    • hjpoijnerflkjn@feddit.de
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      I went exactly the same route. Years of proxmox realizing it is not KISS in any way for my use cases. Switches to Nixos on ZFS root (so no bash installation scripts ;) ).

      However, docker has not the same level of isolation and security as VMs. I am currently looking into gVisor for that.

  • machinin@lemmy.world
    link
    fedilink
    English
    arrow-up
    23
    ·
    2 days ago

    For me, pros are:

    • Fun to learn something new
    • Easy to test different systems. For example, I can play with different router or NAS software without having a separate computer around.
    • I’ve been able to create different “computers” that serve different needs and require different levels of security.
    • Currently, a cluster is probably overkill, it was a fun experiment.

    Cons

    • Updating all the different systems can be a pain. I could probably automate it, but I haven’t made the time to learn it yet.
    • As a beginner, I’m throwing a bunch of parts together and hoping it will work. I should probably be more strategic in my implementation, but I don’t know what to prioritize. I’m sure I’ll have to start over in the future.
    • With the previous point, the storage setup doesn’t seem very intuitive. I probably need to set up that better.
    • I haven’t quite figured out backups yet. My VM backups all seem too big. I need to figure that out and automate it.

    Hope this is helpful.

    • umbrella@lemmy.ml
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 days ago

      a simple cron job pointing to an update.sh with an apt update && apt upgrade -y does the trick.

      i wouldnt recommend you to completely automate it though

      debian has unattended-updates by default and generally takes care of itself

  • ikidd@lemmy.world
    link
    fedilink
    English
    arrow-up
    16
    ·
    edit-2
    2 days ago

    VMs under KVM are pretty much bare metal and Proxmox doesn’t use much for resources itself, it’s basically a headless Debian with a webserver interface to do all the KVM stuff.

    Proxmox, especially if you use ZFS for the VM datastore, makes a home lab so much easier to revert, backup and deploy/clone VMs and LXCs. I highly recommend it if you’re just starting out. Once you wrap your head around it, it gets out of the way and lets you just tinker with your projects, and not have to manually do everything in VirtManager or at the command line.

    Combined with Proxmox Backup Server, it’s a production ready hypervisor for anything you decide to keep. Also, the HA features work well enough that I had my main routing OPNsense VM jump between nodes when the primary node lost a drive, and I didn’t notice for a week, it was that seamless.

    • blackstrat@lemmy.fwgx.uk
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 days ago

      How’d you set that up with Opnsense fail over? I have an opnsense VM with input straight from the ISPs FTTP box to the NIC on my server. So I can’t fail over to my second proxmox box without swapping the cable over.

      • ikidd@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        Probably depends on the ISP, but I just have 2 nics in each server, and eth1 on both is on a switch to the cable modem. If one goes down, the other comes up fine. Can’t recall if I spoofed the same MAC on the OPNsense VMs.

    • SaintWacko@midwest.social
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 days ago

      Seconding this. Especially if you’re still learning and making mistakes, it’s so nice to just be able to destroy a VM/CT and start over, rather then potentially breaking other things or the OS itself.

      • ddh@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        2 days ago

        Also needs mentioning: clustering. I have a years old cluster with none of the hardware I originally started with, but my Pi-hole is still there. Having the ability to migrate guests between hosts is a game changer when you frequently replace or rebuild said hosts. With the right setup, migration can have as little as a few seconds of downtime, or even no downtime at all. You can’t do that with bare metal installs.

  • DeltaTangoLima@reddrefuge.com
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    2 days ago

    It all depends on how you want to homelab.

    I was into low power homelabbing for a while - half a dozen Raspberry Pis - and it was great. But I’m an incessant tinkerer. I like to experiment with new tech all the time, and am always cloning various repos to try out new stuff. I was reaching a limit with how much I could achieve with just Docker alone, and I really wanted to virtualise my firewall/router. There were other drivers too. I wanted to cut the streaming cord, and saving that monthly spend helped justify what came next.

    I bought a pair of ex enterprise servers (HP DL360s) and jumped into Proxmox. I now have an OPNsense VM for my firewall/router, and host over 40 Proxmox CTs, running (at a guess) around 60-70 different services across them.

    I love it, because Proxmox gives me full separation of each service. Each one has its own CT. Think of that as me running dozens of Raspberry Pis, without the headache of managing all that hardware. On top of that, Docker gives me complete portability and recoverability. I can move services around quite easily, and can update/rollback with ease.

    Finally, the combination of the two gives me a huge advantage over bare metal for rapid prototyping.

    Let’s say there’s a new contender that competes with Immich. They offer the promise of a really cool feature no one else has thought of in a self-hosted personal photo library. I have Immich hosted on a CT, using Docker, and hiding behind Nginx Proxy Manager (also on a CT), accessible via photos.domain on my home network.

    I can spin up a Proxmox CT from my custom Debian template, use my Ansible playbook to provision Docker and all the other bits, access it in Portainer and spin up the latest and greatest Immich competitor, all within mere minutes. Like, literally 10 minutes max.

    I have a play with the competitor for a bit. If I don’t like it, I just delete the CT and move on. If I do, I can point my photos.domain hostname (via Nginx Proxy Manager) to the new service and start using it full-time. Importantly, I can still keep my original Immich CT in place - maybe shutdown, maybe not - just in case I discover something I don’t like about the new kid on the block.

    That’s a simplified example, but hopefully illustrates at least what I get out of using Proxmox the way I do.

    The cons for me is the cost. Initial cost of hardware, and the cost of powering beefier kit like this. I’m about to invest in some decent centralised storage (been surviving with a couple li’l ARM-based NASes) to I can get true HA with my OPNsense firewall (and a few other services), so that’s more cost again.

  • snekerpimp@lemmy.world
    link
    fedilink
    English
    arrow-up
    19
    ·
    2 days ago

    Proxmox is based on kvm/qemu, and is very resource conservative. There is virtually no impact on performance due to the hypervisor, even on older processors. Scheduling on the cpu and hypervisor makes running multiple VMs at the same time trivial as well. RAM and I/O bandwidth are the two things that can affect performance. Running out of RAM due to too many VMs will grind you to a halt, but so would running too many applications or containers on bare metal. Running everything off of one spinning sata disk will make it impossible, but again, same downfall on bare metal.

    Those minimal impacts to performance are a minor nuisance compared to the ability to run experiments and learn on sandboxed VMs. Now that TrueNAS has better virtualization support, it has caught my eye as a better homelab solution, but I will always have a proxmox server running somewhere in my stack just due to the versatility it gives me.

  • TCB13@lemmy.world
    link
    fedilink
    English
    arrow-up
    30
    arrow-down
    12
    ·
    edit-2
    2 days ago

    If you know your way around Linux you most likely don’t need Proxmox and its pseudo-open-source… you can try Incus / LXD instead.

    Avoid Proxmox and safe yourself a LOT of headaches down the line. Go with Debian 12 + Incus/LXC, it runs VMs and containers very well. Proxmox ships with an old kernel that is so mangled and twisted that they shouldn’t even be calling it a Linux kernel. Also their management daemons and other internal shenanigans will delay your boot and crash your systems under certain circumstances.

    LXD/Incus provides a management and automation layer that really makes things work smoothly - essentially what Proxmox does but properly done. With Incus you can create clusters, download, manage and create OS images, run backups and restores, bootstrap things with cloud-init, move containers and VMs between servers (even live sometimes).

    Another big advantage is the fact that it provides a unified experience to deal with both containers and VMs, no need to learn two different tools / APIs as the same commands and options will be used to manage both. Even profiles defining storage, network resources and other policies can be shared and applied across both containers and VMs.

    I draw your attention to containers (not docker), LXC containers because for most people full virtualization isn’t even required. In a small homelab if you can have containers that behave like full operating systems (minus the kernel) including persistence, VMs might not be required. Either way LXD/Incus will allow for both and you can easily mix and match and use what you require for each use case. Hell, you can even run Docker inside an LXC container.

    For eg. I virtualize the official HomeAssistant image with Incus because we all know how hard is to get that thing running, however my NAS / Samba shares are just a LXD Debian 12 container with Samba4, Nginx and FileBrowser. Same goes for torrent client that has its own container. Some other service I’ve exposed to the internet also runs a full VM for isolation.

    Like Proxmox, LXD/Incus isn’t about replacing existing virtualization techniques such as QEMU, KVM and libvirt, it is about augmenting them so they become easier to manage at scale and overall more efficient. I can guarantee you that most people running Proxmox today it today will eventually move to Incus and never look back. It woks way better, true open-source, no bugs, no delayed security updates, no BS licenses and way less overhead.

    Also, let’s consider something, why use Proxmox when half of it’s technology (the container part) was made by the same people who made LXD/Incus? I mean Incus is free, well funded and can be installed on a clean Debian system with way less overhead and also delivers both containers and VMs.

    Yes, there’s an optional WebUI for it as well!

    Some documentation for you:

    • barsquid@lemmy.world
      link
      fedilink
      English
      arrow-up
      10
      ·
      2 days ago

      I think I was on a previous account the last time I saw you, glad to see you’re still posting. You convinced me to move from Proxmox to Incus a while back. Sure, I had some growing pains, but it’s pretty smooth now.

      I like that I can switch out my distros underneath Incus instead of being stuck on one weird kernel. IME you were absolutely right about that. I’m getting into atomic distros to manage homelab machines. I would not be able to do that on Proxmox.

      I also don’t need to edit a giant Javascript file to remove a nag about enterprise software repos, which is nice.

      • TCB13@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        2 days ago

        I’m glad to know that I could help.

        I like that I can switch out my distros underneath Incus instead of being stuck on one weird kernel

        This is an interesting take that I never considered before, my experience (be it corporate or at home) is usually around Debian machines running Incus and I never had the need to replace the distro underneath it.

        • barsquid@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          2 days ago

          Yeah, I think it’s an unusual case, but I wanted to bring it up to support your point about rejecting their kernel and distro. You can put Incus on a lot of different systems. Don’t like systemd? Put it on Void. Want a declarative setup? NixOS. Minimalist? Alpine.

          Do I want to maintain a full operating system just to run this one type of software? No, that’s absurd. I want to choose the distro I want to work with and then have the software work on top of it.

          • TCB13@lemmy.world
            link
            fedilink
            English
            arrow-up
            3
            ·
            2 days ago

            You can put Incus on a lot of different systems. Don’t like systemd? Put it on Void. Want a declarative setup? NixOS. Minimalist? Alpine.

            This is great, yeah.

    • catloaf@lemm.ee
      link
      fedilink
      English
      arrow-up
      6
      ·
      2 days ago

      In what scenarios have you found Proxmox to be unstable? I’ve had almost no issues with it, despite using it in several unsupported ways.

      • TCB13@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        2 days ago

        Check the bottom of reply, there’s a link there with my experience over the years.

    • A Mouse@midwest.social
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 days ago

      As a small homelabber I agree with this. I started with a baremetal and using Docker, and switched to Proxmox, and now over to Incus, actually currently I am using Debian with cockpit + cockpit-machines. I do like Incus, I keep hopping back and forth between cockpit, I need to settle on one.

      • TCB13@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 day ago

        Actually it would be interesting to see cockpit-machines move to Incus as a virtualization backend and support both LXC containers and QEMU VMs tat way.

    • rottedmood@lemmy.linuxuserspace.showOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 days ago

      Thanks for all this. I’m familiar with Linux and I just think for my need, something like Proxmox is overkill. I do need to learn LXD on its own. Typically I just run binaries of the services I use, and I don’t tend to use docker or other things. I had toyed with the thought of using Proxmox for management purposes because let’s face it management of several on prem and off prem servers can be a pain. But keeping things running fast and smooth (for spouse approval) is important. I’ll look over the links you provided as it’s probably just good for me to learn LXD directly.

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

        Typically I just run binaries of the services I use, and I don’t tend to use docker or other things

        That’s essentially what I do in my NAS with LXD, it’s a great use case for it.

        Enjoy.

    • Possibly linux@lemmy.zip
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      3
      ·
      2 days ago

      LXC is worse than virtualization as it pins to a single core instead of getting scheduled by the kernel scheduler. It also is quiet slow and dated. Either run Podman, Docker or full VMs. Proxmox has a really nice GUI that allows for more advanced management and live transfers between hosts. It also ships with a newer kernel than Debian although it shouldn’t matter as you are using it for virtualization.

      • TCB13@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        2 days ago

        LXC is worse than virtualization as it pins to a single core instead of getting scheduled by the kernel scheduler. It also is quiet slow and dated. Either run Podman, Docker or full VMs.

        First what you’re saying about the scheduler isn’t even what happens by default, that was some crap that Proxmox pulled when they migrated from OpenVZ to LXC. To be fair, they had a bunch of more or less valid reasons to force that configuration, but again it due to kernel related issues that were affecting Proxmox more than regular Ubuntu and those issues were solved around the end of 2021.

        Now Docker and LXC serve different purposes and they aren’t a replacement for each other. Docker is a stateless application container solution while LXC is a full persistent container aimed at running full operating systems…

        Docker and LXC share a bunch of underlaying technologies at on the beginning Docker even used LXC as their backed, they later moved to their execution environment called libcontainer because they weren’t using all the featured that LXC provided and wanted more control over the implementation.

        For those who really need full systems is LXC definitely faster than a VM. Your argument assumes everything can and should be done inside Docker/Podman when that’s very far from the reality. The Docker guys have written a very good article showcasing the differences and optimal use cases for both.

        Here two quotes for you:

        LXC is especially beneficial for users who need granular control over their environments and applications that require near-native performance. As an open source project, LXC continues to evolve, shaped by a community of developers committed to enhancing its capabilities and integration with the Linux kernel. LXC remains a powerful tool for developers looking for efficient, scalable, and secure containerization solutions. Efficient access to hardware resources (…) Virtual Desktop Infrastructure (VDI) (…) Close to native performance, suitable for intensive computational tasks.

        Docker excels in environments where deployment speed and configuration simplicity are paramount, making it an ideal choice for modern software development. Streamlined deployment (…) Microservices architecture (…) CI/CD pipelines.

        Anyways…

        It also ships with a newer kernel than Debian although it shouldn’t matter as you are using it for virtualization.

        It matters, trust me. Once you start requiring modules it will suddenly matter. Either way even if they ship a kernel that is newer than Debian it is so fucked at that point that you’ll be better with whatever Debian provides out of the box.

  • corsicanguppy@lemmy.ca
    link
    fedilink
    English
    arrow-up
    7
    arrow-down
    1
    ·
    2 days ago

    I don’t prefer proxmox, but I will say that when you have even a machine with 8 or 16gb RAM, virtualizing a workload on it just makes sense. At that point the cost is 12% resources, and the benefits IMHO farrr outweight that.

  • LordCrom@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 day ago

    I use it on reclaimed hardware … Works great for me. Has all the features you’d want for a home lab, and I run a few production hosts there as well

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

    Using ProxMox has been extremely useful for me. It has allowed me to experiment with a lot more things than I ever did before—it is very easy to spin up a new VM to test things out.

    I would recommend it to anyone running a home server.

  • specialseaweed@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 days ago

    I used Proxmox for awhile, then went to Unraid. I learned a lot using Proxmox but for ease of homelabbing, it’s tough to beat Unraid. It depends on what you’re wanting from your lab.

  • phucyall@lemmynsfw.com
    link
    fedilink
    English
    arrow-up
    4
    ·
    2 days ago

    You need to understand what Proxmox gives you, which primarily is ability to run/manage/backup/etc VMs easily. If you don’t care about that, don’t use it. I have a fairly well spec’d desktop I use for homelab and I use proxmox because I often do experiments in VMs where snapshots and ability to jump to snapshots is essential. So is being able to spin up a new VM with new OS (like Windows) for example to do some testing. You can still do VMs without proxmox, but proxmox does make it a lot easier for living with daily.

    • TCB13@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      arrow-down
      4
      ·
      edit-2
      2 days ago

      You need to understand what Proxmox gives you, which primarily is ability to run/manage/backup/etc VMs easily

      Yeah and after understanding what it gives you then you move to Incus because while it might be a bit harder to setup it delivers around 80% of what Proxmox does without the overhead, mangled kernel and licensing issues.

      https://cockpit-project.org/ also does VMs and can work for people without cluster needs.

  • phanto@lemmy.ca
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    1
    ·
    2 days ago

    I have tried a couple of Proxmox clusters, one with overkill specs and one with little Mini PCs. Proxmox does eat up a fair amount of memory, but I have used it with Ceph for live migrations. Its really useful to me to be able to power off a machine, work on it, then bring it back up, and have no interruptions in my services. That said, my Mini PCs always seemed to be hurting for RAM. So that’s my pros and cons.

    • Possibly linux@lemmy.zip
      link
      fedilink
      English
      arrow-up
      3
      ·
      2 days ago

      Proxmox doesn’t have a lot of overhead. However, Ceph is a beast and requires very power hardware with at least a dedicated 10g network between hosts for transfers. You also need 5 or more nodes for it to be reliable. I wouldn’t recommend Ceph as there isn’t a lot of point to it. You can get a similar functionality with NFS or ZFS replication.

      • phanto@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        I have it working with LaCP’d 4gb networking for the transfers. Five nodes. I agree though, It’s a beast on RAM.