Skip to content
TENVO AI · LIVE · v0.16.2 · TLS · Per-device certs · AGPL-3.0 · FREE TIER · 30 DEVICES · SELF-HOSTABLE INFRA · BYO API KEY · MCP FOR CLAUDE & CURSOR
Back to BlogTutorial

oracle cloud free tier remote desktop — ARM setup

Tenvo Editorial Team7 min read
oracle cloud free tier remote desktop — ARM setup

Want a low-cost, reliably fast remote desktop but don’t want to pay TeamViewer or AnyDesk subscriptions? This guide walks you through using Oracle Cloud's ARM Always Free tier to host a remote desktop (Ubuntu 22.04 arm64), with practical steps for RDP, SSH tunneling and a self-hosted Tenvo server option.

Want a low-cost, reliably fast remote desktop but don’t want to pay TeamViewer or AnyDesk subscriptions? This guide walks you through using Oracle Cloud's ARM Always Free tier to host a remote desktop (Ubuntu 22.04 arm64), with practical steps for RDP, SSH tunneling and a self-hosted Tenvo server option.

Why use Oracle's ARM Always Free for remote desktop

Oracle's Always Free Ampere A1 instances are a useful option if you need a remote desktop host without monthly SaaS fees. The Free Tier gives you an Arm-based compute allocation suitable for light-to-moderate desktop workloads: pick an arm64 OS image (Ubuntu 22.04 LTS works well), install a lightweight desktop like Xfce, and expose an RDP server or run a modern remote protocol such as Tenvo’s self-hosted agent.

Honest note: if you need full GPU acceleration, low-latency pro graphics, or enterprise support guarantees, commercial products or paid cloud GPUs are better choices. This tutorial is for general desktop use, admin tasks, and remote support on the cheap.

What you’ll build — minimum components

  • An Always Free Ampere (arm64) instance running Ubuntu 22.04 LTS (jammy).
  • A lightweight desktop environment (Xfce) and xrdp for RDP connections.
  • Secure access via SSH tunnel or restricted VCN security lists; optional Tenvo server for a self-hosted remote agent.

Step 1 — create an Oracle Free account and pick the right image

Create an Oracle Cloud Free account (the Always Free tier is the option you want). In the OCI console: Compute > Instances > Create Instance. Make sure to select an Always Free–eligible Ampere (ARM) shape — the VM.Standard.A1.Flex family — and choose an amd64/arm64 image tagged as "Always Free eligible".

Pick an OS image: Ubuntu 22.04 LTS (arm64) is a stable choice with wide package support. When creating the instance, add your public SSH key for the default user (opc or ubuntu depending on image). Note the public IP assigned (or allocate a reserved public IP if you prefer a persistent address).

Step 2 — basic instance hardening and initial update

SSH into the instance from your workstation. Replace opc@PUBLIC_IP with the instance address and your key path as appropriate:

ssh -i ~/.ssh/id_rsa opc@PUBLIC_IP

Once connected, update the OS and set a permissive locale if needed:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ufw fail2ban

Enable UFW but keep SSH allowed for now:

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

Step 3 — install a desktop and xrdp (RDP)

For a remote desktop on ARM, pick a lightweight DE for responsiveness. Xfce is a common balance of features and speed:

sudo apt install -y xfce4 xfce4-goodies

Install xrdp (the package in Ubuntu 22.04 repositories works fine on arm64):

sudo apt install -y xrdp
sudo systemctl enable --now xrdp

Configure xrdp to use Xfce. Create or replace ~/.xsession for the remote user:

echo "startxfce4" > ~/.xsession
chmod +x ~/.xsession

Adjust /etc/xrdp/startwm.sh so it launches Xfce (edit as sudo): remove or comment the last two lines and add startxfce4 before exit 0. Also add the xrdp user to the ssl-cert group:

sudo adduser xrdp ssl-cert

Restart xrdp:

sudo systemctl restart xrdp

Step 4 — secure access: prefer SSH tunnel or tight security lists

Opening RDP (TCP/3389) to the internet is convenient but increases attack surface. Two safer options:

  1. SSH tunnel (recommended): keep 3389 closed in your VCN security lists and forward it over an SSH session from your workstation.
  2. Use OCI network security groups to restrict 3389 to a known IP range (not recommended for roaming clients).

SSH tunnel example (from your workstation):

ssh -i ~/.ssh/id_rsa -L 3389:localhost:3389 opc@PUBLIC_IP
# Then point your local RDP client to 127.0.0.1:3389

With the tunnel active you’ll RDP to localhost as if the server were local. This avoids opening 3389 publicly and is easy to script or wrap in an SSH config entry.

Optional: run Tenvo on the instance (self-hosted agent)

If you prefer an agent-based connection rather than RDP, Tenvo can be run on the ARM server so you control the signaling and relay (no SaaS). Tenvo supports Linux arm64 builds — download the ARM64 binary from /download and run it as a systemd service. Example outline:

  • Download the ARM64 artifact from Tenvo's downloads page: /download
  • Create a system user, extract the binary to /usr/local/bin/, and add a systemd unit that launches Tenvo at boot.

We keep Tenvo instructions short here; if you want a full self-hosted remote desktop setup, see our deeper walkthrough on self-hosted remote desktop guide.

Step 5 — performance tuning and tips

  • Use a lightweight desktop (Xfce, LXDE) for responsiveness on lower OCPU counts.
  • On the RDP client, reduce color depth to 16-bit and turn off desktop effects to lower bandwidth and CPU use.
  • Enable compression in xrdp if available; also consider alternative protocols (VNC over SSH, or Tenvo) for different latency/quality trade-offs.
  • If your workflow is GUI-heavy (video, 3D), Oracle’s free ARM instances won’t match a GPU-backed desktop; plan on a paid GPU instance or local workstation in that case.

Cost management and Oracle billing notes

The Always Free tier lets you run the Ampere instance at no charge while you stay within the Always Free limits. Watch the OCI console for any resources not marked "Always Free" (block volumes, public IPs and egress can incur charges if you exceed the free allowances). To avoid surprise bills, stop or terminate the instance when not in use and check the "Costs" view in the console.

If you outgrow Always Free and need larger shapes, Oracle bills compute by OCPU-hour and storage by GB-month — rates vary by region. If you plan to scale up, validate pricing in the OCI console before switching shapes.

Troubleshooting common issues

  • Black screen after RDP login: ensure ~/.xsession contains startxfce4 and that /etc/xrdp/startwm.sh is set to launch it.
  • Connection refused on 3389: check that xrdp is running (sudo systemctl status xrdp) and that you’re tunneling if 3389 is blocked by security lists.
  • Slow responsiveness: reduce desktop effects, lower RDP color depth, or switch to an even lighter desktop.

Security checklist before you go live

  • Use SSH keys only; disable password authentication in /etc/ssh/sshd_config.
  • Keep the machine updated: configure automatic security upgrades or run regular apt update && apt upgrade.
  • Use fail2ban to throttle brute-force attempts and monitor logs in /var/log/auth.log.
  • Prefer SSH tunneling for RDP traffic or use Tenvo’s built-in secure signaling rather than exposing 3389 to the internet. See our security primer at is remote desktop secure and the broader tips in remote-desktop-security.

When to pick other tools

Quick cases where alternatives are better:

  • You need mobile-first, low-latency remote access for graphics apps: consider commercial products or cloud GPUs.
  • You need centralized licensing and support for many seats: enterprise remote-control SaaS or RDP farms will be easier.
  • You want zero-setup family support: Chrome Remote Desktop or consumer apps are simpler for non-technical users.

For a direct comparison of trade-offs among remote tools check our articles on best teamviewer alternatives and rustdesk vs anydesk.

Wrapping up — what you’ll have and next steps

By following this guide you’ll have an Always Free Oracle ARM instance running a usable remote desktop (Xfce + xrdp) with secure access via SSH tunneling. Optionally, you can run Tenvo to self-host a modern remote agent and avoid exposing RDP directly. From here you can harden the instance, script start/stop to save resources, and expand to paid shapes if you need more CPU or GPU power.

Ready to try it? Download Tenvo (if you want the agent option) at /download and read our hands-on setup notes in the remote access setup guide. If you prefer a self-hosted deep dive, our self-hosted remote desktop guide has more deployment patterns and automation examples.

When you’re ready, spin up an Always Free Ampere VM in the OCI console and follow the steps above — and if you want the Tenvo binary for arm64, grab it from /download and install it as a systemd service for always-on access.

Get Tenvo

Ready to try it yourself?

Free for 30 devices, no credit card. Up and connected in two minutes.