Skip to content

Provision the ARM Ampere

The VM.Standard.A1.Flex shape (Ampere ARM64) is where most of the work happens in an OCI free-tier lab. You get 4 OCPU and 24 GB RAM to distribute across up to 4 instances however you like — this guide uses one instance with everything (4 OCPU / 24 GB) as the workhorse.

Capacity constraints

ARM Ampere capacity is the single hardest thing about the OCI free tier. Oracle over-subscribes the capacity because free-tier users are sticky, so in popular regions you'll often see:

Out of host capacity.

when you try to provision. Coping strategies, in order of desirability:

  1. Try during off-peak hours. North American evenings and early European mornings are often clearer than mid-day.
  2. Try repeatedly. A rejected request doesn't consume anything — you can hit "Create" every few minutes. There are unofficial scripts that automate this (search GitHub for "oci-arm-host-capacity") — use at your own risk and mind Oracle's terms of service.
  3. Pick a less popular region. If you set your home region and it's perpetually full, switching regions requires a new account.
  4. Split the allocation. Sometimes a 4 OCPU / 24 GB request fails but 2 OCPU / 12 GB succeeds. Provision two instances at half size instead of one at full.

Once you do get an ARM instance, don't terminate it lightly — you might not get it back easily.

Provision

ComputeInstancesCreate instance.

Field Value
Name arm-1 (or workhorse, or whatever)
Compartment root
Placement — Availability Domain Pick one and stick with it. If it fails on AD-1, try AD-2 or AD-3.
Image Change imageCanonical UbuntuUbuntu 24.04 Minimal — make sure the architecture pill says aarch64
Shape Change shapeVirtual machineAmpere tab → VM.Standard.A1.Flex
OCPU 4 (the max always-free allocation)
Memory (GB) 24 (the max always-free allocation)
Primary VNIC Same VCN, same public subnet
Assign a public IPv4 address ✓ Yes
Boot volume size 47 GB or more (up to your remaining block-volume budget). ARM Ubuntu is fine at 47 GB; bump to 100 GB if you plan to run containers or a database.
SSH keys Paste the same ~/.ssh/oci_lab.pub you used for the AMD

Click Create.

When it fails

If provisioning fails with "Out of host capacity", don't despair:

  • Wait 5-10 minutes and click Create again with the same settings. Oracle's capacity is spot-market-ish for Always-Free.
  • Try different ADs if your region has multiple.
  • If it consistently fails, try requesting 2 OCPU / 12 GB instead of 4/24 — capacity is fractional, and a smaller ask often succeeds.

Some users report months of no capacity in us-ashburn-1. Others get it in 30 seconds. It varies wildly.

Verify

Once running:

ssh -i ~/.ssh/oci_lab ubuntu@<arm-public-ip>

Sanity checks:

uname -m         # should show 'aarch64'
nproc            # should show 4
free -h          # should show ~24G total

First commands

Same first-time setup as the AMD instances:

sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname arm-1
sudo timedatectl set-timezone America/New_York
sudo reboot

Then SSH back in.

ARM caveats

Most Ubuntu packages have ARM builds. A few things to know:

  • Docker images: many are multi-arch, some aren't. If a docker pull fails with no matching manifest for linux/arm64/v8, that image is x86-only. Look for an alternative or a linux/arm64 build.
  • Binary tools: if you curl | bash an installer, verify it detects ARM. Most modern tools (gh CLI, kubectl, Caddy, etc.) do this correctly.
  • Emulation: qemu-user-static lets you run x86 binaries in a pinch (apt install qemu-user-static + register with binfmt). Slow but works.

None of these matter for the specific pattern this guide teaches (Caddy + systemd + static or Go/Node services) — all of that runs natively on ARM.

Boot volume expansion (later, if needed)

You can grow the boot volume online without rebooting:

# In the OCI console: Instance → Boot volume → Resize (specify new size)
# Then in the instance:
sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1

Verify with df -h. This is one of OCI's genuinely nice quality-of-life features.

Next

Head to SSH and first hardening to lock down all three instances properly before you start exposing services.