The dream of every Minecraft player (without going broke)
That time of year always arrives when you get together with your friends and you come up with the magnificent idea of making a Minecraft server. Someone suggests doing it on their computer, but that’s always a bad idea because you depend on that person having the PC on all the time. And we know that’s impossible.
You also look at server prices out there and although they are not very expensive, truth be told, they are overpriced for the power they offer you. And you want a good server, that holds quite a few players or that holds all the mods you are going to put on it.
Well my friends, today I am going to teach you how to have your own Minecraft server managed by you. Obviously open 24/7. And with nothing more and nothing less than 24 GB of RAM and 4 processor cores. A server that will withstand everything you throw at it and more, it will hold up like a beast.
And the price? You will ask me. Indeed, it is not clickbait: the price is €0. And it is free. Free forever? Yes, yes. Forever.
I am going to teach you how to configure and manage it also with Crafty Controller, a tool for managing Minecraft servers that if you want to learn about it, this is also your video. You will see how it will be of great use for what we want to do.
So if you are interested in anything I have mentioned, stay in the post.
One super important thing before starting
If you like this type of content focused on technology and programming, I ask you to please leave me a like on the video and why not, subscribe to the channel. Since we always bring very interesting videos, as I said about technology, and I am sure that more than one you will like.
PREREQUISITE: You need the Oracle server
To get the server I explained it in the video previous to this one. This would be like its second part or like an extension. There I explained step by step how to get an Oracle server and I explain everything to you.
I already said in that video that I would make a series of tutorials of things to do on that server itself. And this is one of them. Many people have already told me in the comments that they have it configured, so I recommend you go there and do it because you are going to need that to continue with this tutorial.
Without it you will not be able to continue unless you already have your own server. So you are warned.
You can see that tutorial here: Get a FREE 24GB RAM server
Step 1: Create the instance in Oracle
This is something we already did in the video I just mentioned. But well, if there is any straggler or you want to see it again, here is a quick summary:
- Enter Oracle Cloud and create a new instance
- Select the Always Free option with ARM architecture
- Configure the instance with 24GB of RAM and 4 cores
- Save the private SSH key well that we are going to use to connect later and configure the rest of things
With this we already have our instance, our public IP and we can move on to the next step.
Step 2: Open the ports (VERY IMPORTANT)
This step is necessary for the server to be accessible. So what we are going to do is look for the instance and enter the detail.
There we are going to go to Virtual Cloud Network and we are going to click on the blue link there.
Then: Subnets → Security → Default Security List → Security Rules → Add Ingress Rules
It is super important to open these specific ports. You must do it just like me, putting:
- Source CIDR:
0.0.0.0/0 - Destination Port Range: (see table below)
- IP Protocol: TCP or UDP depending on the port
Ports to open:
| Port | Protocol | Description |
|---|---|---|
| 8443 | TCP | Crafty Controller Panel |
| 8123 | TCP | Dynmap (web map of the server) |
| 25500-25600 | TCP | Port range for Java Edition servers |
| 19132 | UDP | Minecraft Bedrock Edition servers |
Watch out with port 25500-25600 which is a range and you have to put a special hyphen. The normal keyboard hyphen sometimes doesn’t work, so if it gives you a validation error, try copying it from here: 25500‐25600
Do not leave anything unfilled because this is crucial for it to work for you.
Basically what we are doing is opening the ports to expose to the Internet, among other things, the panel that we are going to use to configure the server (8443). The rest is for the Minecraft servers themselves.
Step 3: Connect via SSH to the server
To connect we are going to open a terminal. I don’t care which terminal you use, you can use the Windows CMD, it absolutely doesn’t matter. Although I use Warp, which is an artificial intelligence terminal that is free, which I like a lot. If you are interested, look for it, but it is not mandatory to use it.
Give permissions to the SSH key
The first thing we are going to do is give permission to the SSH key that we have downloaded.
If you are on Windows:
$key = "C:\path\to\your\private_key.key"
icacls $key /inheritance:r
icacls $key /grant:r "$($env:USERNAME):(R)"
icacls $key /remove "NT AUTHORITY\Authenticated Users"
icacls $key /remove "BUILTIN\Users"
If you are on Linux or Mac:
chmod 600 /path/to/your/private_key.key
Note that you have to change the path for the real path of your SSH key.
Connect to the server
Done this, we are going to connect via SSH referencing that private key file we have and our server IP:
ssh -i /path/to/your/private_key.key ubuntu@YOUR_PUBLIC_IP
Remember that the IP was in the instances section in Oracle Cloud.
And we are already connected to the server. Let’s go for it!
Step 4: Install Docker
Once connected we are going to install Docker to allow us to put the server in a container. This is very practical to do because if you want to use the server for other things, the ideal is to locate each thing you want to do and so you have it separated in containers.
For example, if you wanted to have N8N apart you could do it if you want. So, by the way, I have a tutorial on how to install N8N, but that’s another story.
Docker installation commands:
sudo apt-get update
sudo apt-get upgrade -y
curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh
Wait for the installation to finish. Then we add the current user to the Docker group:
sudo usermod -aG docker $USER
You simply have to follow the commands and copy and paste. Installing Docker and assigning the current user to the Docker group has no more mystery.
Step 5: Configure the server firewall (iptables)
Once the process finishes, we are going to do another super important step: sometimes the server itself inside Ubuntu comes with a firewall already configured and installed.
And this firewall limits us that certain ports of the server can go out to the outside and among them, of course, are the ports that we have opened. That although we have opened them in Oracle, we have to configure them also in the internal firewall.
The firewall is iptables and the commands are these:
sudo iptables -I INPUT 4 -p tcp --dport 8443 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p tcp --dport 8123 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p tcp --dport 25500:25600 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p udp --dport 19132 -m state --state NEW -j ACCEPT
If you notice, they are the same ports. Referencing what I mentioned before:
- 8443 is to enter the Crafty Controller administration panel
- 8123 is for the Dynmap (the web map)
- 25500-25600 is the typical range of Minecraft server ports (although it will sound familiar that the classic one is 25565)
- 19132 is for Minecraft Bedrock Edition servers (because yes, you can also deploy a Bedrock server. We don’t discriminate against anything here)
Step 6: Create the docker-compose.yml
Anyway, Serafín. Once the ports are open, let’s configure the Docker Compose. For that we are going to create a new file with Nano:
nano docker-compose.yml
This text editor will open. And here we are going to paste this configuration:
services:
crafty:
container_name: crafty_container
image: arcadiatechnology/crafty-4:nightly
restart: always
environment:
- TZ=Europe/Madrid
ports:
- "8443:8443" # HTTPS panel Crafty
- "8123:8123" # Dynmap
- "19132:19132/udp" # Bedrock
- "25500-25600:25500-25600" # Minecraft servers port range
volumes:
- ./docker/backups:/crafty/backups
- ./docker/logs:/crafty/logs
- ./docker/servers:/crafty/servers
- ./docker/config:/crafty/app/config
- ./docker/import:/crafty/import
It is basically a container. Watch out there, custom from Crafty Controller. Why do I say custom? Because the original one is not prepared for the architecture of this server, which is an ARM architecture.
But I have already found this configuration here (arcadiatechnology/crafty-4:nightly) so that it works for you and you don’t have any problem.
Save and raise the container
Once the configuration is pasted, we close with Ctrl + X, give it Y to save, and then Enter.
Now we raise the container:
sudo docker compose up -d
And now we will be seeing how the container downloads and configures itself. You just have to have a little patience and wait.
Step 7: Access the Crafty Controller panel
Once completed, what we have to do is take the server IP, that same one with which we have connected, put it in the browser followed by :8443:
https://YOUR_PUBLIC_IP:8443
And as you see, here we get the Crafty Controller login screen. If you have reached this far I congratulate you because the hardest part has already passed. This is already a piece of cake.
If you haven’t been able to get here, leave me a comment on the video and among the whole community we will try to help you.
Get access credentials
We see that it asks us for a username and password. To know it we have to enter the server terminal again.
As we can see, where we have created the Docker Compose YAML, some folders have been generated. We have to enter them:
cd docker/config
There we have a file called default-creds.txt. Let’s cat it to open it and see what it has:
cat default-creds.txt
If we do a CAT we can see its content and as you see here it has a user and a password. It doesn’t have more, a very long password over there. Well that’s it, we have to copy and paste it to be able to access.
Step 8: Configure the Crafty panel
And ta-da! Here we have the server with the metrics that right now are at zero, but we already have access to the server panel.
Security recommendation
A recommendation here is that it already appears in red: Activate the second factor of authentication so that nobody attacks your server. And I would also change the password, which in theory is random every time you generate this, but it never hurts to put your own password.
Step 9: Create your first Minecraft server
So to create the server we are going to go to Servers → Create a New Server.
The first thing it asks us is the server type. Here we select Minecraft Servers and now comes the interesting part: choose what type of installation we want.
We can choose from a lot of options. If you are not going to put mods or plugins, then you want it Vanilla, which is Minecraft as it comes out of the box. But you also have Forge if you want to put mods, Spigot or Paper if you prefer plugins, Fabric for lighter mods… come on, you have plenty to choose from.
Then it asks us for the server version. I recommend leaving the latest, but if you want to play on a specific version, here you can choose whatever you want.
Then it asks us for a name for the server. This is basically to identify it in the panel, so put whatever you want: “Server with colleagues”, “My super server”, whatever.
And now comes the important part: the RAM memory. As you see, it lets us put a minimum and a maximum. My advice is that if you are only going to use this server for Minecraft, put the 24 gigs that we have available, go ahead with everything. But if you want to use it for other things, you can reduce it. For example, minimum 8GB and maximum 20GB, leaving room for other applications.
Regarding the server port, we are going to leave the default which is 25565, the default Minecraft port. So you don’t have to go around configuring anything weird in the client.
One thing that is very cool is that apart from creating a server from scratch, you have another section where you can import an existing server that you already have mounted. You can do it from the file system or even uploading a compressed zip. That’s why I like this panel, because it allows us to customize server creation to the maximum.
Step 10: Start the server
We click on Build Server and in Actions you will see a Play symbol, that is to start the server. So we give it and a modal will appear to confirm the EULA (terms and conditions), we give it yes and wait for it to start.
Small problem with Brave
A curious thing here is that it told me it was going to reload by itself, but since I have the Brave browser that blocks what it considers advertising and other cookies, well it gave me problems and I had to deactivate it. Nothing more.
And as you see, we already have it ready and we have the server terminal ready here.
Step 11: Configure administrator permissions
For example, I am going to make OP my user so I can have administrator permissions. In the server terminal I write:
op YourUserName
And ready, I already have administrator permissions on the server.
Crafty Controller panel features
We can also see several interesting things:
Logs
Where you can see everything that is happening on the server in real time.
Schedule events
There is configuration to schedule events, to make backups. Watch out because it is very customizable, you can backup whenever you want, or schedule it automatically every X hours or days.
File manager
We also have the file manager, where you can:
- Edit any file
- Delete files
- Download files
- Rename files
- Create directories
Come on, typical stuff done in any file editor.
Advanced configuration
Apart from that we have more advanced server configuration and even real-time metrics of CPU, RAM, connected players, etc.
Server Status
There is even a Server Status page that can be chosen if you want it or not. Haha, well, I don’t see much use for it but there you have it.
Moment of truth: We verify that it works!
But well, let’s get to the important part, the moment of truth. Let’s verify that all the work we have done works.
We open Minecraft and add a new server with our public IP:
YOUR_PUBLIC_IP:25565
We click Connect and let it load…
And ta-da! Here we have our server, which I promise works wonderfully. Come on, just telling you that whenever I have bought servers with friends they have been maximum 10GB of RAM and here we have 24… simply crazy.
What else can I do with this?
As you see, the Crafty Controller panel is amazing and you can get a lot out of it. For example, if you want to put mods, you just have to choose Forge when you create the server and then from the file manager you can upload the mods you want. It’s as simple as uploading them to the corresponding folder.
The same with plugins. If you choose Spigot or Paper, you can install the plugins you want and customize the server to the fullest. If you want economy, if you want zone protection, if you want minigames… whatever comes to mind.
Another thing that is really cool is the Dynmap. This is basically a real-time web map of your server. Players can view it from the browser and see where everyone is. Super useful if you have a large community.
And if 24GB seems like a lot for a single server, you can create multiple servers dividing the resources. For example, one survival with 16GB and another creative with 8GB. Or one Vanilla and another with mods. The possibilities are endless.
Oh, and don’t forget to configure automatic backups. Seriously, this is the first thing you should do. Schedule backups every day or every week, because you never know when someone might mess it up and you need to restore the server.
Conclusion
So if you have reached this far I congratulate you for putting up with me for so long and if it has served you and you want to support the blog/channel with a small gesture, what I said before a like on the video would help me a lot and if you subscribe I won’t even tell you.
If you are having any problem following this tutorial or think that I could also explain something else, leave it in the video comments because I dedicate myself to reading them all. I try to answer most of them, so I’ll see you around in the comments. Let’s see what you tell me.
Thank you very much for reading the post and see you in the next one.
Summary of important commands
In case you need it, here are all the commands together:
# Update the system
sudo apt-get update
sudo apt-get upgrade -y
# Install Docker
curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh
sudo usermod -aG docker $USER
# Configure iptables
sudo iptables -I INPUT 4 -p tcp --dport 8443 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p tcp --dport 8123 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p tcp --dport 25500:25600 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 4 -p udp --dport 19132 -m state --state NEW -j ACCEPT
# Create docker-compose.yml
nano docker-compose.yml
# Raise the container
sudo docker compose up -d
# View credentials
cd docker/config
cat default-creds.txt
Enjoy your server!



O que você achou?
Deixe sua opinião, pergunta ou sugestão. Os comentários são sincronizados com GitHub Discussions .