XDA published a piece this month about ditching a paid remote access app for a self-hosted one, and the math is the same one many admins keep hitting. TeamViewer’s per-seat pricing, AnyDesk’s commercial-use audits, and Splashtop’s subscription creep all push toward a self-hosted answer, and the self-hosted answer finally works. We tested eight of the best apps for self-hosted remote access on Windows, macOS, and Linux, covering full desktop control, browser gateways, agent-based fleet management, and network-layer access. Every one runs on hardware you own, from a Raspberry Pi to a corporate VM.
The benchmark for each pick: how quickly it installs on a plain Ubuntu box, how latency holds up over a 200 ms link, and whether the licence lets a small team or a home lab actually use it without an audit letter.
What to look for in a self-hosted remote access app
A short checklist separates the tools that survive a real deployment from the ones that live only in blog posts.
- Self-hosted connection infrastructure. The whole point is that no external relay sees your session. Tools that route through a vendor cloud fail this test.
- Genuinely-free licence for your use case. Read it before deploying. RustDesk and Guacamole are open source; NoMachine is proprietary but free for personal use only.
- Cross-platform reach. Windows admins tend to have a Linux server and a Mac somewhere in the mix. A tool that only handles two of the three narrows the use case.
- Reasonable install. A twenty-page manual with two databases and a reverse proxy is fine for a homelab weekend. It is not fine for a family support tool.
- Modern encryption. TLS end-to-end, not the DES-based VNC scheme from 1998. Every pick here uses TLS or WireGuard.
- Sensible auth. LDAP, OIDC, or at least a password with 2FA. Anything that sits on the public internet without one of those is not remote access, it is a squatting invitation.
Quick comparison
| App | Best for | Platforms | License | Cost |
|---|---|---|---|---|
| RustDesk | TeamViewer replacement | Windows, macOS, Linux | AGPL / GPL | Free (self-host) |
| Apache Guacamole | Browser-based access to RDP/VNC/SSH | Linux server, any browser | Apache 2.0 | Free |
| MeshCentral | Managing fleets of endpoints | Windows, macOS, Linux | Apache 2.0 | Free |
| Remotely | On-demand remote support | Windows, macOS, Linux | GPLv3 | Free |
| NoMachine | Low-latency personal use | Windows, macOS, Linux | Proprietary | Free personal |
| TigerVNC | Classic VNC baseline | Windows, macOS, Linux | GPLv2 | Free |
| Moonlight + Sunshine | High-framerate desktop and games | Windows, macOS, Linux | GPLv3 | Free |
| Tailscale SSH | Zero-key SSH over WireGuard mesh | Windows, macOS, Linux | Client MIT; service freemium | Free personal |
The 8 self-hosted remote access apps to try
1. RustDesk — best TeamViewer replacement
RustDesk is the drop-in replacement for TeamViewer and AnyDesk that most admins arrive at first, and it earns the spot honestly. The client is a native Rust app on Windows, macOS, and Linux; the hbbs and hbbr relay server binaries run on any $5 VPS or a Raspberry Pi. Version 1.4.9 shipped with faster hardware encoding on Intel and AMD, and RustDesk Server Pro reached 1.8.5 with OIDC, LDAP, 2FA, and a proper web console for teams that need centralized management. RustDesk for self-hosted remote access is the pick for users who want the TeamViewer workflow (nine-digit ID, one-time code) without the audit letter.
Where it falls short: The default free server relay works but does not include an address book or device permissions. Screen capture on Wayland-based Linux still needs the PipeWire path and can be fussy on first configuration.
Platforms: Windows, macOS, Linux, Android, iOS
Pricing:
- Free: fully open source under AGPL and GPL; self-host the OSS server at no cost
- Paid: RustDesk Server Pro from $9.90 per month for centralized management and identity integration
Download: RustDesk
Bottom line: The obvious first choice for anyone leaving TeamViewer or AnyDesk who wants the same ID and code workflow on their own server.
2. Apache Guacamole — best browser-based gateway
Apache Guacamole turns any browser into a remote desktop client. Guacd, the daemon, speaks RDP, VNC, SSH, and Telnet on the back end; the Java client renders over HTML5 in front, so users hit a URL and log in with no software install on their device. Version 1.6.0 improved rendering performance and Docker support, and case-insensitive usernames finally landed as a config option. Guacamole for self-hosted remote access is the answer for organizations that need to give contractors, students, or family members access to specific machines without installing anything on their computer.
Where it falls short: Setup is heavier than the rest of this list. You are running Tomcat, guacd, and a database (MariaDB or PostgreSQL), plus a reverse proxy in front. Casual users should reach for RustDesk instead.
Platforms: Linux server; any modern browser as the client
Pricing:
- Free: fully open source under Apache License 2.0
- Paid: none
Download: Apache Guacamole
Bottom line: The right pick when the client cannot install software and the server team can spend an afternoon on setup.
3. MeshCentral — best for fleets of unattended endpoints
MeshCentral is the open-source answer to ScreenConnect and Kaseya for MSPs and homelab admins with more than a handful of machines. The Node.js server, at 1.2.0 as of May 2026, pairs with a tiny agent that runs on Windows, macOS, and Linux and phones home over TLS. From the browser console you get remote desktop, remote terminal, file manager, system information, and scriptable batch actions across the whole fleet. Two-factor auth, LDAP, and per-device permissions come baked in.
Where it falls short: The UI is dense and takes a session or two to learn. The macOS agent requires screen recording and accessibility approvals on every managed Mac before the desktop stream works, which is Apple’s rule, not MeshCentral’s, but still slows the first-time rollout.
Platforms: Linux server (Node.js 20+); Windows, macOS, Linux agents; browser as client
Pricing:
- Free: fully open source under Apache License 2.0
- Paid: none
Download: MeshCentral
Bottom line: The pick for managing more than five machines you own or support, on any operating system.
4. Remotely — best for on-demand support
Remotely is the .NET 8 and Blazor answer for MSPs who want an open-source, self-hosted alternative to TeamViewer QuickSupport. The server runs in Docker with SQLite by default or PostgreSQL for real deployments; the technician logs in through the browser, the person needing help downloads a small executable, runs it, and shares a six-digit code. From there the technician gets remote control, remote scripting via PowerShell or Bash, and clipboard and file transfer. The 2026 branch continues to see quarterly releases from Immense Networks.
Where it falls short: The unattended-agent signing story is DIY, so Windows SmartScreen will complain on first install unless you sign the binary yourself. Bandwidth optimization is behind RustDesk on slow links.
Platforms: Windows, macOS, Linux (agents); Docker (server)
Pricing:
- Free: fully open source under GPLv3
- Paid: none
Download: Remotely
Bottom line: The pick for on-demand support sessions where the person you are helping is not going to install and configure a permanent agent.
5. NoMachine — best low-latency personal option
NoMachine is the outlier here, proprietary rather than open source, but free for personal, non-commercial use with no time caps, no session limits, and no feature clipping. The NX protocol behind it is genuinely faster over high-latency and low-bandwidth links than RDP or VNC, which shows up the moment you use it on a hotel Wi-Fi. Everything from audio, USB forwarding, and file transfer to a browser-based access mode is included in the free build. Version 9.5.7 is current across Windows, macOS, Linux, and Raspberry Pi.
Where it falls short: Not open source and not self-hostable in the multi-tenant sense; each install is a peer-to-peer node. The free licence forbids business use, and NoMachine does check.
Platforms: Windows, macOS, Linux, ARM, Raspberry Pi
Pricing:
- Free: personal, non-commercial use with no feature caps
- Paid: NoMachine Enterprise for business use, licensed per user
Download: NoMachine
Bottom line: The pick for personal use on flaky networks when raw speed matters more than the open-source purity test.
6. TigerVNC — best classic VNC baseline
TigerVNC is the boring, reliable VNC that gets recommended when the answer needs to be plain VNC and nothing more. Version 1.16.2, released in March 2026, added better color handling and cleaner high-DPI support. The client runs on Windows, macOS, and Linux; the server runs on Linux and BSD. TLS extensions handle encryption, and modern auth extensions cover x509 and Kerberos for anyone who does not want to layer a VPN in front.
Where it falls short: Windows servers are third-party (UltraVNC or TightVNC) rather than TigerVNC itself. No unattended-access UX, no address book, no relay. This is a protocol implementation, not a product.
Platforms: Windows, macOS, Linux (client); Linux and BSD (server)
Pricing:
- Free: fully open source under GPLv2
- Paid: none
Download: TigerVNC
Bottom line: Pick when the requirement is a VNC server and viewer, nothing more, and you plan to put SSH or WireGuard in front for the transport.
7. Moonlight + Sunshine — best high-framerate desktop
Moonlight and Sunshine together are the self-hosted answer to Splashtop and Parsec for anyone who needs 60 or 120 fps on the remote screen. Sunshine, from LizardByte, runs on your host PC and captures its output through NVENC (Nvidia), AMF (AMD), or Quick Sync (Intel), with a software x264 fallback if none of those are available. Moonlight runs on the phone, tablet, Steam Deck, laptop, or smart TV you want to work from. It was built for game streaming, but Sunshine’s default Desktop app streams the whole Windows or macOS desktop, and many people run it as a very fast general-purpose remote desktop.
Where it falls short: Sunshine assumes a gaming-class GPU is available for hardware encoding, so an office thin client is not the right host. Multi-user server support is not the point; each PC is a single-user host.
Platforms: Windows, macOS, Linux (Sunshine); Windows, macOS, Linux, Android, iOS, Steam Deck, LG and Samsung TVs (Moonlight)
Pricing:
- Free: fully open source under GPLv3
- Paid: none
Download: Sunshine and Moonlight
Bottom line: The pick for creative and gaming workstations where 30 fps feels sluggish and the RustDesk framerate is not enough.
8. Tailscale SSH — best network-layer access
Tailscale SSH takes the opposite approach from everything above: instead of standing up a new remote-desktop protocol, it turns SSH into something that already handles auth for you. Every device on your tailnet joins a WireGuard mesh, ACLs written in HuJSON decide who can SSH where, and the underlying keys are rotated by Tailscale rather than by you. Combined with any RDP or VNC server exposed only on the tailnet, you get a portable remote-access setup with no ports on the public internet. Session recording landed in 2026 for teams that need audit logs of every SSH connection.
Where it falls short: Not a screen-sharing tool on its own; you still need a VNC or RDP server on the target for graphical access. The coordination server is Tailscale’s, though Headscale is a fully self-hosted control-plane alternative if that matters for your threat model.
Platforms: Windows, macOS, Linux, iOS, Android, most NAS operating systems
Pricing:
- Free: personal plan covers up to 100 devices per user
- Paid: Personal Plus and business tiers above that
Download: Tailscale SSH
Bottom line: The pick when the problem is not “share this screen” but “reach this box from anywhere without opening the firewall”.
How to pick the right one
Match the tool to the actual use case:
- If you want a TeamViewer clone on your own server: RustDesk.
- If the client cannot install software: Apache Guacamole.
- If you manage more than five endpoints: MeshCentral.
- If you provide on-demand support to non-technical users: Remotely.
- If personal use over rough networks is the priority: NoMachine.
- If the requirement is a plain VNC baseline: TigerVNC.
- If you need 60 or 120 fps on the remote screen: Moonlight and Sunshine.
- If the problem is network reachability, not screen sharing: Tailscale SSH.
For most readers, RustDesk is the right starting point. Add MeshCentral once you are managing more than a couple of machines, and layer Tailscale under everything so nothing has to be reachable from the public internet.
FAQ
What is the best free self-hosted remote access tool?
RustDesk. It gives you the TeamViewer workflow, runs the connection server on hardware you own, and costs nothing under the AGPL and GPL licences. MeshCentral is the alternative when the job is managing many machines rather than jumping into one session at a time.
Is RustDesk really as fast as TeamViewer?
On a decent link, yes. Hardware encoding on Nvidia, AMD, and Intel GPUs matches or beats TeamViewer for framerate, and latency depends on where you host the relay server and how close it is to both endpoints. Put the relay on a VPS in the same region as your endpoints and the difference to a commercial service disappears.
Do I need to open ports on my firewall to self-host RustDesk?
Only on the machine running the RustDesk relay (hbbs and hbbr) if it lives outside your network. If you put the relay on a VPS, or run everything inside a Tailscale tailnet, no ports need to be open on your home firewall at all.
Can I use Apache Guacamole to access a Windows PC?
Yes, over RDP. Enable Remote Desktop on the Windows machine, add it as a Guacamole connection with the RDP protocol, and users log in through the browser without any client install. The same setup works for macOS through VNC and for Linux through VNC or SSH.
Is NoMachine legal to use for business?
Only with a paid Enterprise licence. The free build is licensed for personal, non-commercial use only, and NoMachine does check activation. For any commercial deployment, either buy the Enterprise licence or pick one of the open-source options on this list.
What is the safest way to expose a self-hosted remote access tool to the internet?
Do not, if you can avoid it. Put the target behind Tailscale or WireGuard so it is only reachable from your mesh. If you must expose a public endpoint, terminate TLS at a reverse proxy, require 2FA on every account, and monitor the auth logs for failed attempts.