Category Archives: Remote Desktop Server

Remote Desktop Server Implementations (all available technologies, not just RDP protocol)

RustDesk plus Tailscale

RustDesk in combination with Tailscale/Headscale offers a near-perfect and completely free Remote Access solution for homelab enthusiasts.

This is so far the best tool I’ve found to remotely connect to ARM-based Linux desktops (e.g. Oracle Free Tier Ampère Instances with up to 4vCores and 24GB RAM or any of Apple’s M1/M2/M3/M4/… systems). For Intel-/AMD-based Linux desktops, however, I still prefer Cendio’s ThinLinc (on high resolution displays with the following workaround). For a matrix of client/server matches that worked best for me, see: overview of my favourite RDP client<->server combinations.

In combination with Tailscale (and if self-hosting is preferred/important Headscale) it offers secure and easy GUI access to computer and virtualised desktops in a homelab (plus cloud) setup:

No server is needed for direct peer-to-peer connections (e.g. with tailscale full domain names or with internal IPs in homelab):


NB: Don’t forget to enable 2-Factor-Authentication.

Related external posts/reviews/tutorials:

Remote Desktop Access – Overview of my favourite client-server combinations 2025

The following combinations have worked best for me:

Remote
 Desktops
Windows DesktopMac DesktopLinux Desktop Intel-/AMD-basedLinux Desktop
ARM64 / aarch64
Clients
Windows ClientWindows RDP (builtin)RustDeskThinLinc*RustDesk
Mac ClientWindows AppRustDeskThinLinc*RustDesk
Linux ClientRustDeskRustDeskThinLinc*RustDesk
iOS/iPad ClientWindows AppRustDeskRustDeskRustDesk
Android Client
(untested)
Remote Desktop AppRustDeskRustDeskRustDesk

* on high-resolution/Retina displays: use this workaround

If you’d like to enable external access to resources in your homelab or in your cloud environment, please don’t forget to choose a reasonably secure setup:

Configure Cendio ThinLinc Server on Pop_OS!

In order to run ThinLinc Server on Pop_OS! An additional profile needs to be created

$ sudo nano /opt/thinlinc/etc/conf.d/profiles.hconf
default=pop
order=unity ubuntu gnome gnome-classic kde xfce cinnamon mate lxde pop  <-------
[... rest of file ...]
[/profiles/pop]
xdg_session=pop
name=Pop
description=The Pop_OS Gnome desktop environment
screenshot=
cmdline=
testcmd=
description_from_testcmd=false

For details see: