Tools: Update: Oracle Cloud Always Free: Get a 4-Core 24GB ARM VPS for Free

Tools: Update: Oracle Cloud Always Free: Get a 4-Core 24GB ARM VPS for Free

Oracle Cloud Always Free: A Truly Permanent Free VPS

What You Get for Free — Forever

Compute (The Main Draw)

Storage

Networking

Database

Other Services

Oracle Cloud vs Other Free VPS Options

How to Get Started

Step 1: Sign Up

Step 2: Create an A1 ARM Instance

Step 3: Connect via SSH

Step 4: Open Firewall Ports

What You Can Run on a Free 4-Core 24 GB Oracle VM

Web Applications

Docker and Compose

Self-Hosted AI with Ollama

Kubernetes (k3s)

VPN Server (WireGuard)

Use with OpenClaw to Automate Your Oracle VM

Common Issues and Fixes

“Out of capacity” when creating A1 instances

Reclamation Warning

Always Free Limits to Watch

Is Oracle Cloud Always Free Worth It?

Final Recommendation

Related Reads Most “free” cloud tiers expire after 12 months. Oracle Cloud is different. The Oracle Cloud Always Free tier gives you a legitimate, permanent free cloud server — including a 4-core 24 GB ARM VM that never expires and never requires a paid upgrade. This is not a trial. Oracle has maintained the Always Free tier since 2019, and it remains the most generous permanent free cloud offering from any major provider. Oracle’s A1 ARM tier dominates every other always-free offering. 24 GB RAM is enough to run serious workloads: a Dockerized web app, a small Kubernetes cluster, a self-hosted AI inference server, or a private VPN. Your instance will be ready in 1–3 minutes. OCI blocks all inbound traffic by default. You need to open ports in two places: 1. Security List (OCI Console): Networking → Virtual Cloud Networks → Your VCN → Security Lists → Add Ingress Rules for the ports you need (80, 443, 8080, etc.) 2. Instance firewall (iptables/firewalld): With 24 GB RAM, you can run Llama 3.2 3B, Mistral 7B (quantized), or Gemma 2 2B comfortably. These are CPU-only on ARM, but perfectly usable for low-traffic API endpoints or background processing. Once your Oracle Cloud VM is running, you can use OpenClaw to automate tasks on it. OpenClaw is an open-source AI agent that can connect to your server via SSH MCP tools and run commands on your behalf. For example, you can give OpenClaw instructions like “deploy my latest Docker image” or “check disk usage and send a report” — it will SSH into your Oracle VM and handle it without you writing shell scripts manually. This makes the Oracle free VM even more powerful: it’s always-on infrastructure that an AI agent can maintain and operate for you. This is the most common problem. Oracle’s A1 capacity fills up quickly in popular regions. Solutions: Oracle can theoretically “reclaim” Always Free instances if they show no usage for 30+ days. To prevent this, make sure your instance is actually running something — even a simple cron job that pings a URL every day counts as activity. Oracle charges a small temporary authorization hold ($1–$2) on signup to verify your card. This is reversed within a few days. You will not be charged as long as you stay within Always Free limits and don’t manually enable paid services. Bandwidth overages are the only real billing risk. 10 TB/month is enormous for most projects, but if you’re running a high-traffic service, set up a Budget Alert in OCI (Billing → Budgets) to get notified if spending approaches any threshold. Use Oracle Cloud Always Free if: Oracle Cloud Always Free is the best free VPS available in 2026. No other provider gives you 4 cores, 24 GB RAM, 10 TB bandwidth, and 200 GB storage that truly never expires. The signup friction (credit card, regional availability) is annoying, but worth it for what you get. For comparison: Google Cloud’s always-free e2-micro has 1/4 of a core and 1 GB RAM. Oracle’s A1 is 24× more RAM for free. That gap is hard to ignore. If A1 capacity is unavailable in your region at signup, try a different region or retry during off-peak hours. The resource is worth the patience. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

# Default username for Ubuntu is "ubuntu" ssh -i ~/.ssh/your-key ubuntu@YOUR_PUBLIC_IP # Verify you're running on ARM uname -m # Output: aarch64 # Default username for Ubuntu is "ubuntu" ssh -i ~/.ssh/your-key ubuntu@YOUR_PUBLIC_IP # Verify you're running on ARM uname -m # Output: aarch64 # Default username for Ubuntu is "ubuntu" ssh -i ~/.ssh/your-key ubuntu@YOUR_PUBLIC_IP # Verify you're running on ARM uname -m # Output: aarch64 # Ubuntu — -weight: 500;">disable the default iptables rule that blocks everything -weight: 600;">sudo iptables -F -weight: 600;">sudo iptables -P INPUT ACCEPT # Or open specific ports only -weight: 600;">sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT -weight: 600;">sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT -weight: 600;">sudo netfilter-persistent save # Ubuntu — -weight: 500;">disable the default iptables rule that blocks everything -weight: 600;">sudo iptables -F -weight: 600;">sudo iptables -P INPUT ACCEPT # Or open specific ports only -weight: 600;">sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT -weight: 600;">sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT -weight: 600;">sudo netfilter-persistent save # Ubuntu — -weight: 500;">disable the default iptables rule that blocks everything -weight: 600;">sudo iptables -F -weight: 600;">sudo iptables -P INPUT ACCEPT # Or open specific ports only -weight: 600;">sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT -weight: 600;">sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT -weight: 600;">sudo netfilter-persistent save # Deploy a Node.js app with Nginx reverse proxy -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update && -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y nginx nodejs -weight: 500;">npm -weight: 500;">npm -weight: 500;">install -g pm2 pm2 -weight: 500;">start app.js --name myapp pm2 startup && pm2 save # Deploy a Node.js app with Nginx reverse proxy -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update && -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y nginx nodejs -weight: 500;">npm -weight: 500;">npm -weight: 500;">install -g pm2 pm2 -weight: 500;">start app.js --name myapp pm2 startup && pm2 save # Deploy a Node.js app with Nginx reverse proxy -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update && -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y nginx nodejs -weight: 500;">npm -weight: 500;">npm -weight: 500;">install -g pm2 pm2 -weight: 500;">start app.js --name myapp pm2 startup && pm2 save # Install Docker on ARM (Ubuntu) -weight: 500;">curl -fsSL https://get.-weight: 500;">docker.com | sh -weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu # Run a full stack app -weight: 500;">docker compose up -d # Install Docker on ARM (Ubuntu) -weight: 500;">curl -fsSL https://get.-weight: 500;">docker.com | sh -weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu # Run a full stack app -weight: 500;">docker compose up -d # Install Docker on ARM (Ubuntu) -weight: 500;">curl -fsSL https://get.-weight: 500;">docker.com | sh -weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu # Run a full stack app -weight: 500;">docker compose up -d # Install Ollama (ARM-compatible) -weight: 500;">curl -fsSL https://ollama.com/-weight: 500;">install.sh | sh # Run Llama 3.2 (3B) — fits easily in 24 GB ollama pull llama3.2 ollama run llama3.2 # Expose API on port 11434 OLLAMA_HOST=0.0.0.0 ollama serve # Install Ollama (ARM-compatible) -weight: 500;">curl -fsSL https://ollama.com/-weight: 500;">install.sh | sh # Run Llama 3.2 (3B) — fits easily in 24 GB ollama pull llama3.2 ollama run llama3.2 # Expose API on port 11434 OLLAMA_HOST=0.0.0.0 ollama serve # Install Ollama (ARM-compatible) -weight: 500;">curl -fsSL https://ollama.com/-weight: 500;">install.sh | sh # Run Llama 3.2 (3B) — fits easily in 24 GB ollama pull llama3.2 ollama run llama3.2 # Expose API on port 11434 OLLAMA_HOST=0.0.0.0 ollama serve # Install k3s (lightweight Kubernetes) -weight: 500;">curl -sfL https://get.k3s.io | sh - # Check -weight: 500;">status -weight: 600;">sudo k3s -weight: 500;">kubectl get nodes # Install k3s (lightweight Kubernetes) -weight: 500;">curl -sfL https://get.k3s.io | sh - # Check -weight: 500;">status -weight: 600;">sudo k3s -weight: 500;">kubectl get nodes # Install k3s (lightweight Kubernetes) -weight: 500;">curl -sfL https://get.k3s.io | sh - # Check -weight: 500;">status -weight: 600;">sudo k3s -weight: 500;">kubectl get nodes # Install WireGuard -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y wireguard # Use the automated setup script -weight: 500;">curl -O https://raw.githubusercontent.com/angristan/wireguard--weight: 500;">install/master/wireguard--weight: 500;">install.sh bash wireguard--weight: 500;">install.sh # Install WireGuard -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y wireguard # Use the automated setup script -weight: 500;">curl -O https://raw.githubusercontent.com/angristan/wireguard--weight: 500;">install/master/wireguard--weight: 500;">install.sh bash wireguard--weight: 500;">install.sh # Install WireGuard -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y wireguard # Use the automated setup script -weight: 500;">curl -O https://raw.githubusercontent.com/angristan/wireguard--weight: 500;">install/master/wireguard--weight: 500;">install.sh bash wireguard--weight: 500;">install.sh - Ampere A1 ARM instances: 4 OCPUs + 24 GB RAM total — allocate however you want (e.g., one 4-core 24 GB VM, or four 1-core 6 GB VMs) - AMD Micro instances: 2 × VM.Standard.E2.1.Micro (1/8 OCPU, 1 GB RAM each) - OS: Ubuntu, Oracle Linux, CentOS, Debian — your choice - Block storage: 200 GB total (across all volumes) - Object storage: 20 GB (S3-compatible) - Archive storage: 20 GB - Outbound bandwidth: 10 TB/month - Load balancer: 1 × 10 Mbps - VCN (Virtual Cloud Network): 2 free - Public IPs: 2 free - Autonomous Database: 2 × 20 GB (supports Oracle DB, JSON, APEX) - OCI Vault: Key management - Monitoring & logging: 500 million datapoints/month - Email Delivery: 100 emails/day - Go to oracle.com/cloud/free and click Start for free - Fill in your account details and verify your email - You’ll need to provide a credit card — Oracle uses it for identity verification only. You won’t be charged unless you manually -weight: 500;">upgrade to a paid account - Select your home region carefully — this cannot be changed later. US regions (Ashburn, Phoenix) tend to have the most A1 availability - In the OCI Console, go to Compute → Instances → Create Instance - Under Image and shape, click Change shape - Select Ampere → VM.Standard.A1.Flex - Set OCPUs to 4 and RAM to 24 GB - Under Add SSH keys, upload your public key or generate a new one - Click Create - Try a less popular region (Tokyo, Singapore, Stockholm, Amsterdam) - Try again at off-peak hours (2–5 AM UTC) - Use the OCI CLI or API to retry automatically — many users write a script that polls every few minutes until an instance is created - Create 4 separate 1-core 6 GB instances instead of one 4-core 24 GB — smaller instances are easier to allocate - You need a permanent free VPS with real resources (4 cores, 24 GB RAM) - You want to self-host Docker apps, AI models, or databases for free - You’re comfortable with OCI’s more complex console (it’s enterprise-grade) - You need GPU compute — Oracle has no free GPU tier - You need managed databases at scale — the free Autonomous DB is limited - You’re a complete beginner — OCI’s interface is more complex than DigitalOcean or Render - Render Free Hosting Review 2026: Deploy Web Apps, Databases, and Cron Jobs for Free - Supabase vs Neon: Which Free PostgreSQL Database Should You Use in 2026? - Vercel vs Netlify vs Cloudflare Pages: Free Frontend Hosting Compared - Railway App Review 2026: The Best Heroku Alternative for Developers - 7 Best Free Web Hosting for Developers: Cloudflare Pages, Vercel, Netlify and More