14 min read

How to Share Your Screen or Desktop Remotely Without TeamViewer

Compare RDP, VNC, xRDP, and RustDesk as free TeamViewer alternatives. Learn how to reach any remote desktop from anywhere using a Localtonet TCP tunnel.

🖥️ Remote Desktop · RDP · VNC · TeamViewer Alternative · No Port Forwarding

How to Share Your Screen or Desktop Remotely Without TeamViewer

TeamViewer works, but it requires an account, enforces session time limits on the free tier, and flags personal use as commercial if you connect often enough. There are better options. This guide covers the main protocols and tools for remote desktop access, explains why most of them break behind home routers and CGNAT, and shows how a Localtonet TCP tunnel solves the network problem without any router configuration.

🪟 Windows RDP 🐧 Linux VNC and xRDP 🆓 RustDesk open source 🌍 Access from anywhere

RDP, VNC, and the Others — What Is the Difference?

Remote desktop tools all do the same basic thing: they show you another computer's screen and let you control it with your keyboard and mouse over a network connection. How they do it varies, and the differences matter depending on your OS and use case.

🪟 RDP — Remote Desktop Protocol

Developed by Microsoft and built into every edition of Windows Pro, Enterprise, and Server. RDP is the most efficient remote desktop protocol for Windows. It does not send raw screen pixels over the network — it sends rendering instructions and compresses everything intelligently, which keeps bandwidth usage low and latency manageable even on slow connections. It also supports clipboard sync, drive redirection, audio, and printer sharing out of the box. The downside is that RDP server is only available on Windows Pro and above. Windows Home does not include an RDP server.

🖥️ VNC — Virtual Network Computing

VNC works on Windows, Linux, and macOS. It captures the screen as pixels and sends them across the network, which makes it platform-independent but more bandwidth-hungry than RDP. Popular implementations include TigerVNC, TightVNC, and LibVNCServer. On Linux, VNC is the most common way to access a graphical desktop remotely. Performance is acceptable on a local network but can feel sluggish over higher-latency connections without tuning compression settings.

🔧 xRDP — RDP server for Linux

xRDP is an open-source RDP server that runs on Linux. It lets you connect to a Linux machine using a standard Windows Remote Desktop client (mstsc.exe) or any other RDP client. Under the hood it often uses VNC as the display backend, but the client just sees RDP. It is the recommended approach for remote desktop on Ubuntu and Debian servers because RDP clients are available on every OS and the connection quality is better than raw VNC.

🦀 RustDesk — open source TeamViewer alternative

RustDesk is an open-source remote desktop application that works like TeamViewer: both machines run a small client, they connect through a relay server, and you get a remote desktop session without any port forwarding. It is cross-platform (Windows, macOS, Linux, Android, iOS) and you can self-host the relay server so your connection data does not pass through third-party infrastructure. For people who want a simple, install-and-connect experience without dealing with tunnels, RustDesk is worth considering.

Protocol / Tool Platform Performance Port Notes
RDP Windows Pro and above Excellent 3389 Built into Windows, clients on all platforms
VNC Windows, Linux, macOS Good on LAN 5900 Pixel-based, more bandwidth
xRDP Linux Good 3389 Use any RDP client to connect to Linux
RustDesk All platforms Good 21115-21119 Relay-based, no port forwarding needed
RDP
PlatformWindows Pro+Port3389
VNC
PlatformWindows, Linux, macOSPort5900
xRDP
PlatformLinuxPort3389
RustDesk
PlatformAll platformsPortRelay-based

Free and Open Source Alternatives to TeamViewer

🦀 RustDesk Open source, cross-platform, self-hostable relay server. The closest drop-in replacement for TeamViewer in terms of user experience.
🐯 TigerVNC High-performance VNC server and client. Good Linux support, TLS encryption, and better compression than older VNC implementations.
🔧 xRDP Free RDP server for Linux. Lets you connect to any Linux desktop using the Microsoft Remote Desktop client or Remmina.
🔗 Remmina Open source remote desktop client for Linux. Supports RDP, VNC, SSH, and SPICE from a single application.
🖥️ Windows built-in RDP No installation needed on Windows Pro. Enable it under System settings and connect with mstsc.exe or any RDP client.
🌐 Apache Guacamole Clientless remote desktop gateway. Connects to RDP, VNC, and SSH through a browser with no client software installed.

Why Remote Desktop Fails from Outside Your Network

RDP on port 3389, VNC on port 5900 these work perfectly on a local network. The moment you try to connect from outside, from a different Wi-Fi, from mobile data, from another country you hit a wall.

Your home router sits between your computer and the internet. Incoming connections from outside have nowhere to go unless port forwarding is configured. Even then, many home internet connections today are behind CGNAT, where the ISP places dozens or hundreds of customers behind a single public IP address. No amount of port forwarding on your router fixes CGNAT because there is no direct public IP to forward from.

This is why tools like TeamViewer and AnyDesk work the way they do: both machines connect outward to a relay server owned by the company, and your session travels through that relay. You never need to open a port because the connection is always outbound. The trade-off is that your screen data passes through their infrastructure, and the free tiers have limits.

A Localtonet TCP tunnel gives you the same outbound connection approach without depending on TeamViewer's servers. Your machine opens an outbound tunnel to Localtonet's relay. The relay address becomes the entry point for your RDP or VNC client. The session is forwarded through the tunnel to your local machine. No port forwarding, no public IP required.

Connect to Windows via RDP from Anywhere

Windows Pro, Enterprise, and Server all include an RDP server. If you are on Windows Home, you will need to use VNC or RustDesk instead RDP server is not available on Home editions.

1

Enable Remote Desktop on the host machine

Go to Settings → System → Remote Desktop and toggle Enable Remote Desktop on. Note the PC name shown on that screen you will not need it since you will connect via the tunnel address, but the setting must be on.

2

Install Localtonet and authenticate

localtonet.exe --authtoken <YOUR_TOKEN>
3

Create a TCP tunnel for port 3389

Go to the TCP/UDP tunnel page, select TCP, set local IP to 127.0.0.1 and port to 3389. Click Create and then start the tunnel. The dashboard shows a relay address such as example.localto.net:33221.

4

Connect from any device using an RDP client

On Windows, open Remote Desktop Connection (mstsc.exe) and enter the relay address. On macOS, use the Microsoft Remote Desktop app from the App Store. On Linux, use Remmina or any other RDP client. On Android or iOS, the Microsoft Remote Desktop app works the same way.

# Linux with xfreerdp
xfreerdp /v:example.localto.net:33221 /u:YourWindowsUsername /p:YourPassword
Full documentation for RDP with Localtonet

Step-by-step screenshots and additional configuration options are available in the Localtonet RDP documentation.

Connect to Linux via VNC or xRDP from Anywhere

For Linux machines, you have two good options: VNC with TigerVNC, or xRDP which lets you use any RDP client. xRDP is often preferable because RDP clients are available everywhere and the connection quality is better.

Option A: xRDP (recommended for Ubuntu / Debian)

# Install xRDP
sudo apt update
sudo apt install -y xrdp

# Enable and start the service
sudo systemctl enable xrdp
sudo systemctl start xrdp

# Allow the xrdp user to access the SSL cert
sudo adduser xrdp ssl-cert

xRDP listens on port 3389, the same as Windows RDP. Create a TCP tunnel for port 3389 in Localtonet exactly as described for Windows above. Connect using any RDP client with the relay address.

Option B: TigerVNC

# Install TigerVNC server
sudo apt update
sudo apt install -y tigervnc-standalone-server

# Set a VNC password
vncpasswd

# Start a VNC session on display :1 (port 5901)
vncserver :1 -geometry 1920x1080 -depth 24

TigerVNC runs on port 5901 for display :1. Create a TCP tunnel for port 5901 in Localtonet. Connect using any VNC client TigerVNC viewer, Remmina, or RealVNC Viewer with the relay address and port.

Stop the VNC server when not in use

VNC passwords are weaker than system passwords. Stop the server when you are done: vncserver -kill :1. Always connect VNC over a Localtonet tunnel rather than exposing port 5901 directly on the internet.

The Simplest Option: RustDesk

If the tunnel and protocol setup feels like too much, RustDesk is worth considering. Install it on both machines, share the ID shown on the host, and connect. No tunnel required because RustDesk handles the relay itself. It is open source, cross-platform, and free to use with the public relay servers.

The main differences compared to the Localtonet tunnel approach:

RustDesk
  • Install and connect, no tunnel setup needed
  • Works on Windows, macOS, Linux, Android, iOS
  • Free relay servers available out of the box
  • Can self-host the relay for full privacy
RDP or VNC over Localtonet TCP tunnel
  • Uses the native OS protocol (faster, lower latency)
  • Full RDP feature set (drive redirection, printer sharing)
  • No extra software on the host beyond enabling RDP
  • Works with any standard RDP or VNC client

For most personal and small team setups, both approaches work well. The Localtonet tunnel is better when you want to use native RDP on Windows with its full feature set, or when you already have Localtonet running for other services on the same machine. RustDesk is better when you want the quickest possible setup or need to support non-technical users.

Security Considerations

🔒 Never expose RDP or VNC directly on the internet

Port 3389 and port 5900 are among the most scanned ports on the internet. Bots probe them continuously looking for weak passwords. Always connect through a Localtonet TCP tunnel rather than opening these ports in your firewall. The tunnel address changes unless you reserve a port, which adds an additional layer of obscurity.

🔑 Use strong passwords for RDP and VNC

Your Windows login password is used for RDP authentication. Use a long, unique password. Do not use the same password you use elsewhere. For VNC, set a strong VNC password with vncpasswd and enable view-only mode if the connection is for observation rather than control.

🛡️ Enable Network Level Authentication for RDP

NLA requires the connecting client to authenticate before a full RDP session is established. It is enabled by default on modern Windows versions. Confirm it is on under Settings → System → Remote Desktop → Advanced settings.

⏱ Stop tunnels when not actively using them

Stop the Localtonet tunnel when you are not connected. The remote desktop port becomes unreachable from the internet the moment the tunnel stops. You can restart the tunnel any time you need access again.

Frequently Asked Questions

I have Windows Home. Can I still use RDP?

No. Windows Home does not include an RDP server. You can use RDP as a client to connect to other machines, but you cannot accept incoming RDP connections on Windows Home. Your options for remote desktop on Windows Home are VNC (TigerVNC or UltraVNC), RustDesk, or upgrading to Windows Pro.

Can I connect to a headless Linux server that has no monitor attached?

Yes. xRDP and VNC both create virtual display sessions that exist independently of any physical monitor. When you connect, you get a fresh desktop session running on the server. This is the standard way to access a headless home server or Raspberry Pi with a graphical interface.

What is the performance like over a Localtonet tunnel?

Performance depends on your upload bandwidth at the host machine and the connection quality between both ends. For general use like browsing, file management, and terminal work, RDP over a tunnel is very responsive. Video and graphics-heavy tasks will show more latency. RDP performs better than VNC over limited connections because it sends rendering instructions rather than raw pixels.

Can I use this to provide remote support to a family member?

Yes, though the setup requires some technical steps on the person's computer. For non-technical users, RustDesk is easier because they just install it and share an ID. For a more permanent setup where you regularly need to access a family member's machine, enabling RDP or VNC once and setting up a Localtonet tunnel that starts automatically on boot gives you reliable access without them needing to do anything.

Can multiple people connect to the same machine at once?

Windows allows only one concurrent RDP session on desktop editions. If someone is logged in locally, a remote connection will disconnect them. Windows Server supports multiple concurrent RDP sessions. Linux with xRDP or VNC can support multiple sessions on separate display numbers, each with its own session.

Do I need to keep a terminal open for the Localtonet tunnel to stay active?

No. Install Localtonet as a service so it runs in the background and starts automatically at boot. On Linux, use sudo localtonet --install-service --authtoken <YOUR_TOKEN> followed by sudo localtonet --start-service --authtoken <YOUR_TOKEN>. The tunnel stays active without any terminal window open. Full instructions are in the auto-start guide.

Access Your Desktop from Anywhere | No TeamViewer Required

Enable RDP or install a VNC server, create a Localtonet TCP tunnel for the right port, and connect from any device with a standard remote desktop client. No account fees, no session limits, no third-party relay for your screen data.

Create Free Localtonet Account →

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support