Hosting

Oracle Cloud Free Tier VPS: Run Your Own Server for Free

Oracle Cloud gives you a real Linux server for free, for good. Here are the current limits (many guides still show the old ones), how to create the server, the firewall trap that blocks every port, how to keep it from being reclaimed, and what to run on it.

A free Oracle Cloud Arm server running a website, a VPN and a game server

Oracle Cloud's free tier is the only big cloud that gives you a real Linux server free for good, not for a 12-month trial. It is enough for a website, a personal VPN, a chat server or a small game server. It also has two traps that stop most people: the server is often “out of capacity”, and Oracle's Ubuntu image blocks every port you open until you change one more firewall.

This guide uses the limits from Oracle's own page as of October 2026, which are smaller than many older guides say, and walks through creating the server, opening ports properly, and keeping it.

What you get for free

ResourceAlways Free amount
Arm server (Ampere A1)1,500 OCPU hours and 9,000 GB hours a month, which Oracle says equals 2 OCPUs and 12 GB of memory. One server, or two smaller ones.
AMD servers (E2.1.Micro)Up to 2 servers, each with 1/8 OCPU and 1 GB of memory
Disk200 GB in total for boot and block volumes
Outbound traffic10 TB a month

Many guides still say 4 cores and 24 GB: Oracle's page now lists half of that for Always Free accounts. Free resources only exist in your home region, the region you choose when you sign up, and that choice cannot be changed later.

Before you sign up

  • You need a credit or debit card for identity checks. Oracle places a small temporary charge and does not bill you for Always Free resources. Prepaid and virtual cards are often refused.
  • Choose the home region carefully: close to your visitors, because every free server lives there. Popular regions run out of free Arm servers more often.
  • One free account per person. Accounts that look like duplicates are closed.

Create the server

  1. In the Oracle Cloud console, open Compute, Instances, Create instance.
  2. Image: choose Canonical Ubuntu 24.04.
  3. Shape: choose Ampere, VM.Standard.A1.Flex, and set 2 OCPUs and 12 GB of memory (or 1 OCPU and 6 GB if you want two servers). For a tiny job, the AMD VM.Standard.E2.1.Micro also works.
  4. Networking: let it create a new virtual cloud network with a public subnet, and keep Assign a public IPv4 address on.
  5. SSH keys: choose Generate a key pair and download the private key. Without it you cannot log in.
  6. Click Create. After a minute or two the server shows its public IP.

“Out of host capacity”? That means there are no free Arm servers in that part of the region right now. Try another availability domain in the same screen, try a smaller shape (1 OCPU and 6 GB), or try again at a different time of day. It is not a problem with your account.

Log in from a terminal with the key you downloaded:

# Windows (PowerShell), macOS or Linux: the key file you downloaded and the server's public IP
ssh -i ~/Downloads/ssh-key.key ubuntu@203.0.113.10

# macOS and Linux only: the key must be private, or ssh refuses it
chmod 600 ~/Downloads/ssh-key.key

Open ports: there are two firewalls

This is where most people get stuck. To reach a website or VPN on the server, the port must be open in both places.

1. The security list in the cloud network. Open Networking, Virtual cloud networks, your network, the public subnet, and its Default Security List. Click Add Ingress Rules: source CIDR 0.0.0.0/0, protocol TCP, destination port 80,443. For WireGuard, add a second rule with protocol UDP and port 51820.

2. iptables on the server. Oracle's Ubuntu image comes with its own firewall rules that allow only SSH, and they end with a rule that rejects everything else. A rule added after it is never reached, so a normal iptables -A or most copy-pasted commands do nothing. Insert the new rules above the reject rule instead:

# Oracle's Ubuntu images end the INPUT rules with a REJECT. Find its line number:
N=$(sudo iptables -L INPUT --line-numbers | awk '$2 == "REJECT" {print $1; exit}')

# Insert the new rules above it (web, HTTPS, WireGuard)
sudo iptables -I INPUT "${N:-1}" -p tcp --dport 80 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT "${N:-1}" -p tcp --dport 443 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT "${N:-1}" -p udp --dport 51820 -j ACCEPT

# Keep them after a reboot, then check the order
sudo netfilter-persistent save
sudo iptables -L INPUT --line-numbers
PartWhat it does
iptables -L INPUT --line-numbersLists the rules with their numbers; on a new server the REJECT rule is the last one
awk '$2 == "REJECT"'Finds that rule's number, so the commands work even if your list is a little different
iptables -I INPUT "$N"Inserts each rule at that position, which pushes the REJECT rule down below it
${N:-1}If there is no REJECT rule, the rule simply goes first
netfilter-persistent saveSaves the rules, so they come back after a reboot

Do not switch on ufw on top of these rules: the two firewalls get in each other's way, and a mistake can lock you out of SSH. Check that everything works with a test web server:

sudo apt update
sudo apt install -y nginx
# Now open http://203.0.113.10 in your browser: you should see "Welcome to nginx!" 

Keep your free server from being reclaimed

Oracle's page says that idle Always Free servers may be reclaimed. A server counts as idle when, over 7 days, its CPU use (95th percentile) and network use are below 20%, and on Arm servers memory use is too. In practice:

  • A server that does real work, such as a website with visitors, a VPN you use, or a game server, is rarely idle by that rule. Memory counts on Arm, and most real programs use more than 20% of it.
  • A server you only touch once a month is at risk. Keep backups of anything you would miss, for example by copying your files and database dumps to your own computer.
  • Upgrading the account to Pay As You Go keeps the Always Free resources free and often makes it easier to get Arm capacity. Set a budget alert first, so nothing paid starts by mistake.

What to run on it

UseHow
A personal VPNOur WireGuard VPS guide has a setup script that already works with Oracle's firewall rules. Open UDP 51820 in the security list.
WebsitesInstall Apache, MySQL and PHP, or a free control panel if you prefer clicking to typing
A chat serverAn XMPP server with a TURN server for calls, as in our ejabberd and TURN guide. The TURN server needs its UDP ports open in both firewalls.
A Minecraft server2 Arm cores and 12 GB are enough for a small group of friends. Open TCP 25565 in both firewalls. See below.

The Arm server runs Arm (aarch64) programs. Almost everything in Ubuntu's own packages works, but check that a program you download separately offers an Arm build; if it does not, use the AMD micro server.

A Minecraft server on the free tier

Copy the current server download link from the official Minecraft Java server page, then run:

sudo apt install -y openjdk-25-jre-headless   # Minecraft 26.1 and newer need Java 25
mkdir ~/minecraft && cd ~/minecraft
wget -O server.jar 'PASTE-THE-SERVER-DOWNLOAD-LINK-FROM-minecraft.net'
java -Xmx8G -jar server.jar nogui            # the first run creates eula.txt and stops
sed -i 's/eula=false/eula=true/' eula.txt    # you accept Minecraft's EULA
java -Xmx8G -jar server.jar nogui

If openjdk-25 is not found, your Ubuntu version is too old for it: create the server with a newer Ubuntu image. To keep the server running after you log out, start it inside screen or tmux, or make it a systemd service.

From a free server to a service with users

The free tier is perfect for learning and personal use. For an app or website that strangers depend on, plan for more:

  • A paid VPS without reclaim rules or capacity waits; our VPS comparison shows the cheap options
  • Servers in more than one region, so users far away also get good speed
  • Automatic backups and monitoring, so you know about problems before your users do
  • Software built for many users, where devices and accounts are added automatically instead of by hand

Apps that run on your own server

A free Oracle server is a good first home for the server side of our apps:

  • VPN app source code: WireGuard and OpenVPN in one list, with a registration script and IP pool that run on your WireGuard server, so every phone gets its own key and address automatically
  • Live video chat app and video dating app: chat and calls on your own XMPP and TURN servers, with no per-minute fees

Where to go next

Questions people ask

Is Oracle Cloud free tier really free forever?
Yes. Always Free resources stay free for the life of the account in your home region. Oracle may reclaim Always Free servers that stay idle for 7 days, so keep the server doing real work and keep backups.
How much do you get on the Oracle Cloud free tier?
Oracle's page lists 1,500 OCPU hours and 9,000 GB hours a month on Arm, equal to 2 OCPUs and 12 GB of memory, plus two small AMD servers with 1 GB each, 200 GB of disk and 10 TB of outbound traffic a month. Older guides that say 4 cores and 24 GB are out of date.
Can I use Oracle Cloud free tier without a credit card?
No. Oracle asks for a credit or debit card to verify your identity, places a small temporary charge, and does not bill you for Always Free resources. Prepaid and virtual cards are often refused.
How do I fix out of host capacity on Oracle Cloud?
It means there are no free Arm servers available in that place right now. Try another availability domain, a smaller shape such as 1 OCPU and 6 GB, or try again at another time of day. Upgrading to Pay As You Go often helps too.
Why can I not open port 80 on my Oracle Cloud server?
The port must be open in two places: an ingress rule in the subnet's security list, and an iptables rule on the server inserted above Oracle's REJECT rule. Rules added at the end of the list are never reached. Save them with netfilter-persistent save.
Will Oracle delete my free server?
Oracle may reclaim an Always Free server if, over 7 days, its CPU and network use stay below 20%, and on Arm servers its memory use too. A server that runs a website, VPN or game server people use is rarely idle by that rule.
Can I run a VPN on the Oracle Cloud free tier?
Yes. WireGuard runs well on the free Arm or AMD servers, and the 10 TB of free outbound traffic is plenty for personal use. Open UDP 51820 in the security list and insert an iptables rule above the REJECT rule.
Can I host a Minecraft server on the Oracle Cloud free tier?
Yes, the Arm server with 2 cores and 12 GB is enough for a small group. Install the Java version the current server needs (Java 25 for Minecraft 26.1 and newer), accept the EULA, and open TCP 25565 in both firewalls.
Should I choose the Arm or the AMD free server?
The Arm server, for almost everything: it has far more cores and memory. Use the AMD micro servers only for very small jobs, or for a program that has no Arm build.
Which region should I pick for Oracle Cloud free tier?
The one closest to the people who will use your server, because your free resources only exist in that home region and it cannot be changed. Very popular regions run out of free Arm servers more often.

Written by Habib Baloch

I build Android apps, websites and Ubuntu servers, and write down exactly how I did it.

Ask me about this guide →