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: