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 | |||
= | = Configuration = | ||
== VNC == | |||
== | |||
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. | ||
=== | === Guacamole === | ||
NixOS has first class support for XRDP | 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]) | ||
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>. | |||
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. | |||
=== GNOME === | |||
The | 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 | <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>). | ||
=== | === 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: |
Revision as of 07:22, 2 March 2024
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
- Apache Guacamole
- freerdp
- KRDC (KDE)
- remmina
- tightvnc and its forks tigervnc and turbovnc
- x2goclient
- GNOME Connections
Configuration
VNC
Most servers provide a vncserver
command.
Various servers provide configuration options either by CLI or by configuration file.
Desktop session
To start a desktop session or window manager, one currently has to do this manually because servers still have hard-coded paths to /usr/share/xsessions
to look for .desktop
files. That means one has to write a script that starts the desktop session, window manager, or any other X application.
Some servers will automatically run $HOME/.vnc/xstartup
but the more secure option is to write an executable script and run vncserver -xstartup $pathToScript
An example script:
#!/usr/bin/env bash
# set some env variables
# start window manager
exec icewm
pathToScript
can also be a path to an executable like ${pkgs.icewm}/bin/icewm
Tiger VNC
Nixpkgs has a package but no service.
The server component can be started using the vncserver
command.
To connect, use the vncviewer
command.
x2go
X2go client is packaged in nixos as x2goclient
.
The server is installed by adding the following line:
services.x2goserver.enable = true;
to /etc/nixos/configuration.nix.
Guacamole
Guacamole-server and guacamole-client are in nixpkgs. Some details are in the 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 xrdp
service can be viewed on the NixOS Options wiki, though an example setup inside of configuration.nix
is provided below:
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
services.xrdp.enable = true;
services.xrdp.defaultWindowManager = "startplasma-x11";
services.xrdp.openFirewall = true;
(Source: Discourse Link, nixpkgs code)
A different window manager can be used for XRDP than a machine user, provided it has been enabled (through NixOS services
or nixpkgs
.
Make sure you log out the visual user first on the remote machine, otherwise you'll get a black screen. (Source: Reddit). You may be able to work around this by enabling and configuring Polkit, as demonstrated on that page.
GNOME
The XRDP defaultWindowManager
setting to access a remote GNOME shell should be set to gnome-remote-desktop
.
services.gnome.gnome-remote-desktop
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 3389
).
Meshcentral
Meshcentral is a self-hosted open source administration tool similar to teamviewer. It can be added with:
services.meshcentral.enable = true;
However, the agent (client) is not available. (Request)