How to set up a free Prominence 2 RPG Server

How Set Up a Free Prominence II RPG Minecraft Server On Oracle Cloud

24 min read

You can get your own Prominence II Minecraft server for absolutely free!

Prominence II is one the most popular modpacks right now. If you haven't tried it, it's really a great pack. I did a Prominence II RPG Let's Play YouTube series here. And I wrote a Getting Started on Prominence II guide here.

If you want to play it with friends, or even just take some load off of your gaming PC, you can run it on a server for free! By using Oracle Cloud's Free Tier service and a few hours of work, you can have a high-performing Prominence II server of your own. In this post I'm going to walk you through every step.

Why does Oracle provide this service? They want people to experience and learn their services (which competes with other cloud hosting services like AWS and Microsoft Azure), and they give away relatively small servers to encourage that. These free servers are perfect for running Minecraft! And they're free forever. Really!

If you decide you don't want to go through this process yourself, you can much more easily get a server from one of these great Minecraft hosting providers. Here's my top recommendation.

Otherwise, let's do this!

Let's walk through it step by step...

1. Sign up for Oracle Cloud Free Tier

Sign up for Oracle Cloud's Free Tier here: https://www.oracle.com/cloud/free/

Oracle Cloud Free Tier homepage

Click Start for Free and enter in your Account Information.

Oracle Cloud account information form

You'll get a verification email. I had to refresh the page to start over because it spun forever. Keep at it if it doesn't work the first time.

Oracle Cloud verification email screen

Click the Verify Email button.

Continue filling out the form. Pick a secure password and an account name.

Choose your home region close to where your users are. If they're all over the world, choose a location that's central to them. Honestly, I've played on Oracle servers all over the world and performance was always solid.

Finish filling out this page, including reading the Terms of Use and accepting them.

Oracle Cloud account creation form

Next enter your address info

Oracle Cloud address information form

After you click continue, you'll need to add Payment/Identify Verification. This is where you may get stuck, like if you're a minor and don't have any valid payment methods, like a credit card. This will not charge anything to your card. In fact, they don't even save this card in your account for billing. The purpose of this is to keep people from signing up over and over again. If you try to get a second account with this card, or even one that matches the address, it will stop you.

Don't ask how I know this.

Oracle Cloud payment verification

After that, you just need to accept the agreement

Oracle Cloud agreement acceptance

At the bottom of this form is the Oracle Cloud Services agreement. I've read through it, and here's the summary. Again, I'm not a lawyer...

Running a free Minecraft server on Oracle's free cloud service is feasible without incurring charges, provided you adhere to the constraints of their Always Free tier.

Free Tier Details

Oracle Cloud Free Tier offers a range of Always Free services that are available indefinitely. These include:

  • Compute Instances: Up to 2 AMD-based VMs with 1/8 OCPU and 1 GB of memory each, or Arm-based instances with up to 4 OCPUs and 24 GB of memory.
  • Storage: 200 GB of Block Volume storage and 10 GB each of Object Storage (Standard and Infrequent Access) and Archive Storage.
  • Networking and Other Services: Includes a flexible load balancer, site-to-site VPN, and up to 10 TB of outbound data transfer per month.

These resources are sufficient for running all but the most taxing Minecraft servers, especially on the Arm-based instances which offer more resources. You want to ensure that the server configuration remains within the provided limits to avoid service disruption or charges.

Billing and Charges

  • Always Free Services: As long as you stay within the limits of the Always Free services, you will not incur any charges. This includes not exceeding the allocated compute instances, storage, and data transfer limits.
  • Free Trial Credits: Oracle provides $300 of cloud credits for 30 days when you first sign up, which can be used to explore additional services. After the trial period, any resources beyond the Always Free tier will be deactivated unless you upgrade to a paid account.

After you click start my free trial, you'll just need to wait a few minutes for the provisioning.

Oracle Cloud provisioning wait screen

When it's finished, we'll end up on the login page.

Oracle Cloud login page

This part gets a bit messy. The cloud account is, I think, your username you chose. The cloud account is sort of like the umbrella account in which there can be more than one user. I had to use my username I selected on this screen after this, the login screen users your email and password. Check your email for hints on what these account names are if you don't remember.

I set up Multi-factor-authentication, I think you don't have a choice about this. Note that you can check a box to use a different authenticator than Oracle's app. I use Google Authenticator, and was able to add my account there.

The first time in, there's an option to Customize the Console. I'm going to skip that. If you choose any options here, your console may look a little different than mine. But all the features should be there somewhere.

Oracle Cloud console welcome screen

You can skip the tour if you want. That's what I'm here for!

2. Set up the server!

First, let's set up a VM Instance. Note that it is marked with "Always Free Eligible"

Oracle Cloud VM instance creation

Give your Compute Instance a name and choose the compartment.

Oracle Cloud instance naming and compartment

You can call it anything you want, like prominence-2-server. You can use the root compartment, or create a child compartment. I made a child compartment called jangro.com, but I'm probably overcomplicating it. You can just use the root. This is for organizing resources and controlling access. If you do choose a child compartment, it does get just a little more complicated later when you're setting up the network and firewall.

You can leave the Placement alone. Any of them are fine for the type of server we are creating. As you can see, you can create Ampere A1 instances, which is what we're making, in any availability domain.

Oracle Cloud availability domain selection

Skip past Security to the Image and Shape section.

Click Edit and you'll see something like this. Keep Oracle Linux 8 as the image, though if you prefer a different Linux distro, you can change to Ubuntu, CentOS, etc. Things might be a little different during the server setup stage, but if you change it, I assume you know that!

Oracle Cloud image and shape selection

Change the Shape and change/confirm these options.

Oracle Cloud Ampere A1 configuration

Select:

  • Virtual machine,
  • Ampere,
  • VM.Standard.A1.Flex,

For the configuration, you have some choices here. The Always Free-eligible service allows for up to 4 OCPUs and 24GB of RAM.

I'd consider Prominence II a large modpack. Though it does run on Fabric, which is a bit more lightweight than Forge. If I was going to purchase a server at a Minecraft Hosting provider, I'd get at least 8GB of RAM and at least 2 CPUs. For Prominence II I'd just suggest you max it out, which is 4 CPUs and 24GB RAM (which is definitely more than you need!) The bottleneck on this server will be CPU as a larger pack could benefit from even 6 CPUs. We only have 4, so let's go with that.

When I click save, here's what my Shape looks like. Just make sure it says "Always Free Eligible"

Oracle Cloud shape showing free eligible

Next we must set up the networking to set up a public subnet so you and your friends can reach the server from the Internet.

On the primary VNIC information panel, click the Edit button on the top right:

Oracle Cloud VNIC information panel

All of my settings were correct already. Just make sure that Create new virtual cloud network, Create new public subnet, Automatically assign private IPV4 and public IP address are selected. Note: if you're going through this a second time, like if there's an error later, you may already have a subnet set up. If so, just select that.

Oracle Cloud network configuration settings

To connect to and manage our server, we'll need to create (or assign) SSH keys.

You may have already done this for another project, in which case you can just upload your keys, but I'll assume you haven't done this before.

Make sure Generate a key pair for me is selected, and then "Save private key" and "Save public key". Depending on your operating system and SSH software, we'll need to put these key files in special places. Make sure you have a file that ends in .key and .key.pub We'll do something with them in a later step.

Oracle Cloud SSH keys generation

Leave the rest of the options as they are and click "Create"!

Oracle Cloud instance create button

After you click Create, one of two things will happen. Either your instance will get created and you can proceed to connnecting.

Or, something that is very common is that you'll get an "Out of Capacity error":

Possible Errors/Issues with Oracle Cloud Free Tier

There are a few issues you may run into when setting up your Oracle Cloud Free Tier Instance.

Out of Capacity for Shape VM.Standard.A1.Flex in Availability Domain

Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1. Create the instance in a different availability domain or try again later. If you specified a fault domain, try creating the instance without specifying a fault domain. If that doesn’t work, please try again later. Learn more about host capacity.

Oracle Cloud out of capacity error message

If you get this error, go to the top and try a new Availability Domain in the Placement section (there are typically three). If after trying the others, there are no options available in the region you selected (this happened to me!) try waiting and try again later. When someone deletes an instance, that'll free up resources. Or Oracle may add more.

Remember we chose a home region when we created the account? That cannot be changed.

If you can't get past this step, there is a workaround.

If you upgrade your account to a Pay As You Go account, apparently you aren't subject to the restrictions of the free tier and can create instances in your region, even free ones. As long as you keep your server to the free eligible services, you still won't be charged anything!

Now you need to enter a credit card.

To do this navigate to the Billing section, and "Upgrade and Manage Payment". You'll need to add a Payment Method, then upgrade your account to Pay As You Go (PAYG). After you choose the options and click the "Upgrade your account" button, it will take some time for your account to be upgraded. I did this and it took mine about 4 hours. I've seen people wait for days.

Oracle Cloud pay as you go upgrade option

Again, as long as you keep the services under the always free-eligible limits, you should not be charged. As a precaution, you can set up a budget of $1 to get warned of any spend. Under Cost Management > Budgets, you can set a monthly budget of $1, which will alert you of any forecasted spend that will exceed $1.

Why is there a Fee for Boot Volume Storage on Oracle Free Tier?

You may have noticed this message at the bottom right of the screen where there's an estimated total for the Boot volume. This is just an estimate, and not a charge. If you keep the boot volume within the 200GB limit (the default for an instance is 47GB), you shouldn't be charged.

Oracle Cloud boot volume fee estimate

Oracle customer support says this about it: "The cost shown in the attachment is from the cost estimator tool, and it is imperative that the API only checks what resources are selected and estimates the price based on those resources. It does not take into account the available free boot volume storage or scan the resources available in your tenancy. Therefore, an estimated price is displayed for the boot volume. However, the actual cost for the volume is $0.0/month if the storage is within the always-free limits."

After you create the server, you'll see that it is in a provisioning status.

Oracle Cloud instance provisioning status

After just a minute or two it will change to Running. Your public IP address is available in the interface information. This is what you'll use to connect to your server!

Oracle Cloud instance running with public IP

3. Accessing your new Server

Connect to your Server with SSH

Windows Powershell Instructions

  1. Open Command Prompt or PowerShell:
    • Press Win + R, type cmd or powershell, and press Enter.
  2. Connect Using SSH:
    • Run the following command, replacing <Public-IP> with your instance's public IP address,<YourUsername> with your Windows username, and oracle_key with the filename of your private key:
      ssh -i C:\Users\<YourUsername>\.ssh\oracle_key opc@<Public-IP>
    • For example:
      ssh -i C:\Users\JohnDoe\.ssh\oracle_key opc@192.0.2.1
    • You will likely be prompted to continue connecting. Enter 'yes'

I've got my IP address blocked out...

SSH connection successful to Oracle Cloud instance

OSX/Linux Instructions

Step 1: Open Terminal:

  • On macOS, you can find Terminal in Applications > Utilities > Terminal.
  • On Linux, open your terminal emulator.

Step 2: Connect to Your Instance Using SSH

  1. Open Terminal:
    • Ensure you are in the terminal where you have access to the private key.
  2. Connect Using SSH:
    • Run the following command, replacing <Public-IP> with your instance's public IP address:
      ssh -i ~/.ssh/oracle_key opc@<Public-IP>
    • For example:
      ssh -i ~/.ssh/oracle_key opc@192.0.2.1

Once you have logged into your server, you can start the admin functions.

Update the Server and Install Java

Step 1: OPTIONAL: Update the server with the command:
sudo yum update

If you are in a hurry, you can skip this step as it is not strictly necessary. But when I started to install Java, it felt like the yum command was doing this stuff anyway. So let's just get it out of the way. It can take a very long time to complete (like over an hour), including long stretches of time where it seems to do nothing. Be patient! It can be interesting to watch at least...

YUM update running on Oracle Linux

Step 2: Install Java with the following commands:
yum list jdk*
This command will tell you the available Java versions, which change often. This process can also take a very long time.

You'll get a list back that looks something like this. You can install the most recent version, which in my case is version 22. Just install the headless version if you have a choice, which is all you need.

Java versions available for installation

I'm installing java with this command:
sudo yum install jdk-22-headless.x86_64

Java installation command execution

When that's finished, verify the installation by running:
java --version

Java version verification output

Open the Server Firewall to the Minecraft ports

Go back to the Oracle web interface and locate your instance. In the Instance information, locate the Subnet.

Oracle Cloud subnet information panel

Click the subnet link and on the next page, locate the Security Lists

Oracle Cloud security lists

Click on the Default Security List.

Oracle Cloud default security list

Here we Add two Ingress Rules

Oracle Cloud ingress rules setup for Minecraft

Set them up like above both with Source CIDR 0.0.0.0/0 and the Port 25565. One will be TCP for the protocol and ther other UDP. The button on the bottom right will add the second rule form.
Click Add Ingress Rules and you should see the following:

Oracle Cloud ingress rules added successfully

On the server, you need to open the same ports in its firewall. Run these commands back in the SSH terminal:
sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp
sudo firewall-cmd --permanent --zone=public --add-port=25565/udp
sudo firewall-cmd --reload

These commands only need to be run once and they will stick even after restarting the server.

Install the Prominence II Minecraft Server Software

Next we need to install the Prominence II software on the server. You've probably already installed the client on your desktop. And now you need to get the server software from Curseforge. This is a special file that is designed to go on a server. It has some startup scripts, and only the mods that are required on the server side.

Go to the Prominence II RPG Curseforge page

Navigate to Files

Prominence II CurseForge Files tab

And click on the version that you want to install. Note that this must match your client. You'll probably just want the latest version.

Prominence II version selection

Click on Additional Files

Prominence II additional files section

You'll see the Server Pack below. Mine is v2.8.5 as of the time of this post. Yours may be different. Click on the three dots (aka a sushi menu), and then Download File.

Prominence II server pack download button

This will start the download. It's several hundred megabytes, so it may take a while.

Upload the File to your server

There are several ways to do this, but since we've already got SSH going, we can use SCP, which is an SSH-based file copy utility and is exactly what we need. You can also use SFTP from the command line, or WinSCP if you prefer to use a Windows app for this. Trust me, this is easy, and works the same way whether you're on a PC, Mac, or Linux.

First, locate the file which we just downloaded. It's probably in your C:\Downloads Folder

Prominence II downloaded server file

If you right click on it, you can use the "copy as path" option to get the full path to the file" This is mine:
"C:\Users\scott\Downloads\Prominence_II_RPG_Server_Pack_v2.8.5.zip"

Here’s the scp command with the -i option to specify the private key:

scp -i ssh-key-2024-05-31.key Prominence_II_RPG_Server_Pack_v2.8.5.zip ocp@<your-ip-address>:

When you open your Windows command shell, or Powershell, if you first navigate to the Downloads directory (or wherever your files are), you won't have to specify paths. Otherwise, you may need to specify the paths in front of the files.

Here's what mine looks like running the command from the same directory as my private key and the Prominence II zip file.

SCP command uploading file to server

Next we go back to the SSH window where we're logged into the server.

If you run the ls command, you'll see your file. Then use unzip to extract it. You can move this to a subdirectory if you want to keep things organized. I'm just going to do this in my user root directory. your filename may be different.

unzip Prominence_II_RPG_Server_Pack_v2.8.5.zip

Unzipping Prominence server files

You'll see it extract hundreds of files, and at the end, if you run ls again, you'll see the server files and folders.

Server files extracted successfully

Now we just need to start up the server which is as simple as running the start.sh script.
./start.sh

Server start script permission error

Uh oh, what happened? We need to just make this file executable. It's a Linux thing, like this:

chmod +x start.sh

and then we can run ./start.sh

Server EULA agreement prompt

The script should run and prompt you to type "I agree". Do that and you're on your way!

Minecraft server startup process

The first time this runs, it'll take longer because it needs to download files and generate your world. You can watch it go through the whole process. Don't worry about anything it's saying. There will be thousands of lines of info, warnings, even errors, which are generally fine, until it will finally settle down uneventfully like it's doing nothing anymore...

Minecraft server console running

Your Server is now Running. This is the server console, so you can run commands here. Try /help. The /stop command will stop your server cleanly.

Connect to your Server!

Now just start up your Prominence II RPG Client, the same version of course, and Connect to your Server! Go into Multiplayer and add a new server.

Minecraft add server dialog

Since we used the default port for Minecraft, you don't need to enter the port. After adding the IP to a server, if you did everything correctly, you should see it available to join. Look at that Ping!

Minecraft multiplayer server successfully added

Click the play button and you and your friends are good to go!

I'm in!

Successfully connected to Prominence II world

Yikes, it's night time. Did you know that time progresses on a server even when nobody is online!

That's it! have fun! Check out my YouTube Let's Play on Prominence II.

Below the video are some more server maintenance things you can do, like starting up the server automatically, and configuring backups. If you got this far and you're like, this is too much work! You can get your server hosted by these excellent minecraft hosting providers.

They take care of everything for you. Backups, configuration, upgrades.

How to set up a Startup Script for your Oracle 8 Linux Minecraft Server

Up until here, we've got a running Minecraft server. But if it restarts, you need to start it up manually. Here's how to set up your Minecraft server to start up when your server boots up.

Step 1: Create a Start Script

First, create a script to start your Minecraft server. This ensures that all necessary commands are executed correctly.

  1. Create the script file
    sudo nano /home/opc/start_minecraft.sh
  2. Add the Minecraft server start command:
    #!/bin/bash cd /home/opc/minecraft java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
  3. Make the script executable
    sudo chmod +x /home/opc/start_minecraft.sh

Step 2: Create a Systemd Service File

Next, create a systemd service file to manage the Minecraft server.

  1. Create the service file
    sudo nano /etc/systemd/system/minecraft.service
  2. Add the following content to the service file

    [Unit]
    Description=Minecraft Server
    After=network.target

    [Service]
    User=opc
    WorkingDirectory=/home/opc/minecraft
    ExecStart=/home/opc/start_minecraft.sh
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target

Step 3: Enable and Start the Service

  1. Reload systemd to apply the new service:
    sudo systemctl daemon-reload
  2. Enable the service to start on boot
    systemctl enable minecraft.service
  3. Start the Minecraft server service
    sudo systemctl start minecraft.service
  4. Check the status of the service
    sudo systemctl status minecraft.service

How to Set Up a Daily Backup for Your Minecraft Server

Step 1: Create a Backup Script

  1. Create the script file

    sudo nano /home/opc/backup_minecraft.sh
  2. Add the backup commands to the script

    #!/bin/bash
    TIMESTAMP=$(date +'%Y-%m-%d_%H-%M-%S')
    BACKUP_DIR="/home/opc/minecraft_backups"
    WORLD_DIR="/home/opc/world"
    BACKUP_FILE="$BACKUP_DIR/world_backup_$TIMESTAMP.tar.gz"
    # Create backup directory if it doesn't exist
    mkdir -p $BACKUP_DIR
    # Create a compressed tarball of the world directory
    tar -czvf $BACKUP_FILE $WORLD_DIR
    # Optionally, remove backups older than 7 days to save space
    find $BACKUP_DIR -type f -mtime +7 -name "*.tar.gz" -exec rm {} \;
  3. Make the script executable

    sudo chmod +x /home/opc/backup_minecraft.sh

Step 2: Set Up the Cron Job

  1. Open the cron job editor

    crontab -e
  2. Add the cron job entry to run the backup script daily

    0 2 * * * /home/opc/backup_minecraft.sh

    This cron job is set to run the backup script every day at 2 AM. You can adjust the timing as needed.

Step 3: Verify the Cron Job

  1. List the cron jobs to verify the new entry
    crontab -l
    You should see the entry you added:
    0 2 * * * /home/opc/backup_minecraft.sh

That's a lot eh? If this isn't your bag, or if you decide it's just too much work, I strongly recommend a Minecraft hosting service provider. My top pick is Apex Hosting.