Get 4 Always Free VPS From Oracle Cloud & Out of Capacity Solution

You’ve probably heard about the 12 months free VM from Amazon AWS or the free micro VM, but did you know you can get up to 4 VPS from Oracle Cloud, and it’s free forever?

Oracle Cloud is probably offering the most generous always free tier of all Cloud IaaS providers, unlike Google Cloud, where the free instances are only limited in the US. This is what you can get from Oracle Cloud Always Free Tier every month:

  • 3,000 OCPU Hours + 18,000GB Hours for ARM-based VM
  • 2x AMD VM with 1 shared CPU and 1GB RAM
  • 200GB Block Volume
  • 10TB Outbound Data Transfer

The minimum boot volume you can assign is 50GB, which means to utilize all the free VM limit fully, you can create up to 4 VM with 50GB boot volume each, or 1 VM with 100GB plus 2 VM with 50GB each, example:

  • 2x VM with 2 ARM CPU 12GB RAM + 2x VM with 1 Shared AMD CPU 1GB RAM
  • 1x VM with 4 ARM CPU 24GB RAM + 2x VM with 1 Shared AMD CPU 1GB RAM

You can, of course, have other combinations. However, the limiting factor is most likely to be the free boot volume and the minimum boot volume of 50GB each.

Skip to solution for out of capacity error during instances creation.


  • Valid Credit Card [Required by Oracle to prevent abuse]
  • Registration while using residential IP [Turn off VPN, or they will decline your account]

I have tried myself it seems they will decline your registration if you use a debit card or any other type of prepaid cards, such as a virtual credit card.

However, there’s no need to worry about surprise charges, Oracle Cloud won’t charge you unless you explicitly click upgrade your account.

Account Registration

Once we have everything ready, we can move on to the account registration process. Do note that if some error occurs or if the registration process is interrupted, you will need to start again with a different email address (or use Gmail dot alias).

Step 1

Go to the Oracle Cloud website and click the sign-up or start for free button, then fill up your email and name and wait for the verification email.

ApplicationFrameHost 0jvboQ00SD min
Make sure your country is aligned with your IP

Step 2

Once you click the verification link, you will then proceed to set up your username and password. The most important thing here is to choose your Home region wisely, as they can’t be changed for Free resources.

ApplicationFrameHost kTUO7vWN5M min

Step 3

Finally, in the last step, you will enter your credit info to verify your account, putting a dollar on hold on your credit card, and they do this periodically to ensure your credit card is not some disposable credit card. If they fail to do so at a later date, they might cancel your account.

ApplicationFrameHost tBm4oGeaBv min

Step 4

Once you get to this page, you will just wait for about an hour or so until your account is activated. Then you can navigate to the instances page and start deploying your free VM.

ApplicationFrameHost KaAtmHdMYj min
ApplicationFrameHost 5be7xGnZoS min

Out of Capacity in Availability Domain Error

ApplicationFrameHost v9j11tAFoA min

If you encounter the above error while creating your free VPS, don’t panic, it is normal as Oracle probably has only allocated limited resources to give for free.

This means you will have to wait until there’s a new release of free resources, such as when someone deletes their VPS. However, it would be time-consuming to retry the creation process manually.

Luckily someone has written a small PHP script that utilizes the Oracle Cloud API to create VPS.

To use the script, you will need to have a web environment set up, the easiest way is to use a cheap VPS with hourly billing such as Digital Ocean to run the script 24/7 until your VPS is created.

On average, the time it took me to get my ARM instances created could take around 24~72 hours, but this varies depending on your account home region.

Setup Oracle VPS Creation Script

I’m going to use my Google Cloud free VPS for this as I already had PHP and composer installed on it. If you can’t get a VPS for this, you can install Laragon on your Windows machine, then use schedule task and PowerShell to invoke your PHP script too.

Step 1

Create an API key that is required when calling the Oracle Cloud API endpoint. You can do that by visiting

chrome izM04wvenc min
chrome HEWPu1YBWO min

Make sure to download the private key file and save everything shown after you click the add button. You will need this in the next step.

Step 2

We will proceed to set up the PHP script, but first, ensure you already have PHP and composer installed. If not, this is how you can install it:

# Install PHP and required extention, also install git and unzip
sudo apt install php php-curl git unzip

# Download composer installer
curl -sS -o /tmp/composer-setup.php
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

# Verify if PHP and Composer is working
php -v

Then we will download the PHP script, change the environment variable, then set up cronjob once we confirm it’s working as intended.

git clone
cd oci-arm-host-capacity/
cp .env.example .env

Now you use nano or vim to edit the .env file. With the API key and info you get in step 1 you can fill up the variables OCI_REGION, OCI_USER_ID, OCI_TENANCY_ID, and OCI_KEY_FINGERPRINT.

As for OCI_PRIVATE_KEY_FILENAME, you can either upload the private key file you downloaded in the first step or just open it with a text editor, copy the entire private key, then create key.pem in your VPS, then put the absolute path to that key.pem file.

You also need to define the SSH public key in OCI_SSH_PUBLIC_KEY, which you will be used to authenticate yourself when ssh to the VPS.

You can either use the Oracle Cloud VPS creation page generated SSH key or just generate one using your VPS, but make sure to save them for accessing your VPS. To generate with VPS, just use this command:


# If your press enter twice, your private key would be generated in ~/.ssh/id_rsa and your public key ~/.ssh/
# We would print your public key and you can copy that into OCI_SSH_PUBLIC_KEY
cat ~/.ssh/

Step 3

Now we will still need OCI_SUBNET_ID, OCI_IMAGE_ID, and OCI_AVAILABILITY_DOMAIN. To find these, we have to go to the VPS creation page on Oracle and fill up everything as we are creating VPS normally. The most important part here is just selecting the OS.

Now just before you click the “Create” button, press F12 and go to the network tab, then press the “Create” you are probably going to get the out of capacity error here, which is expected.

But you should be able to find there’s a POST request to the /instances/ endpoint, you should be able to get the rest of the values you need in the payload.

chrome smMQG8Ty9J

Finally, copy those values into OCI_SUBNET_ID, OCI_IMAGE_ID, and OCI_AVAILABILITY_DOMAIN. The rest of the values in the env file is self-explanatory, but if you are not sure, take a look at my env file:

MobaXterm Cp2CDJSKx1 min

If you follow the same value I use in the above example, which means you will create 2 instances, each with 2 ARM CPU, 12GB RAM, and 50GB boot volume.

And you probably notice that you can define a Telegram bot token and your own ID to notify yourself when the VPS is created, it is optional, but it’s helpful for me.

Step 4

Once you are done setting up the environment file, simply invoke the PHP script to see confirm it’s working.

php index.php

# This is most likely the response you will get, which mean it's working
    "code": "InternalError",
    "message": "Out of host capacity."

We’ll just have to set up a cronjob to invoke this PHP script until we get our free VPS created. To do that, run “crontab -e”, then append the following line (make sure to change to your own path):

* * * * * /usr/bin/php /root/oci-arm-host-capacity/index.php >> /root/oci-arm-host-capacity/log

That’s it! Now just sit back and wait until your VPS is ready!

Leave a Comment