Hi. Since yesterday i selfhosted all my stuff with a raspberry pi and two odroids. Everything works ok, but after i read about a few apps that are not supported by the arm-architecture of the SBCs and about the advantages of the backup-solution in proxmox, i bought a little server (6500T/8GB/250GB) to try proxmox.
Installed proxmox, but now - before i install my first VM - i have a few questions:
a) What Linux OS do i take? Ubuntu Server?
b) Should it be headless?
The server is in the cellar of my house, so would there be any advantages of installing an OS with a GUI?
Pretty much all my VMs are headless Debian for whatever purpose I’m using them. I’ve tried Ubuntu but it has done some weird shit with snaps over the years, things like installing Docker concurrently as a snap when I’ve already had it on as an apt package then shitting itself unpredictably until I figured out what was going on.
If you can, use LXCs where appropriate to reduce overhead usage. An LXC container will use much less resources than a full VM. You can even set up Docker on a Debian LXC and I’ll set up a few hosts like that to partition my applications.
There’s little reason to install a desktop environment for a server. Learn how to set up SSH keys and use the command line, most server applications don’t have GUI interfaces anyway unless they provide a webpage for admin, in which case you don’t need a DE anyway.
If you do need remote access with a GUI, try installing a Guacamole webtop instance to remote into, and manage your services from that.
If you’re setting up Proxmox either use the Proxmox ISO or start with Debian Bookworm. The only Linux machines I have with a GUI are my desktop and my laptop, both running Debian with KDE. All my servers run Debian unless there’s a good reason not to.
I run Debian on all my vms, they have no GUI installed at all. I manage all of them over SSH
Yes, that is what i am used to.
I guess headless is better for performance and i do not see an advantage at all.
Another question: Why do you have several debians-vm’s? You also could take one, right?
I use multiple VMs, and group things either by security layer or by purpose.
When organising by purpose, I have a VM for reverse proxies. Then I have a VM for middleware/services. Another VM (or multiple) for database(s). Another VM for backend/daemon type things.
Most of them end up running docker, but still.
Lets me tightly control access between layers of the application (if the reverse proxy gets pwnd, the damage is hopefully contained there. If they get through that, the only get to the middleware. Ideally the database is well protected. Of course, none of that really matters when there’s a bug in my middleware code!)
Another way to do it is by purpose.
Say you have a media server things, network management things, CCTV things, productivity apps etc.
Grouping all the media server things in a VM means your DNS or whatever doesn’t die when you wiff an update to the media server. Or you don’t lose your CCTV when you somehow link it’s storage directory into the media server then accidentally delete it.
If that makes sense.
Another way might be by backup strategy.
A database hopefully has point in time backup/recovery systems in place. Whereas a reverse proxy is just some config (hopefully stored on GitHub) and can easily be rebuilt from scratch.
So you could also separate things by how “live” the data is, or how often something is backed up, or how often something gets reconfigured/tweaked/updated.
I use VMs to section things out accordingly.
Takes a few extra GB of storage/memory, has a minor performance impact. But it limits the amount of damage my dumb ass can do.
I run one VM which some small docker containers go on, but whenever I’m trying something out it’s always in a Debian or Ubuntu VM - things just usually work easier. If it turns out to be a service I’m serious about running, then I’ll sometimes spend the time to set it up in it’s own LXC. Even a single Docker container.
I much prefer each service in it’s own VM or LXC - for that same reason. Easier backups, easier to move to other nodes, easier to see the resources being used.
@moddy with that processor and your 8GB you have plenty of room to play with multiple VM’s. Headless Ubuntu is probably the best place to start just because of the volume of results you get when googling issues. Enjoy.
I run a vm for each service, a php vm, a mysql vm, etc. But yes you could just have a big vm run everything
Another question: Why do you have several debians-vm’s? You also could take one, right?
As I wrote in my other reply, you typically want a separate VM for each service so that the OS configurations don’t conflict, and also so that you can shut down the VM for one service (e.g. for installing updates or migrating to another cluster node) without causing downtime to other services.
- Debian, unless I’m doing something specific like Home Assistant OS
- Yeah, usually. The GUI uses so much system resources just to sit there and be unused. That said I do have a Windows VM for Quicken that I remote into to manage my families finances. Of course that isn’t headless.
You mentioned selfhosting, so it’s safe to assume you want to install servers. Servers are headless by default.
But the proxmox admin web interface also makes it easy to access a VM’s GUI remotely.