Proxmox - build your own baremetal server for everything you need

Proxmox Gui

What is Proxmox and why it's a good choice?

Proxmox is and open-source software that allows you to run virtual machines and containers. It's based on Debian which is known as one of the most stable Linux distributions, very lightweight and fairly easy to use. Proxmox is very flexible and with it's web interface it's very easy to manage. With additional extra work you can easily build new VM's from templates and if you want to go even further you will be able to fully automate it with Terraform.

Proxmox is a great choice for people who want to learn little bit more about Linux and want to have their own baremetal server to host their websites, game servers, kubernetes cluster, vpn etc. I'm using Proxmox for couple of years now and I'm very happy with it.

How to install Proxmox

It's very easy to install Proxmox. First you need to have your own server. You can of course setup Proxmox in the cloud but for me it's more fun to have my own server at home. I've bought this little guy HP ProDesk 400 G6 Desktop Mini. It's very small and quiet, on daily basis It's using like 20W of power. I've added additional 16GB of RAM and additional 500GB SSD drive. Whatever you will choose make sure it has at least 16GB of RAM.

Ok, let's install Proxmox. First you need to download Proxmox ISO from here. Choose Proxmox VE (Proxmox Virtual Environment) and download ISO. After you download ISO you need to create bootable USB drive. You can find instruction here How to create bootable USB

Remember to connect your server to the internet via ethernet cable (if you're using WIFI go to this guide Wifi on Proxmox. After that you can boot your server from USB drive and follow installation. It's very easy and you shouldn't have any problems with it. After installation you will be able to access Proxmox web interface via your browser. Just type the IP address that shows up on your screen after installation. You can login with your root username and password that you've created during installation.

How to install Kubernetes cluster with multiple Nodes?

For Kubernetes personally I'm using k3s from Rancher which is a lightweight Kubernetes distribution. It was very easy to install it on Proxmox and configure it to work with multiple nodes. It's using Traefik as a load balancer by default so the only thing you need is to configure ingress rules and forward traffic from your router to your Proxmox server.

How to create VM template?

All information about creating VM template can be found here: Create VM template

Fast way to spin up game server for you and your friends

So, let's say you want to host a game server for you and your friends. You can easily do it with Proxmox. If you're interested in hosting multiple game servers you can try using tools like Pterodactyl, but I've only needed to run one or two game servers at the same time so I've decided to just do it old fashioned way, by creating a VM and installing game server on it.

If you follow previous steps you should already have a template for your VM's. Now fully clone your template and create a new VM. After you create a new VM try to find docker image for your game server. As an example I will use this docker images for The sons of Forest Our VM doesn't have docker installed so we need to install it first. To do that we need to connect to our VM via SSH. It will be easy as we already have SSH server installed on our VM and also template was created with our SSH key so we can connect to it without any password.

So, find your VM IP address and connect to it via SSH. If you don't know how to do it you can go to Proxmox web interface, click on your VM and then click on "Console" button. It will open new window with console. You can login with your username and password. After you login you can find your IP address by running

ip a

Next step is to install docker. You can find instructions on how to install docker on Ubuntu here. After you install docker you can pull your docker image and run it. In my case it will be:

docker run --rm -i -t -p 8766:8766/udp -p 27016:27016/udp -p 9700:9700/udp -v $(pwd)/steamcmd:/steamcmd -v $(pwd)/game:/sonsoftheforest --name sons-of-the-forest-dedicated-server jammsen/sons-of-the-forest-dedicated-server:latest

!Important: Every game server will use different ports so make sure you check documentation for your game server to find out which ports you need to forward from your router to your Proxmox server.

And that's it. You should be able to connect to your game server now. If you want to make sure that your game server will start automatically after reboot