Remote Desktop: Difference between revisions

imported>Skyset
imported>Skyset
Add structure, divide article into RDP and VNC configuration, clean up markdown on GNOME section
Line 1: Line 1:
= Software =
Remote desktop software is split into two types: servers and clients.
To access a computer remotely, it must have a server running, which usually is exposed to a port or set thereof. Access to that server can be gained using a client; many protocols, like RDP, are open to all clients willing to support them. Others require specific clients, so consult the documentation for whichever service you choose to use.
== Servers ==
* VNC
* XRDP
== Clients ==
== Clients ==
* Apache Guacamole
* Apache Guacamole
Line 6: Line 16:
* tightvnc and its forks tigervnc and turbovnc
* tightvnc and its forks tigervnc and turbovnc
* x2goclient
* x2goclient
* GNOME Connections


== Servers ==
= Configuration =


* XRDP
== VNC ==
 
=== Configuration ===


Most servers provide a <code>vncserver</code> command.
Most servers provide a <code>vncserver</code> command.
Line 47: Line 56:
to /etc/nixos/configuration.nix.
to /etc/nixos/configuration.nix.


=== RDP ===
=== Guacamole ===


NixOS has first class support for XRDP server.
Guacamole-server and guacamole-client are in nixpkgs. Some details are in the [https://github.com/NixOS/nixpkgs/issues/17879 package request].
 
== RDP ==
 
NixOS has first-class support for XRDP. Client-wise, RDP can be accessed in many ways, but `remmina` and `freerdp` support it natively.
 
All of the options for the <code>xrdp</code> service can be viewed on the [https://search.nixos.org/options?channel=23.11&from=0&size=50&sort=relevance&type=packages&query=xrdp NixOS Options wiki], though an example setup inside of <code>configuration.nix</code> is provided below:


<source lang="nix">
<source lang="nix">
Line 64: Line 79:
(Source: [https://discourse.nixos.org/t/please-post-working-xrdp-setting-in-configuration-nix/7404/10 Discourse Link], [https://github.com/NixOS/nixpkgs/blob/86a80807d8d7051c63ab2b9d7f630abe066468b1/nixos/modules/services/networking/xrdp.nix nixpkgs code])
(Source: [https://discourse.nixos.org/t/please-post-working-xrdp-setting-in-configuration-nix/7404/10 Discourse Link], [https://github.com/NixOS/nixpkgs/blob/86a80807d8d7051c63ab2b9d7f630abe066468b1/nixos/modules/services/networking/xrdp.nix nixpkgs code])


You need to log out the user first on the remote machine, otherwise you'll get a black screen. (Source: [https://www.reddit.com/r/Proxmox/comments/hxp28j/black_screen_in_microsoft_remote_desktop_noob/fzm7zbo/ Reddit]). It may be particularly true on a multi-user system. You may be able to work around this by enabling and configuring [[Polkit]]. The configuration for enabling these permissions is the example code on that page.
A different window manager can be used for XRDP than a machine user, provided it has been enabled (through NixOS <code>services</code> or <code>nixpkgs</code>.


<code>freerdp</code> or <code>remmina</code> can be used on the client side.
Make sure you log out the visual user first on the remote machine, otherwise you'll get a black screen. (Source: [https://www.reddit.com/r/Proxmox/comments/hxp28j/black_screen_in_microsoft_remote_desktop_noob/fzm7zbo/ Reddit]). You may be able to work around this by enabling and configuring [[Polkit]], as demonstrated on that page.


<h3>GNOME</h3>
=== GNOME ===


The Xrdp <code>defaultWindowManager</code> setting to access a remote GNOME shell should be set to <code>gnome-remote-desktop</code>.
The XRDP <code>defaultWindowManager</code> setting to access a remote GNOME shell should be set to <code>gnome-remote-desktop</code>.


<code>services.gnome.gnome-remote-desktop</code> must be enabled for this to work. Also ensure that you have a firewall port open for Xrdp to communicate on (for the GNOME connections app, this is <code>3389</code>).
<code>services.gnome.gnome-remote-desktop</code> must be enabled for this to work. Also ensure that you have a firewall port open for XRDP to communicate on (for the GNOME connections app, this is <code>3389</code>).


=== Guacamole ===
=== Meshcentral ===
 
Guacamole-server and guacamole-client are in nixpkgs. Some details are in the [https://github.com/NixOS/nixpkgs/issues/17879 package request].


=== Meshcentral ===
Meshcentral is a self-hosted open source administration tool similar to teamviewer.
Meshcentral is a self-hosted open source administration tool similar to teamviewer.
It can be added with:
It can be added with: