What This Guide Is
Oracle Cloud offers something almost no other cloud provider does — a genuinely free tier that never expires. Most "free tiers" are 12-month trials. Oracle's Always Free tier is permanent. You get real infrastructure — the kind that costs 100 to 150 USD per month on other providers — at zero cost, forever.
This guide walks through exactly how to set it up, what every confusing option actually means, and how to get past the obstacles that trip most people up along the way.
The ARM instance Oracle gives away free has 4 CPU cores and 24GB RAM. A comparable server on AWS costs around 120 USD per month.
I recently went through this entire process and documented every step, every confusing screen, and every trick to get through the roadblocks. Here is everything.
What You Actually Get for Free
Oracle's Always Free tier is surprisingly generous. Here is the full breakdown:
Compute (Servers)
- ARM A1 instance: 4 OCPUs and 24GB RAM (the star of the show)
- 2 AMD VMs: 1 OCPU and 1GB RAM each
- Time limit: none — never expires
The star is the ARM-based Ampere A1 instance. You get a pool of 4 CPU cores and 24GB of RAM that you can use however you want — one big server, two medium ones, or four small ones. This is the server we are setting up in this guide.
The two smaller AMD VMs (1 OCPU, 1GB RAM each) are useful for lightweight tasks like running a reverse proxy or monitoring service.
Networking
- 10 TB outbound bandwidth per month
- 2 Virtual Cloud Networks
- 50 Site-to-Site VPN connections
- Public IP address
- VCN Flow Logs (10GB per month)
10TB of monthly bandwidth is extraordinary. Linode's 5 USD per month plan gives you 1TB. AWS charges per gigabyte. Oracle gives you 10TB free — more than almost anyone will ever use for a personal or small business server.
Storage
- 200GB block storage
- 10GB object storage
- 10GB archive storage
Other Free Services
- 2 Autonomous Databases (20GB each)
- 100 emails per day (Email Delivery)
- Monitoring and logging
- Load Balancer (10Mbps)
Why is Oracle so generous? They are competing with AWS and Google Cloud and need developers to build on their platform. The free tier is their way of getting you familiar with OCI (Oracle Cloud Infrastructure) in hopes you eventually become a paying customer. Nothing stops you from using the free tier forever, though.
Signing Up
Go to signup.oraclecloud.com to create your account.
What You Will Need
- A valid email address (used as your login)
- A credit or debit card (required for identity verification — you will not be charged)
- A mobile phone number (for SMS verification)
- A home address
Heads up on cards: prepaid cards and virtual cards are not accepted. You need a real credit or debit card (Visa, Mastercard, Discover, or Amex). Oracle places a small temporary verification hold that is automatically removed — your card will not be charged unless you manually upgrade to a paid plan.
Choosing Your Region
During signup you will pick a Home Region. This is where your Always Free resources will live and cannot be changed later. Pick carefully.
- us-ashburn-1 (Ashburn, Virginia, USA) — best for US users, lowest latency for North America
- us-phoenix-1 (Phoenix, Arizona, USA) — best for US West Coast users
- eu-frankfurt-1 (Frankfurt, Germany) — best for European users
- ap-sydney-1 (Sydney, Australia) — best for Australia/Pacific users
For most people, choose the region closest to where you (and your users) are located. ARM instances are available in all regions.
Setting Up Networking First
Before creating your server, you need to set up a Virtual Cloud Network (VCN). Think of this as your own private network inside Oracle's infrastructure — like the WiFi network in your house, but in the cloud.
Important: do this before creating your server. Oracle's server creation form lets you create a VCN inline, but it has a bug where the public IP toggle gets permanently disabled. Creating the VCN separately first avoids this entirely.
Step-by-Step: Creating the VCN
- Navigate to Networking. In the Oracle Cloud console, click the hamburger menu in the top left → Networking → Virtual Cloud Networks.
- Create VCN. Click "Create VCN". Give it a name like
my-vcn. In the IPv4 CIDR Blocks field, enter10.0.0.0/16. Enable "Use DNS hostnames". Click Create. - Create a Public Subnet. Click on your new VCN → Subnets → Create Subnet. Name it
public-subnet, set the CIDR block to10.0.0.0/24, and most importantly — set Subnet Access to "Public Subnet". Select the Default Route Table and Default Security List.
Understanding the Jargon
- VCN — your private network in Oracle's cloud, like your home WiFi but for servers
- Subnet — a section of your network. Public subnets can be reached from the internet. Private subnets cannot.
- CIDR block (10.0.0.0/24) — the range of IP addresses available on your network. Just use these exact values — you do not need to understand the math.
- Internet Gateway — the door between your VCN and the public internet. Required for your server to be reachable.
- Route Table — rules that tell network traffic where to go. Oracle creates sensible defaults automatically.
- Security List / NSG — firewall rules. Which ports and connections are allowed in and out.
Creating Your Server
Now the main event. Go to Compute → Instances → Create Instance.
Placement (Availability Domain)
Oracle has 3 "Availability Domains" (AD-1, AD-2, AD-3) in each region. These are simply three separate physical buildings. If one building has a problem, the others keep running. Start with AD-1. If you get an "out of capacity" error, try AD-2, then AD-3.
Choosing the Image (Operating System)
Click "Change image" and select Canonical Ubuntu 24.04. Do not choose "Minimal" or "aarch64" variants — the regular Ubuntu 24.04 will automatically use the right version for your ARM server.
Why Ubuntu over Oracle Linux? Ubuntu is the default for most cloud tutorials, has massive community support, and is what most documentation assumes. Oracle Linux is also fine, but if you hit a problem at 2am, you will find 10x more Ubuntu-specific help online.
Choosing the Shape (Server Size)
Click "Change shape" and navigate to the Ampere tab. Select VM.Standard.A1.Flex — this is the big free ARM server. Set OCPUs to 4 and Memory to 24 GB.
What does VM.Standard.A1.Flex mean?
- VM — Virtual Machine (a server inside Oracle's bigger physical hardware)
- Standard — Standard tier (not GPU or HPC)
- A1 — ARM processor version 1
- Flex — Flexible size — YOU choose how much CPU and RAM
Stay within free limits. 4 OCPUs and 24GB RAM is the maximum Always Free allocation. Going above these numbers will result in charges. The interface will show "Always Free-eligible" when you are within limits.
Networking
Select "Select existing virtual cloud network" → choose your my-vcn. Then select your public-subnet. Once a public subnet is selected, the "Automatically assign public IPv4 address" toggle will become clickable — turn it on.
SSH Keys — The Critical Step
SSH keys are your password to get into the server — but much more secure. Oracle will offer to generate a key pair for you. Select "Generate a key pair for me" and then:
- Click "Download private key" immediately
- Click "Download public key" too
- Save both files somewhere safe — a folder called "Oracle SSH Keys" works
- Back them up to a USB drive, Google Drive, or Dropbox
You can never download these keys again. Once you leave this page, the private key is gone forever. If you lose it, the only fix is to delete the server and start over. This is the number one mistake people make.
Boot Volume (Storage)
Leave the custom boot volume toggle off — the default 46.6GB is plenty. Leave "Use in-transit encryption" on — this encrypts data between your server and its storage disk. Good security, no downside.
Click Create
Review the summary, confirm everything looks right, and click Create. Your server will show "Provisioning" for 2-3 minutes, then switch to "Running" — at which point you will see your public IP address. Write it down.
One More Step: Connect to the Internet
After creation, go to the Networking tab of your instance. You will see a "Quick actions" card saying "Connect public subnet to internet." Click the Connect button. This automatically creates an Internet Gateway, Network Security Group, and Route Table — the three pieces needed for your server to be reachable from the outside world.
The Real Story: What Actually Happened When I Tried to Do This
Every guide makes this look clean. "Click here, fill this in, click Create, done." That is not what happened to me. Here is the honest version — every wall I hit, in the order I hit them — because knowing what is coming is worth more than a polished walkthrough that skips the hard parts.
I spent hours going in circles before I figured out the one thing that actually unlocked everything. It was embarrassingly simple once I found it.
Problem 1: "Out of Capacity" — Over and Over
The very first thing that happened after I clicked Create was this error:
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.
Fine. I switched to AD-2. Same error. Switched to AD-3. Same error. Tried different times of day. Same error. This is apparently extremely common — the free ARM tier is so popular that Oracle regularly runs out of space in all three availability domains simultaneously. You are competing with thousands of other people all trying to grab the same free servers.
What the error message does not tell you — and what took me a long time to figure out — is that your account tier affects your place in the queue. Free tier accounts are lowest priority. More on this in a moment, because this is the thing that actually solved everything.
Problem 2: A Toggle That Would Not Toggle
While fighting the capacity errors, I noticed another problem. In the server creation form, there is a toggle that says "Automatically assign public IPv4 address." It was grayed out. Permanently. I could not click it no matter what I did.
A public IP address is how you actually reach your server from the outside world. Without it, the server is essentially locked in a box with no door. So this was a real problem.
I dug into it and found it was a bug in Oracle's inline VCN creation. When you let Oracle create the network for you inside the server creation form, it creates the subnet but does not properly register it as a public subnet. The toggle detects this and disables itself. The fix is not intuitive at all: you have to exit the server creation form entirely, go build your VCN and subnet separately through the Networking menu, then come back and create the server again — this time selecting the subnet you already built.
That is why this guide tells you to set up networking first. I learned this the hard way.
Problem 3: No Subnets in the Dropdown
So I went to Networking → Virtual Cloud Networks and created a VCN. Then I went back to server creation and tried to select it. The subnet dropdown said "No matches found."
The VCN existed. I could see it. But Oracle could not find any subnets because I had created the VCN without creating a subnet inside it first. A VCN is just a container — empty by default. You have to go back into the VCN and manually create a subnet inside it before it shows up as an option when creating a server.
The critical detail when creating the subnet: set Subnet Access to "Public Subnet". If you leave it as Private, the public IP toggle goes gray again — right back to Problem 2.
The Thing That Actually Fixed Everything: Pay-As-You-Go
After sorting out the networking mess, I still kept getting "Out of Capacity" errors. All three availability domains. Every time I tried.
The solution turned out to be upgrading the account to Pay-As-You-Go. I know how that sounds — you came here for a free server, and now I am telling you to enter your credit card and upgrade to a paid plan. Hear me out.
What Pay-As-You-Go actually means: PAYG is not a subscription. It does not have a monthly fee. It simply means Oracle is allowed to charge you if you use resources beyond the free limits — which you will not, as long as you stay within the Always Free tier.
Think of it like giving a restaurant your credit card to hold your table reservation. They are not charging you. They just want to know you are serious. Your Always Free resources remain completely free.
The real reason to do it: Oracle gives PAYG accounts higher priority in the capacity queue. Free tier accounts are last in line. The moment I upgraded to PAYG, the ARM instance became available in AD-3 within the same session.
To upgrade: Billing and Cost Management → Upgrade and Manage Payment → Upgrade to Pay-As-You-Go. Enter your card details, confirm. Then go back and try creating your server again. For most people, it works immediately.
Set a billing alert right after upgrading. Go to Billing → Budgets and create a budget for 1 USD with email alerts. If something ever goes wrong and Oracle starts charging you unexpectedly, you will get an email before it becomes a real problem. This takes two minutes and is worth doing.
An Aside: AI Can Do the Server-Side Configuration For You
Here is something most guides do not mention. The Oracle Cloud parts above — signing up, creating a VCN, clicking through the console to launch an instance — those still have to be done by hand in the web interface. No AI can click through the Oracle dashboard for you. But once you have your server running and you can SSH into it, everything that happens inside the server — installing software, configuring security, setting up services, writing config files — can be driven by an AI CLI tool that runs on your local machine, talks to the server through your SSH connection, and executes commands in plain English.
The workflow looks like this. You open Claude Code (or a similar AI CLI) on your laptop. You tell it "SSH into my Oracle server and install Docker, Nginx, and set up a firewall that only allows ports 22, 80, and 443." It connects, runs the commands, watches the output, fixes any errors that come up, and reports back when it is done. You never have to remember the exact apt commands or look up the UFW syntax. You just describe what you want.
This is genuinely how a lot of server setup happens now. The AI is doing the typing. You are doing the deciding. For someone setting up their first cloud server, it removes most of the intimidation factor — you do not need to memorize Linux commands to get a working server with a hardened security baseline. You just need to know what you want the server to do, and the AI handles the syntax.
The Full Obstacle Map
Here is the complete list of things I hit and how to get past each one:
- Out of Capacity — All three availability domains reject your server creation. Fix: Upgrade to Pay-As-You-Go. PAYG accounts get capacity priority. Free tier benefits remain completely intact.
- Public IP Toggle Grayed Out — The toggle to assign a public IP cannot be clicked. Fix: Create your VCN and public subnet separately through Networking → VCNs before touching the server creation form.
- No Subnets in Dropdown — VCN exists but the subnet dropdown shows "No matches found." Fix: Go into your VCN and create a subnet inside it. Set Subnet Access to "Public Subnet" — not Private.
- SSH Key Permission Error — On Mac/Linux: "WARNING: UNPROTECTED PRIVATE KEY FILE!" Fix: Run
chmod 400 ~/path/to/your-key.key. SSH refuses to use private key files that other users on the computer could read. - Chrome Not on ARM Linux — Google Chrome is not available for ARM Linux, the snap version breaks automation tools. Fix: Use
apt install chromium-browseror install Brave Browser, which has official ARM64 packages.
Connecting to Your Server
Once your server is running you will see its public IP address on the instance details page. To connect you need a terminal and your SSH private key file.
On Mac or Linux
# First, fix the key file permissions (required)
chmod 400 ~/Downloads/ssh-key-2026-04-04.key
# Then connect (replace with your actual IP address)
ssh -i ~/Downloads/ssh-key-2026-04-04.key ubuntu@YOUR-SERVER-IP
On Windows (PowerShell)
# Open a regular PowerShell window (not inside any other app)
ssh -i C:\Users\YourName\Downloads\ssh-key-2026-04-04.key ubuntu@YOUR-SERVER-IP
When you see the prompt ubuntu@instance-...:~$ you are in. Your server is running and you have full control.
First Things to Do After Connecting
# Update the system first — always do this on a new server
sudo apt update && sudo apt upgrade -y
# Install some useful tools
sudo apt install -y build-essential curl wget git
# Keep services running after you log out (essential for a server)
sudo loginctl enable-linger ubuntu
Consider setting up Tailscale for easy remote access. Tailscale is a free service that creates a private network between all your devices. Instead of typing your server's IP address every time, you can access your server by name from any device — laptop, phone, anywhere. Install it with curl -fsSL https://tailscale.com/install.sh | sh && sudo tailscale up.
What You Can Do With Your Free Server
With 4 CPU cores, 24GB RAM, and 10TB of monthly bandwidth, you have enough power to run serious workloads. Here are some ideas:
Web Hosting
Host websites, web apps, APIs, and databases. Install Nginx or Apache as a web server, add a free SSL certificate with Let's Encrypt, point your domain to the server's IP, and you have a fully functional web hosting setup for 0 USD per month.
VPN Server
Replace paid VPN services by running your own. WireGuard is the recommended modern option — faster and simpler than OpenVPN. Your traffic goes through Oracle's network, you get a US IP address, and nobody logs your activity.
AI and Automation
Run automation tools, AI agents, web scrapers, and scheduled tasks. Tools like OpenClaw (a self-hosted AI gateway) run beautifully on this hardware, connecting AI models to messaging apps like Telegram, automating business tasks, and running 24/7 without any per-minute cloud compute costs. In fact, the OpenClaw setup we wrote about runs on this exact free Oracle server.
Database Server
Run PostgreSQL, MySQL, or MongoDB. With 24GB of RAM you can handle serious database workloads. Keep the database on the private network (no public IP) and only access it through your server.
Personal Cloud Storage
Install Nextcloud for your own private Google Drive alternative. With 200GB of free block storage you can store a significant amount of files, photos, and documents — accessible from any device, completely private.
Development Environment
Use the server as a remote development machine. Connect with VS Code's Remote SSH extension and you have a powerful Linux environment accessible from any computer, including lightweight laptops.
Complete Glossary
Every confusing term you will encounter during Oracle Cloud setup, explained plainly:
- Always Free — Oracle's permanently free tier. Unlike most "free tiers" which expire after 12 months, Always Free resources never cost money as long as you stay within the limits.
- OCPU — Oracle's unit for CPU power. 1 OCPU equals 2 vCPUs in most cloud providers' terms. You get 4 OCPUs free on ARM.
- ARM / Ampere A1 — A type of processor architecture. Historically used in phones, now increasingly in servers. Oracle's free ARM server has excellent performance and runs all modern software.
- x86 / AMD — The traditional server processor architecture. More universally compatible with older software. Oracle's free x86 VMs are much smaller (1GB RAM) than the ARM option.
- Shape — Oracle's word for server size. Choosing a shape means choosing how much CPU and RAM your server gets.
- VM.Standard.A1.Flex — The name of the big free ARM server. "Flex" means you choose the size yourself rather than picking from preset options.
- Availability Domain (AD) — One of Oracle's physical data center buildings within a region. Having multiple ADs means if one building has a problem, the others keep running.
- Fault Domain — A section within an Availability Domain with separate power and network. Only relevant when running multiple servers that need to survive partial failures.
- VCN — Virtual Cloud Network. Your private network in Oracle's cloud. Like your home WiFi but for servers.
- Subnet — A subdivision of your VCN. Public subnets can be reached from the internet. Private subnets can only be reached from within your VCN.
- CIDR Block — Notation that defines a range of IP addresses. 10.0.0.0/24 means addresses from 10.0.0.1 to 10.0.0.254. You do not need to understand this deeply — just use the values in this guide.
- Internet Gateway — The connection point between your VCN and the public internet. Without it, traffic cannot flow in or out.
- Route Table — Rules that tell network traffic where to go. Think of it like a GPS for packets of data.
- Security List / NSG — Firewall rules. Defines which connections are allowed into and out of your server or subnet.
- VNIC — Virtual Network Interface Card. The virtual "network plug" that connects your server to your VCN. Every server has at least one.
- Public IPv4 Address — Your server's address on the internet — what you use to connect to it from your laptop.
- Private IPv4 Address — Your server's internal address within the VCN. Other servers on your VCN use this to talk to it.
- SSH Key — A pair of files (private key plus public key) used to securely log into your server without a password. The private key stays on your computer. The public key goes on the server.
- Boot Volume — The storage disk that contains your operating system. Like the hard drive on your computer — this is where Ubuntu lives.
- Compartment — Oracle's way of organizing resources within an account. For a personal account, everything goes in the root compartment.
- Tenancy — Your Oracle Cloud account as a whole. All your resources live within your tenancy.
- On-Demand Capacity — The standard way to create a server — it runs until you choose to stop it. The alternative (Preemptible) means Oracle can shut your server down without warning, which is almost never what you want.
- Pay-As-You-Go (PAYG) — An account upgrade that enables paid resources. Free tier limits still apply — you only pay if you use resources beyond the free amounts. Upgrading gives your account higher priority for capacity.
Quick Reference: The Values That Always Work
- VCN CIDR Block:
10.0.0.0/16 - Subnet CIDR Block:
10.0.0.0/24 - Server Shape:
VM.Standard.A1.Flex - Free OCPU Count:
4 - Free Memory:
24 GB - Operating System:
Canonical Ubuntu 24.04 - SSH Username:
ubuntu
What You Have Built
If you followed this guide, you now have a server that costs enterprise money elsewhere, running for free, forever. It is more powerful than most paid VPS plans and comes with generous bandwidth, storage, and networking options that most small projects will never exhaust.
The ARM architecture might sound unusual, but virtually all modern software runs on it — Linux, Docker, Node.js, Python, databases, web servers, and more. You will not hit compatibility issues for typical use cases.
The main thing to remember once you are set up: stay within the Always Free limits. As long as you do not push the OCPU count above 4 or RAM above 24GB, Oracle will not charge you. The limits are clearly marked throughout the interface.
Set up billing alerts just in case. Go to Billing and Cost Management → Budgets and create a budget alert for 1 USD. If Oracle ever starts charging you for something unexpected, you will get an email immediately before it becomes a real bill.
Good luck — and enjoy your free server.