Oracle Cloud Infrastructure (OCI) offers a collection of Always Free resources that remain available after the introductory trial ends. The most useful option for developers is an Arm-based Ubuntu virtual machine that can host websites, APIs, databases, Docker containers, development tools, and small production workloads.
"Always Free" is not an unconditional lifetime guarantee. Oracle currently describes these resources as offers that do not expire, but service terms, limits, regional capacity, and product availability can change. Always verify that a resource is labeled Always Free-eligible before creating it.
Contents
- What Oracle Always Free is
- What you receive
- Before you begin
- Create the Oracle account
- Understand the network
- Create the VCN
- Create the internet gateway
- Create the public subnet
- Add the internet route
- Check the security list
- Create the Ubuntu instance
- Create and save SSH keys
- Configure storage
- Review and launch
- Find the public IP
- Connect with SSH
- First-login commands
- Troubleshooting
- Avoid unexpected charges
1. What Oracle Cloud Always Free Is
Oracle Cloud Infrastructure is Oracle's public cloud platform, comparable in purpose to Amazon Web Services, Microsoft Azure, and Google Cloud. A compute instance is a virtual server running inside an Oracle data center. You control its operating system and can install software much as you would on a physical Linux server.
Oracle Free Tier contains two separate parts:
- A time-limited promotional trial that provides credits for testing eligible paid services.
- Always Free resources that can continue after the trial ends, provided your account and resources remain eligible and within Oracle's limits.
2. What You Receive for the Free Ubuntu Server
For an Always Free tenancy, Oracle's current documentation states that all tenancies get the first 1,500 OCPU hours and 9,000 GB hours per month free for instances using the VM.Standard.A1.Flex shape. For Always Free tenancies, that is equivalent to 2 OCPUs and 12 GB of memory in total across all Ampere A1 instances.
| Resource | Configuration used in this guide |
|---|---|
| Processor architecture | Arm64 using Oracle Ampere A1 |
| Compute shape | VM.Standard.A1.Flex |
| CPU | 2 OCPUs |
| Memory | 12 GB RAM |
| Operating system | Canonical Ubuntu 24.04 |
| Boot volume | Default size, approximately 46.6–50 GB depending on the current image |
| Network | Public IPv4 address on a public subnet |
Arm compatibility. Ubuntu, Docker, Node.js, Nginx, PostgreSQL, Python, Java, and most common open-source server software support Arm64. Verify compatibility before installing proprietary x86-only software.
3. Before You Begin
You will need:
- A valid email address and mobile phone number.
- A valid credit or debit card for identity verification.
- A Windows, macOS, or Linux computer with an SSH client.
- A safe place to store the SSH private key.
- A carefully chosen Oracle home region.
Choose the home region carefully. Always Free compute instances must be provisioned in the account's home region. The home region is not something you should expect to change later.
4. Create the Oracle Cloud Account
Step 1 — Open Oracle Cloud Free Tier signup
Visit Oracle's official Free Tier signup page and begin registration. Use accurate personal and billing information. Oracle permits one Free Trial or Always Free account per person.
Step 2 — Choose personal or business use
Choose personal use when the account belongs to you individually. Choose business use only when the account genuinely belongs to a registered organization.
Step 3 — Verify your email and phone
Complete Oracle's email and mobile verification steps.
Step 4 — Select the home region
Choose a nearby commercial region with acceptable latency. In the United States, common choices include US East (Ashburn), US West (Phoenix), US West (San Jose), and US Midwest (Chicago), subject to availability.
Step 5 — Enter payment-card information
The card is used for account verification. Oracle states that it is not charged unless you upgrade the account, although a temporary authorization may appear during verification.
5. Understand the Network Before Creating the Server
A fresh Oracle account may not yet have the network components required for a publicly reachable server. Creating them first avoids the common problem in which the public IPv4 option is unavailable or grayed out.
Internet
│
▼
Internet Gateway
│
▼
Virtual Cloud Network (VCN) — 10.0.0.0/16
│
▼
Public Subnet — 10.0.0.0/24
│
▼
Ubuntu Instance
├── Private IPv4: 10.0.0.x
└── Public IPv4: assigned by Oracle
The components serve different purposes:
- VCN: The private software-defined network containing your cloud resources.
- Public subnet: A segment of the VCN in which instances may receive public IP addresses.
- Internet gateway: Connects the VCN to the public internet.
- Route table: Directs internet-bound traffic to the internet gateway.
- Security list: Controls which inbound and outbound network traffic is allowed.
6. Create the Virtual Cloud Network
In the Oracle Console, open Navigation menu → Networking → Virtual cloud networks → Create VCN.
| Field | Value |
|---|---|
| Name | my-vcn or another descriptive name |
| Compartment | Your root compartment, unless you intentionally created another one |
| IPv4 CIDR block | 10.0.0.0/16 |
| Use DNS hostnames in this VCN | Enabled |
| IPv6 / ULA prefixes | Leave blank for this guide |
| Tags and security attributes | Leave empty unless your organization uses them |
Select Create. Open the new VCN after its status becomes Available.
7. Create the Internet Gateway
Inside the VCN, open the Gateways tab or the Internet Gateways resource section, depending on the console layout.
- Select Create Internet Gateway.
- Name it
my-igw. - Leave the compartment unchanged.
- Leave the advanced route-table association empty.
- Select Create Internet Gateway.
The gateway is enabled when created, but it will not carry traffic until you add the route rule later.
8. Create the Public Subnet
Inside my-vcn, open Subnets → Create Subnet.
| Field | Value |
|---|---|
| Name | public-subnet |
| Subnet type | Regional |
| IPv4 CIDR block | 10.0.0.0/24 |
| Route table | Default Route Table for my-vcn |
| Subnet access | Public Subnet |
| DNS hostnames | Enabled |
| DHCP options | Default DHCP Options for my-vcn |
| Security list | Default Security List for my-vcn |
| Resource logging | Optional; leave disabled for this basic setup |
Select Create Subnet.
9. Add the Route to the Internet Gateway
Inside the VCN, open Routing → Default Route Table for my-vcn → Route Rules → Add Route Rules.
| Field | Value |
|---|---|
| Target type | Internet Gateway |
| Destination CIDR block | 0.0.0.0/0 |
| Target Internet Gateway | my-igw |
| Description | Optional |
Save the rule. The route-table list should now contain:
Destination: 0.0.0.0/0
Target Type: Internet Gateway
Target: my-igw
Route Type: Static
10. Check the Security List
SSH uses TCP port 22. Many default OCI security lists already include an SSH ingress rule. Verify it before troubleshooting a failed connection.
Open VCN → Security → Default Security List for my-vcn → Ingress Rules. You need a stateful TCP rule allowing destination port 22.
| Field | Recommended value |
|---|---|
| Source type | CIDR |
| Source CIDR | Your own public IP with /32 for best security, or 0.0.0.0/0 for easier initial access |
| IP protocol | TCP |
| Source port range | All |
| Destination port range | 22 |
Use the narrowest source possible. Allowing 0.0.0.0/0 means anyone on the internet can attempt to reach port 22. SSH key authentication still protects login, but restricting the source to your current public IP is safer when practical.
11. Create the Ubuntu Compute Instance
Open Navigation menu → Compute → Instances → Create Instance.
Basic information
| Field | Value |
|---|---|
| Name | Choose a descriptive name, such as ubuntu-web-server |
| Compartment | Your chosen compartment |
| Placement | Leave Oracle's default availability domain and fault-domain selection unless capacity requires a change |
Image
- Select Change image.
- Choose Canonical Ubuntu 24.04.
- Use the regular image rather than Minimal unless you specifically want a stripped-down installation.
Shape
- Select Change shape.
- Choose the Ampere processor family.
- Select
VM.Standard.A1.Flex. - Set 2 OCPUs and 12 GB memory.
- Confirm that the console labels the shape Always Free-eligible.
Do not exceed the current Always Free total. Oracle's documentation states that Always Free tenancies receive the equivalent of 2 OCPUs and 12 GB of memory across all Ampere A1 instances. Allocating more than that means the excess is chargeable.
Security
For a straightforward Ubuntu web server, leave Shielded Instance and Confidential Computing disabled unless you have a specific requirement and compatible configuration.
Networking
| Field | Value |
|---|---|
| Primary network | Select existing virtual cloud network |
| Virtual cloud network | my-vcn |
| Subnet | Select existing subnet → public-subnet |
| Private IPv4 | Automatically assign |
| Public IPv4 | Automatically assign public IPv4 address: On |
| IPv6 | Leave disabled for this guide |
12. Generate and Save the SSH Keys
On the Add SSH keys page:
- Select Generate a key pair for me.
- Select Download private key.
- Optionally download the public key as a backup record.
- Move the private key into a safe location, such as your user's
.sshfolder.
Example Windows location:
C:\Users\YourName\.ssh\oracle-ubuntu.key
The private key is the credential. Do not email it, upload it to a repository, paste it into a chat, or share it. Oracle will not display the generated private key again.
13. Configure the Boot Volume
The default Ubuntu boot volume is adequate for a basic server and counts toward your Always Free block-volume allowance.
- Leave custom boot-volume sizing disabled unless you need more space.
- Keep the default volume, approximately 46.6–50 GB for the current Ubuntu image.
- Oracle-managed encryption is enabled by default.
- Do not select a customer-managed encryption key unless you already use OCI Vault and understand its configuration.
- Do not add extra block volumes unless you have checked the remaining free storage allowance.
14. Review and Launch
Before selecting Create, confirm the following:
- Canonical Ubuntu 24.04
VM.Standard.A1.Flexmarked Always Free-eligible- 2 OCPUs and 12 GB RAM
- Existing VCN:
my-vcn - Existing subnet:
public-subnet - Public IPv4 address: Yes
- Private IPv4 address: Automatically assigned
- SSH private key downloaded
- No unplanned paid storage or networking resources
Select Create. Wait for the lifecycle state to change from Provisioning to Running.
15. Find the Server's Public IP Address
Open Navigation menu → Compute → Instances → your instance.
On the instance details page, locate Instance access or the primary VNIC information. Copy the value labeled Public access IP address or Public IPv4 address. It will resemble:
129.146.123.45
Do not use the private address beginning with 10. for a direct SSH connection from your home computer.
16. Connect to Ubuntu with SSH
Windows PowerShell or Windows Terminal
ssh -i "$env:USERPROFILE\.ssh\oracle-ubuntu.key" ubuntu@YOUR_PUBLIC_IP
macOS or Linux
First restrict the private key's file permissions:
chmod 600 ~/.ssh/oracle-ubuntu.key
Then connect:
ssh -i ~/.ssh/oracle-ubuntu.key ubuntu@YOUR_PUBLIC_IP
Replace YOUR_PUBLIC_IP with the address shown on the instance details page. The default username for the Canonical Ubuntu OCI image is ubuntu.
On the first connection, SSH asks whether you trust the server's host key. Verify that you are connecting to the correct IP, then type yes.
A successful connection displays an Ubuntu welcome message and a prompt similar to:
ubuntu@ubuntu-web-server:~$
17. First Commands After Login
Update the package index and install available updates:
sudo apt update
sudo apt upgrade -y
Install a small set of useful administration tools:
sudo apt install -y curl wget unzip git nano ufw
Check the operating system and architecture:
cat /etc/os-release
uname -m
On an Ampere A1 instance, uname -m should report aarch64.
Check the allocated CPU, memory, and disk:
nproc
free -h
df -h
Optional Ubuntu firewall
Before enabling UFW, explicitly allow SSH so you do not lock yourself out:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Finish line. If SSH works and the update commands complete, the Oracle Ubuntu server, VCN, subnet, gateway, route, public IP, and key authentication are all functioning.
18. Troubleshooting Common Problems
The public IPv4 switch is grayed out
This usually means the selected subnet is not a usable public subnet or has not finished loading in the instance wizard. Verify:
- The VCN exists.
- The subnet access type is Public Subnet.
- The subnet has a valid IPv4 prefix such as
10.0.0.0/24. - You selected the existing VCN and existing public subnet in the instance wizard.
SSH times out
- Confirm that the instance state is Running.
- Confirm that the instance has a public IP.
- Confirm that the subnet uses the route table containing
0.0.0.0/0 → my-igw. - Confirm that the security list allows TCP port 22 from your IP.
- Confirm that you used the public IP, not the private IP.
On Windows, test whether TCP port 22 is reachable:
Test-NetConnection YOUR_PUBLIC_IP -Port 22
Permission denied (publickey)
- Use the username
ubuntu. - Use the private key that corresponds to the public key installed during instance creation.
- Check the path and filename in the SSH command.
- Do not use the downloaded
.pubfile as the private key.
Out of capacity for VM.Standard.A1.Flex
Oracle may temporarily have no Ampere capacity in the selected availability domain. Try another availability domain when available, reduce the requested resources, or try again later. Do not switch to a paid shape unless you intend to pay for it.
The instance has no public IP
On the instance details page, open the primary VNIC and IPv4 address information. Oracle supports assigning an ephemeral public IP later to the primary private IP, provided the instance is in a public subnet.
The server can be reached, but a website cannot
Opening a website requires more than a working server. You must also:
- Run a web server or application listening on the expected port.
- Allow the port in the OCI security list or network security group.
- Allow the port in UFW if UFW is enabled.
- For standard websites, allow TCP port 80 for HTTP and 443 for HTTPS.
19. Avoid Unexpected Charges
- Use resources explicitly marked Always Free-eligible.
- Keep combined Ampere A1 usage within the current 2-OCPU and 12-GB equivalent after the trial.
- Remember that boot and block volumes share the Always Free block-storage allowance.
- Do not create paid load balancers, NAT gateways, extra volumes, or other services without checking pricing.
- Review Billing & Cost Management → Cost Analysis.
- Create a small budget alert to notify you if any chargeable usage appears.
- Delete unused trial-only paid resources before the promotional period ends.
A budget alert is not a spending lock. It notifies you when usage reaches a threshold; it does not necessarily stop or delete a chargeable resource.
Official Sources
- Oracle Cloud Infrastructure Free Tier
- Always Free Resources
- Creating an Instance
- Scenario A: Public Subnet
- Troubleshooting the SSH Connection
- Oracle Cloud Free Tier Signup
This article reflects the Oracle Console workflow observed in July 2026. Oracle may rename tabs, reorganize pages, or alter Free Tier limits. Consult the official documentation before relying on a specific allowance.
Once the server is running, the next step is locking it down. See my complete Ubuntu server hardening checklist for SSH lockdown, fail2ban, intrusion detection, and automated backups — or my guide to running a self-hosted AI assistant on a cloud VPS.