Remote Desktop: Difference between revisions

From NixOS Wiki
imported>MichaelCTS
Add information about starting desktop sessions
imported>Skylark
→‎Clients: Alpha order, add freerdp tightvnc turbovnc
Line 1: Line 1:
== Clients ==
== Clients ==
* Tiger VNC
* Apache Guacamole
* Guacamole
* freerdp
* KRDC
* KRDC (KDE)
* x2go
* tightvnc and its forks tigervnc and turbovnc
* x2goclient


== Servers ==
== Servers ==

Revision as of 13:39, 9 November 2023

Clients

  • Apache Guacamole
  • freerdp
  • KRDC (KDE)
  • tightvnc and its forks tigervnc and turbovnc
  • x2goclient

Servers

  • XRDP

Configuration

Most servers provide a vncserver command. Various servers provide different 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 there is a bug where 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 options is to be explicit.

Write an executable script and run vncserver -xstartup $pathToScript

An example script can be

#!/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 putting the following line:
services.x2goserver.enable = true;
to /etc/nixos/configuration.nix.

RDP

NixOS has first class support for XRDP server.

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)

Notice: You need to log out the user first on the remote machine, otherwise you'll get a black screen. (Source: 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.

freerdp or remmina can be used on the client side.

Guacamole

Not yet added to nixpkgs

https://github.com/NixOS/nixpkgs/issues/17879

Meshcentral

Meshcentral is a self-hosted open source administration tool similar to teamviewer. Meshcentral server has been added, and can be used with:

services.meshcentral.enable = true;

(Meshcentral Server)[1]

however the agent is not yet added so you can't deploy clients i nixos. yet. https://github.com/NixOS/nixpkgs/issues/167527