Three methods for remote workstation access across the federation. Choose based on network path and client device.
| Method | Protocol | Port | Best For | Client Platforms |
|---|---|---|---|---|
| Microsoft Remote Desktop (MRD) | RDP | 3389 | ZeroTier LAN, best performance | Windows, Mac, iOS, Android |
| RustDesk | Proprietary (relay) | 21118 | NAT traversal, no VPN needed | Windows, Mac, Linux, iOS, Android |
| Google Remote Desktop (GRD) | WebRTC | — | Browser-only, no install | Any browser (Chrome preferred) |
| Scenario | Use |
|---|---|
| On ZeroTier network, need full desktop | MRD (fastest, best quality) |
| Off-network, no VPN, need quick access | RustDesk (punches through NAT) |
| On someone else’s machine, can’t install | GRD (browser only) |
| Clipboard/file transfer needed | MRD or RustDesk |
| Mobile device (phone/tablet) | RustDesk app or MRD app |
GNOME Remote Desktop provides native RDP server on Ubuntu 22.04+.
# Install (usually pre-installed on Ubuntu Desktop)
sudo apt install gnome-remote-desktop
# Enable and configure (system-level for headless)
grdctl --system rdp enable
grdctl --system rdp set-port 3389
grdctl --system rdp disable-port-negotiation
grdctl --system rdp set-credentials <username> <password>
grdctl --system rdp disable-view-only
# Enable and start service
sudo systemctl enable gnome-remote-desktop
sudo systemctl restart gnome-remote-desktop
# Verify
grdctl --system status
ss -tlnp | grep 3389
Troubleshooting:
grdctl --system rdp set-port 3389 + grdctl --system rdp disable-port-negotiation + restart service.gnome-remote-de process (check ss -tlnp).# Install (download .deb from rustdesk.com)
sudo dpkg -i rustdesk-<version>.deb
# Service runs automatically after install
systemctl status rustdesk
# Get device ID
rustdesk --get-id
# Set permanent password (optional, for unattended access)
rustdesk --password <password>
Ports: 21118 (TCP signaling), 21119 (TCP relay)
# Install Chrome Remote Desktop host
# Download from: https://remotedesktop.google.com/access
wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
sudo dpkg -i chrome-remote-desktop_current_amd64.deb
sudo apt -f install
# Configure via browser at https://remotedesktop.google.com/access
# Requires Chrome browser + Google account sign-in on host
Note: Requires active Google account session. Best as backup method.
# Enable Remote Desktop (Settings > System > Remote Desktop > On)
# Or via PowerShell:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Verify
Get-Service TermService | Select Status
netstat -an | findstr 3389
Download from rustdesk.com, install, note the ID.
Install via remotedesktop.google.com in Chrome browser.
Format: <zerotier-ip>:3389 for MRD, or RustDesk ID for RustDesk.
| Node | ZeroTier IP | MRD Address | RustDesk ID |
|---|---|---|---|
| (fill per node) | 10.147.17.x | 10.147.17.x:3389 | (from rustdesk –get-id) |