Hey everyone!
I’ve been rocking Proxmox for a little over a year on an old Mac Mini with a failing NIC (I probably damaged it when I installed the SSD). So I decided it was time to get some new used cheap hardware and I have just received a HP Elitedesk 800 G3 SFF, going to throw 32GB of RAM, a 1TB M2 NVMe boot drive and a 4TB SATA drive for media in it (this will replace my external 4TB drive).
Right now in Proxmox I’m running a Docker VM with Debian (Transmission-VPN container, ByteStash, FreshRSS, KaraKeep), another Debian VM for Visual Studio Code so I can remote into VS Code on my Mac and iPad and couple of LXC containers (Plex, Open WebUI and Pi Hole).
Honestly Proxmox feels like overkill for what I’m doing, half of what I’m doing is either individual LXC containers or I find myself SSH’ing into the Docker VM. The Proxmox helper scripts are great, but I feel like I’m not learning much and I don’t know how much I can trust random GitHub URLs.
I’d like to start learning and becoming more self-sufficient with Linux. I was pretty excited by the idea of learning NixOS, get comfortable learning the code and then creating distinct configurations for different systems, including my Mac devices with Darwin… then I was reminded of all the recent bullshit happening in the community… I don’t want to get deep into the discussion in this thread, but I don’t really want to use/support a distro that Palmer Luckey and Anduril are trying to influence and control.
So I’m trying to decide if I should stick with Proxmox, try something like Arch or keep an eye on what’s going down with Nix and have a good backup strategy if the situation worsens.
I’d probably switch from Docker to Podman, use Wayland with Niri and learn NeoVIM and use SSH instead of VS Code remote tunnels.
Based on my current setup and my goals, what would you suggest I do?
As someone currently deep into Nix (even contributed to nixpkgs), I’m currently in the process of migrating away and am planning on just running good old Debian stable with docker compose for my home server. I wouldn’t waste your time learning Nix, it isn’t a transferable skill and totally locks you into the ecosystem.
Another option is OpenMediaVault. It’s based on Debian. Very stable. Has a good community supporting it.
I’m on Proxmox because I don’t have time to learn my way around my entire homelab, so I need tutorials and Proxmox has the biggest community. I use Coolify for easy deployments and testing software.
Same thing with Docker, I don’t like it, but I can’t afford using an alternative yet.
But I wish I could get away with using Ublue core + cockpit + podman quadlets + QEMU/KVM. But man, the Fedora & Cockpit docs are so newbie unfriendly, and the Cockpit community is pretty much non-existant compared to Proxmox. There’s no one doing tutorials for it on youtube, while you can find a new PVE tutorial every single day.
My advice is go towards where your own priorities are. If you don’t want to support a certain mindset, just don’t. If you want to do it the manual way and learn everything you can, then go with Arch, they’ve got the greatest Linux wiki that has ever been written. If you want easy to follow tutorials stay with PVE. If you want an unbreakable system go with Ublue core or Ubuntu core (I’m personally not liking Canonical though).
Follow your thirst for knowledge, In a few years you’ll be a pro.
If you want to learn, go for it! Although if you’re running anything important, be sure you’ve got backups, and can restore your system if needed. I wouldn’t personally worry about the future of NixOS. If the project “goes the wrong way”, it’s FOSS, someone will fork it.
I’ve considered Proxmox, but immediately dismissed it (after light testing) due to the lack of control over the host OS. It’s just Debian with a bunch of convenience scripts and config for an easy libvirt experience. That’s amazing for a “click install and have it work” solution, but can be annoying when doing something not supported by the project, as you have to work around Proxmox tooling.
After that, I checked my options again, keeping in mind the only thing the host OS needs is KVM/libvirt, and a relatively modern kernel. Since it’s not intended to run any actual software besides libvirt, stability over quick releases is way more important. I ended up going with Alpine Linux for this, as it’s extremely light-weight (no systemd, intended for IoT), and has both stable and rolling release channels.
It is significantly more setup to use libvirt directly. After installation, Proxmox immediately allows you to get going. Setting up libvirt yourself requires effort. I personally use “Virtual Machine Manager” as a GUI to manage my VMs, though frequently use the included “virsh” too.
I think having a solid/stable virtualization layer is very helpful. Whether that’s Proxmox, Incus, or something else, it’s a matter of taste.
You can then put NixOS, Guix, Debian, Arch, whatever on top.
You’re more of an expert in home-server stuff than me, but here’s what I do and my reasons why, maybe they can help you find an answer yourself.
I’ve chosen Arch for my homeserver (contrary to most people prefering Debian) since:
- I’ve been using it for years and know a lot about it, so maintenance isn’t an issue at all.
- Newest software = latest bug and security fixes, features etc.
- the Wiki makes installing anything a breeze and many questions and issues are already answered in the arch forums
I don’t use a docker image and I don’t see its necessacity (again, you know better then me). I’ve seen however servers that use NixOS because they can have the whole infrastructure/system in a git repo, which makes moving to a new server easy and without issues, which is not your case since you’ll be running it on the same machine.
I’ve never used proxmox but if it’s specifically built for what you’re looking (ie. home server) then go for it even if it’s overkill. For me personally, Arch works great as a server.
fwiw, I’ve got fedora and ubuntu on the server, I don’t interact much with the underlying os, everything is in a container. The user (me) facing differences are that I’ve got podman on fedora, docker on ubuntu. Selinux on fedora vs apparmor. Cockpit on fedora vs no cockpit preinstalled on ubuntu.
I could also use arch as a base, to me, the user, it wouldn’t make much difference other than that I would have to manually install and setup all the tools that are already setup on fedora. It’s all linux.
Docker to Podman, absolutely. Also checkout using base images instead of random intransparent downstream ones.
VMs are debatable. They are nice for separating things way better than docker does.
As distro, NixOS is very custom and you will want to learn its way. Arch does not make sense I think, but you can use anything as a server.
Otherwise Alma or Debian? Try HeliumOS too! Or uBlue uCore
Here’s my journey from arch to proxmox back to arch: https://bower.sh/homelab
I was in your shoes and decided to simplify my system. It’s really hard to beat arch and I missed having full control over the system. Proxmox is awesome but it felt overkill for my use cases. If I want to experiment with new distros I would probably just run distrobox or qemu directly. Proxmox does a lot but it ended up just being a gui on top of qemu with some built in backup systems. But if you end up using zfs anyway … what’s the benefit?
Proxmox is approaching enterprise class. I would go that direction without much thought.
Arch
I daily drive Arch on my personal laptop, which is great. I also tried running an Arch server at some point… which I’m not sure about. The updates really start piling up on a server because I’m not running
pacman -Syu
all the time… which feels bad, but maybe it’s fine? idk. Not sure what other people think.NixOS
There is something called Guix, which is a hard fork of NixOS from a long time ago. It’s not a 1:1 replacement. But it does have some of the big features like reproducible builds. The Guix folks tend to be really loud about running 100% libre open source code, but don’t worry you can’t run non-foss code very easily to get your laptop working. It may not work for your usecase, but just something to know about.
Guix scares me because of all the Lisp and replacing systemd with GNU Shepherd which also uses Lisp
all the Lisp
I mean, yeah, all of the userland stuff is configured in Lisp. User level
guix
command is also written in Lisp.and replacing systemd with GNU Shepherd which also uses Lisp
And the lower system is also configured in Lisp and the init program is written in Lisp! 🙌 Guix users would consider that a feature, not a bug. It’s all Lisp! 🥳
Although, honestly I do wish they just used systemd and had Lisp bindings. Systemd does a lot of useful stuff besides just being an init system. GNU Herd only does basic init system stuff.
Not to mention that some apps actually depend on systemd to build and/or run, which makes packaging those apps tricky…
I’ve had an itch to learn a functional language for a while now and Lisp being a general-purpose programming language used for pretty much everything, instead of Nixlang, which is a DSL, that’s used sometimes (a lot of the times? you still need bash.), felt like a good fit for me.
Also worth noting, you can use
guix
just as a package manager on any Linux distro. You don’t have to run GuixOS. Same as Nix/NixOS. I was running GuixOS for a few months, but I fell off the wagon and I’m back on Arch, btw for now.NixOS is definitely gonna have a bigger software selection, but keep in mind you can install Flatpaks and use distrobox on GuixOS, so you should still be able to install most of your apps. Actually, I believe you can install Nix packages somehow, but I didn’t have a need to try that.
but lispppp 😩
I like Kotlin as a functional language
(thx 4 the writeup)
but lispppp
I think you meant
((((but lisp))))
or something. 😅
I’d say Arch Linux if you are sure about doing something else than Proxmox. The wiki and help posted on the internet might benefit Arch switch currently. You can get the experience you are looking for and it doesn’t box you out of using Nix. Arch will get you going sooner IMO.
NixOS seems fun though and I’ve only recently starting messing with it. You will do best engaging with what you prefer best. The NixOS switch could pay better dividends in the future though.
If I recall this hasn’t been the first time NixOS has had to consider Palmer/Anduril. You could keep an eye out for the auxolotl project that is doing an alternative/fork of Nix.
Proxmox. Then an Arch VM to fuck around with and break.
Neovim is the same as Vim but with Lua capabilities and a few other niche items. You might can use just Vim. I’ve been testing it for a year, but I don’t see much advantage to it. Ssh is cool and is widely used, so you should learn it. If you ever work in a lab that uses linux or a data center, it will be useful, and it’s not hard. Download putty (ssh client) on any Windows computer and try to get into your linux machine with it. Or just use it in a command line with the destination IP and go from there.
Before you use Arch, just know that it is a bit tougher than the other OS’s. I use it with Hyperland and had to delete, update, and then rebuild half my system just to update the OS because the libraries were out of sync. Arch can be a pain to maintain, and even small things like the package manager mirrors break frequently. So you just need to install or update something, and you end up fighting with pernicious mirror updates to your pacman files instead. It can be annoying. My take on Arch after almost a year is that you have to either be super good at Linux, or be nerdy enough to waste time on Linux nonsense and menial maintenance tasks. If you ever plan to get laid and not stare at a screen, get something more easily manageable. That’s just my opinion, and sometimes I suck, so…
and had to delete, update, and then rebuild half my system just to update the OS because the libraries were out of sync.
This does not just happen with proper use of pacman. The most common situation where this does happen is called a “partial upgrade”, which is avoidable by simply not running
pacman -Sy
. (The one exception is forarchlinux-keyring
, though that requires you runpacman -Syu
afterwards).Arch is definitely intended for a certain audience. If you don’t intend on configuring your system on the level Arch allows you to, then a different distro might be a better option. That does not mean it’s a requirement, you can install KDE, update once a month, and almost never have to worry about system maintenance (besides stuff that is posted on Archlinux news, once or twice a year, usually a single command).
bummer that you’ve had issues with arch. but i don’t really understand the issues you’ve had. like setting up reflector should solve the mirrors, and checking the newsfeed before updating will solve a lot of other issues. In the last year I think there was only one, maybe two times that there was manual intervention required from me–and they were both trivial; and the convenience of never having to worry about doing a distro upgrade is so nice… Other than that, hyprland is changing frequently so sometimes you need to update your config–but again, just read the release notes or use a wm that updates less (like sway, dwm). But the changes have never taken more than 20 seconds to fix, and they’ve never been breaking for me. Maybe some of your issues were due to the DDOS attacks that have been going on? Also how much do you use the AUR?
My take on Arch after almost a year is that you have to either be super good at Linux, or be nerdy enough to waste time on Linux nonsense and menial maintenance tasks.
while i think this is overstated, i do agree that you need to be a certain kind of person to enjoy arch.