For this I chose Linode. Honestly I am a sucker for advertising and I have heard a million YouTubers mention Linode, and I was able to get a bill credit using one of their affiliate links.
I am also aware that there are cheaper alternates that require much less work than what I did, but I wanted to exercise my knowledge on servers and have as much control over it as possible.
To start I selected the $10/Month plan which gives you:
- 2 GB RAM
- 1 CPU Core
- 50 GB SSD
- 2 TB Transfer
- 40 Gbps Network In
- 2000 Mbps network Out
This worked okay for the first little bit when there where just two people on my Minecraft server. You will also be using 100% of your CPU core 100% of the time. Linode will remind you of this with a weekly email.
I decided to upgrade to the next tier to improve performance. I know that Digital Ocean has a larger range of tiers to choose from (which are typically $5 /month cheaper than Linode), but I was already with Linode and changing seemed link a pain at the time. I may end up making the switch in the future.
My current package from Linode costs $20/Month + $2.5/Month for automatic backups. This gives me the following specifications:
- 4 GB RAM
- 2 CPU Cores
- 80 GB SSD
- 4TB Transfer
- 40 Gbps Network In
- 4000 Mbps Network Out
I started off with making sure the packages I wanted were installed with the following command:
sudo apt install default-jre vim ufw screen wget
default-jreis the java runtime environment used to run our Minecraft server
vimis my editor of choice (you can also use nano, both of these editors are often installed by default)
ufwis an Uncomplicated Fire*W*all
screenis a terminal multiplexor that is required for running the Minecraft server
wgetis used to download files from the internet
For security purposes we are going to create two users, one with
sudo and one without.
Adding the privilaged user:
useradd -m <username> -G wheel -s /bin/bash
Adding the non-privilaged user
useradd -m minecraft -s /bin/bash
Why create 2 users? I have not ready any other tutorials that use this method, but I like the idea of my servers files and processes being owned by a user that does not have root privileges. You don't need root privileges in order to run a Minecraft server, and therefore, I think you should not have it.
For more information you can read the Debian wiki post Why Sudo?