Oracle Cloud's always-free tier: signing up, the gotchas, and a credit card alert I wasn't expecting
Oracle's free tier specs are surprisingly generous. It took me two attempts to get in — and there was a charge along the way I really wasn't expecting.
I'd heard about Oracle Cloud's always-free tier back in 2025. The specs sounded almost too good — 4 CPU cores, 24GB RAM, 200GB storage, all free. I tried signing up once, got rejected, and forgot about it.
Nearly a year later, I gave it another shot. This time it went through.
What you actually get for free
Oracle's Always Free tier breaks down into three main buckets:
AMD VMs: Up to two VM.Standard.E2.1.Micro instances per account, each with a fixed 1C / 1GB RAM / 50Mbps bandwidth. They show up in the dashboard with an "Always Free" label.
ARM (Ampere) VMs: Up to 1–4 VM.Standard.A1.Flex instances per account, with a total cap of 4C / 24GB RAM / 4Gbps bandwidth. The CPU-to-memory ratio is fixed at 1:6, and bandwidth matches your core count. You can split the four cores however you like — two VMs at 2C/12GB each, or one VM at the full 4C/24GB — as long as the total stays within the cap.
Storage: Boot volumes and block storage combined up to 200GB are free.
For reference, this configuration in the VPS market would cost around $15–25 USD a month. ARM machines run Docker container workloads just fine. If you're running a few self-hosted services, small sites, or a hobby server, the free quota is more than enough.
Signing up
The signup itself isn't anything special — fill in your info, attach a credit card (for identity verification, normally no charge), and pick a home region.
The home region can't be changed once set. I picked Tokyo (ap-tokyo-1). Some people pick US or EU regions instead, the reasoning being there's less contention for machines, though latency will be higher.
My first attempt last year never got an approval email — I waited a few weeks, nothing came through, and I couldn't log into the account. Oracle doesn't give any reason for rejected applications. People online suggest the common culprits are region, credit card, or some automated flag. This time I applied again with the same info and it went through smoothly.
Provisioning a machine, and the first problem
I went with Ubuntu on ARM, configured at the full 4C/24GB.
A few things to be careful with when creating the VM:
- Image: Pick Ubuntu 22.04 LTS — stable, well-supported, and ARM Docker images are all there.
- Shape: VM.Standard.A1.Flex, then crank CPU and memory up to the cap (4 cores / 24GB).
- VNIC: Create a new Virtual Cloud Network (VCN). If this is your first VM, let it auto-create one.
- SSH Key: Download the private key in this step — you'll need it to connect later. Once you leave this page, the key is gone, so save it properly.
Configuration done, I hit create. This came back:
Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1.
I assumed I'd misconfigured something and pushed past the free limit, so I went back and checked everything a few times. Nothing was wrong. After some searching, I found out this has nothing to do with your config — Oracle allocates machine resources to paying customers first, and free-tier accounts just have to compete for what's left. Contention in Asia is especially bad.
Some people write a script that retries provisioning every few minutes until a slot opens up.
Upgrading the plan, and the charge I wasn't expecting
The advice I kept seeing: upgrade to Pay As You Go (PAYG) to bump up your account's priority. PAYG by itself doesn't charge you — as long as your resources stay within the Always Free quota, your bill is zero. The only difference is account standing, and Oracle gives PAYG accounts an easier time grabbing machines.
So I upgraded. Right away, my bank texted me: a foreign transaction, 33xx TWD.
That threw me off for a moment. Turned out Oracle charges around $100 USD as an account verification hold when you upgrade — refundable within 7 to 14 days. It's not a top-up, not an actual charge, just verification to confirm the card is valid and has enough credit.
The AI I was using didn't warn me, and I hadn't read the docs properly either. That's on me. The refund came through about ten days later.
Roughly two hours after upgrading, I got the account upgrade confirmation email. I reconfigured the VM and it provisioned immediately.
Connecting to the machine
A few more steps before you can actually connect.
Step 1: Assign a public IP.
A fresh VM doesn't always come with a public IP — you may need to attach a Reserved Public IP from the Instance page, or opt for auto-assignment at creation time. If your VM ended up without an IP, go to Instance Details → Attached VNICs → Primary VNIC → IPv4 Addresses, and add one from there.
Step 2: Configure the Security List.
Beyond the iptables on the machine itself, Oracle has a second firewall layer at the VCN level called the Security List. Only port 22 (SSH) is open by default. If you want to run a web service or anything else, you need to add Ingress Rules in VCN → Security List to open those ports — otherwise, even if your machine's firewall allows traffic, nothing can reach it from outside.
Step 3: SSH in.
Open WindTerm, enter the public IP, set the username to ubuntu, and load the private key you downloaded earlier. That's it — you're in.
Step 4: Flush iptables.
Once you're in, run these commands to open up the firewall:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -FThis clears all iptables rules and lets all traffic through. Oracle's default Ubuntu image ships with fairly strict iptables rules — until you flush them, a lot of service ports won't be reachable, even if you've already opened them in the Security List.
You'd want to set up tighter rules later based on what you're actually running. This just opens everything up so the machine is usable right away.
That's the machine ready to go. Next post: the first thing I did with it — set up a Minecraft server using Coolify, and a few problems I ran into along the way.