How I Got Into Self-Hosting
My first forrays into self hosting were in 2012-2014, hosting Minecraft servers with friends. Until 2020, that was the extent of my self-hosting experience; download a "server_start.bat," tweak Java parameters, and run it.
In the fall of 2020, after stumbling onto the Valhelsia 3 modpack, I decided it was time to give Minecraft servers another try; a few years had passed since my friends last played together, and I needed projects to work on to occupy my mind. After running for a few months, I was interested in trying out other modpacks, and before long I was running 3 different servers with batch scripts on my personal PC.
This lasted for a few months, but as the servers started to become more active, I needed to be able to remotely access the console to assist players with issues or restart the servers if we had a crash, which was often in early, buggy versions of Valhelsia 3 and the other packs I was running at the time. To solve this problem, I bought a server management tool called AMP. While this enabled me to manage the servers remotely, it also made it trivially easy for me to create new servers, and the extra resources I used while experimenting with different modloaders and Minecraft versions pushed me to start building a second computer to host AMP. I installed Ubuntu desktop on this second PC, and it became my first physical server. While I was familiarizing myself with Ubuntu and the web server side of AMP, I stumbled across Nextcloud, an open source file storage and document editing server. Eventually I would end up hosting multiple Nextcloud servers, both for my personal PC backups and for sharing documents related to the Minecraft servers.
In the summer of 2021, I started to consider creating a website to centralize information about all of the servers I was hosting; at this time I was running 3 Minecraft servers, and I had hosted some public file shares on Nextcloud. Having some experience under my belt from setting up AMP and Nextcloud, I decided that this was a perfect opportunity to start working in Virtual Machines; at multiple points while working with Nextcloud, I had wished I could get a clean slate on my server, but I didn't want to take the Minecraft servers down to do so. My first VMs were created with VirtualBox, and as I worked on moving the applications I was hosting on the Ubuntu server into VMs, I started to get comfortable working in the command line interface.
The VirtualBox VMs worked great for a few months, but as I started to add more Minecraft servers and a main website, I needed more server resources. I built a second Ubuntu desktop which helped for a short time, but in the spring of 2022 I made the leap to a pair of refurbished commercial rack mount servers from HP. Content to leave the Ubuntu desktop environment behind me, I chose a new Type 1 hypervisor for these servers; Proxmox. With Proxmox, I was able to manage all of the VMs from a single web interface, instead of needing to log into the Ubuntu desktops remotely to access VirtualBox.
Once I had my Proxmox servers set up, it was trivially easy to export the VMs from VirtualBox to VMDK files, load them on an external HDD, and import them in Proxmox. Once the original Ubuntu desktop had all of its VMs removed, I cleaned it up and added it to the Proxmox cluster, giving me the flexibility of running some VMs on the slower HP servers, and a smaller number of VMs on the Ryzen 3700X server that had previously held everything.
Setting up the Proxmox cluster took a weekend, and the easier workflow of creating and managing VMs in Proxmox gave me plenty of opportunities to experiment with other new tools. The Proxmox cluster is still going strong, and hosts all of my servers, including:
- This blog
- The Nextcloud server where I share free games, art assets, and more
- AMP, with multiple modded Minecraft servers
- Uptime, a server status dashboard
and an ever growing list of new projects!!