Ever wanted a computer in the cloud you can open from your phone, laptop, or any device — just by typing a URL in a browser?

No app to install. No VPN. Just open a link and you're staring at a full desktop.

I set this up for free using Oracle Cloud's Always Free tier. Here's exactly how I did it, including the mistakes I made along the way.

Why Oracle Cloud?

Before we start, here's why Oracle Cloud is the best free option:

Provider Free CPU Free RAM Free Forever?
Oracle Cloud 2 ARM cores 12 GB ✅ Yes
Google Cloud 1 shared vCPU 0.6 GB ✅ Yes (but too slow for a browser)
AWS 1 vCPU 1 GB ❌ 12 months only
Azure 1 vCPU 1 GB ❌ 12 months only

Note: Oracle reduced their Always Free ARM tier from 4 OCPUs/24 GB to 2 OCPUs/12 GB in August 2026. It's still the most generous free tier available — Google's free VM has 0.6 GB RAM which can't even run a browser properly.

What You'll Have at the End

  • A free Ubuntu 22.04 VM running 24/7
  • Full XFCE desktop environment
  • Firefox browser running in that VM
  • Access from any browser via http://YOUR_IP:6080/vnc.html
  • Works on mobile, laptop, tablet — anything with a browser
  • A platform to host web servers, bots, scripts, and side projects — all for free

Step 1: Create an Oracle Cloud Account

Go to cloud.oracle.com → Start for free

You'll need:

  • An email address
  • A Visa or Mastercard for identity verification (a ~$1 temporary hold is placed and auto-refunded in 3-5 days — RuPay is not accepted)
  • Choose your Home Region carefully — you can't change it later

Indian users: Oracle charges through their Singapore entity for APAC. The temporary hold appears in SGD (~₹85), not INR. It disappears on its own.

Step 2: Create the Free VM

  1. Go to Compute → Instances → Create Instance
  2. Click Change Image → Select Ubuntu 22.04
  3. Click Change Shape → Ampere (ARM) → VM.Standard.A1.Flex
  4. Set OCPUs: 2 and Memory: 12 GB
  5. Under Networking → Select Create new virtual cloud network
  6. Under Add SSH Keys → Download the private key and save it safely
  7. Click Create and wait 2-3 minutes

Step 3: Assign a Public IP

New VMs sometimes don't get a public IP automatically. Here's how to fix that:

  1. Click your instance → Networking tab
  2. Click the VNIC name → IP Administration tab
  3. Click ⋯ on the row → Edit
  4. Select Ephemeral public IP → Update

Note your public IP — you'll need it throughout this guide.

Step 4: SSH Into the VM

Windows (PowerShell):

ssh -i C:\path\to\your-key.key ubuntu@YOUR_PUBLIC_IP 

Mac/Linux:

ssh -i ~/path/to/your-key.key ubuntu@YOUR_PUBLIC_IP 

Type yes when asked about the fingerprint. You should see the Ubuntu welcome screen.

Step 5: Install Everything

Run these commands one by one:

# Update the system sudo apt update && sudo apt upgrade -y 

When prompted about restarting services, just press Enter to accept defaults.

# Install XFCE desktop + VNC + noVNC sudo apt install -y xfce4 xfce4-goodies tightvncserver novnc websockify 
# Install Firefox (non-snap version — important!) sudo add-apt-repository ppa:mozillateam/ppa -y sudo apt install -y firefox-esr 

Why non-snap Firefox? Ubuntu's default Firefox is installed as a snap package, which doesn't work inside a VNC session. Always use firefox-esr from the Mozilla PPA instead.

Step 6: Configure VNC

Set your VNC password:

vncserver :1 

Enter a password (max 8 characters). Type n when asked about a view-only password.

Configure XFCE as the desktop:

vncserver -kill :1 cat > ~/.vnc/xstartup << 'EOF' #!/bin/bash xrdb $HOME/.Xresources startxfce4 & EOF chmod +x ~/.vnc/xstartup 

Start VNC with your screen resolution:

vncserver :1 -geometry 1920x1080 -depth 24 

Step 7: Start noVNC

noVNC is what turns the VNC desktop into something you can open in any browser:

websockify --web=/usr/share/novnc/ 6080 localhost:5901 & 

Step 8: Open the Firewall

You need to open port 6080 in two places:

1. Inside the VM:

sudo apt install -y iptables-persistent sudo iptables -I INPUT -p tcp --dport 6080 -j ACCEPT sudo netfilter-persistent save 

The iptables-persistent part is important — without it, the firewall rule disappears every time the VM reboots.

2. In Oracle Cloud Console:

  1. Go to Networking → Virtual Cloud Networks → Your VCN
  2. Click Security tab → Default Security List
  3. Click Add Ingress Rules:
    • Source CIDR: 0.0.0.0/0
    • Protocol: TCP
    • Destination Port Range: 6080
  4. Click Add Ingress Rules

Step 9: Access from Any Device

Open any browser and go to:

http://YOUR_PUBLIC_IP:6080/vnc.html 

Enter your VNC password → Click Connect.

You'll see the full Ubuntu desktop. Open Firefox from Applications → Web Browser.

That's it. You can now open this URL from your phone, your office laptop, a friend's computer — anywhere.

Make It Survive Reboots

Set up systemd services so everything starts automatically:

sudo bash -c 'cat > /etc/systemd/system/vncserver.service << EOF [Unit] Description=VNC Server After=network.target [Service] User=ubuntu Type=forking ExecStartPre=-/usr/bin/vncserver -kill :1 ExecStartPre=-/bin/rm -f /tmp/.X1-lock /tmp/.X11-unix/X1 ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF' 
sudo bash -c 'cat > /etc/systemd/system/novnc.service << EOF [Unit] Description=noVNC After=vncserver.service Requires=vncserver.service [Service] User=ubuntu ExecStart=/usr/bin/websockify --web=/usr/share/novnc/ 6080 localhost:5901 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF' 
sudo systemctl daemon-reload sudo systemctl enable vncserver novnc sudo systemctl start vncserver novnc 

Now VNC + noVNC start automatically on every reboot. No SSH needed to get back in.

Transferring Files to Your VM

Copy a file from your local machine to the VM:

scp -i /path/to/key.key /local/file.pdf ubuntu@YOUR_IP:/home/ubuntu/ 

What Else Can You Do With This VM?

A free cloud VM with 2 cores and 12 GB RAM is surprisingly capable. Here's what you can run on it beyond just browsing:

🛠️ Development & Coding

  • Host a web server — deploy a Node.js, Python Flask, or any backend API for free
  • VS Code in the browser — install code-server and get a full IDE accessible from any device
  • Database server — run PostgreSQL, MongoDB, or Redis
  • Docker containers — spin up multiple services on one VM

📚 Learning & Practice

  • Linux practice — a safe sandbox to learn terminal commands without breaking your own machine
  • Learn DevOps — practice Docker, CI/CD pipelines, nginx configs
  • Self-host your side projects — deploy and share your projects for free
  • Run Python/ML scripts — small AI experiments and data processing

⚡ Always-On Tasks

  • Background downloads — leave large downloads running 24/7 without keeping your laptop on
  • Scheduled cron jobs — run scripts at specific times automatically
  • Telegram/Discord bots — keep them always online
  • Web scrapers — run data collection scripts continuously

🔒 Privacy

  • Browse with a different IP — websites see the VM's IP, not yours
  • Isolated browsing — keep work and personal browsing completely separate

Gotchas I Hit (So You Don't Have To)

1. Public IP not assigned by default
New Oracle VMs sometimes have no public IP. Go to Networking → VNIC → IP Administration to assign one.

2. Snap browsers don't work in VNC
Both chromium-browser and firefox on Ubuntu 22.04 install as snap packages which crash inside VNC with a cgroup error. Use firefox-esr from the Mozilla PPA instead.

3. iptables rules reset on reboot
After resizing the VM (changing CPU/RAM), Oracle reboots it and iptables resets. The fix is iptables-persistent which saves rules permanently.

4. Mumbai region capacity
If you're in India, the Mumbai region is often at capacity for free ARM VMs. You may get fewer OCPUs/RAM than the limit allows. Try resizing after creation, or add the Singapore region to your account.

Security

  • Don't share your URL + VNC password with anyone you don't trust
  • Enable MFA on your Oracle account: Profile → Security → MFA
  • The connection is HTTP (not HTTPS) — don't do internet banking or enter real passwords inside the VM
  • Change your VNC password anytime with vncpasswd

Final Thoughts

For ₹0 a month, you get a cloud computer with 2 cores and 12 GB RAM running 24/7, accessible from any device on the planet.

Is it blazing fast? No. Is it free forever and genuinely useful? Absolutely.

I use it for browsing, running scripts, and keeping things running in the background — without touching my local machine's resources.

If this helped you, drop a ❤️! And if you hit any issues, ask in the comments — I've probably already made that mistake. 😄