Remote Desktop: Difference between revisions
imported>Skylark →Clients: Alpha order, add freerdp tightvnc turbovnc |
imported>Skylark →Servers: Tidy, update status of Guacamole |
||
Line 13: | Line 13: | ||
Most servers provide a <code>vncserver</code> command. | Most servers provide a <code>vncserver</code> command. | ||
Various servers provide | Various servers provide configuration options either by CLI or by configuration file. | ||
==== Desktop session ==== | ==== Desktop session ==== | ||
To start a desktop session or window manager, one currently has to do this manually | To start a desktop session or window manager, one currently has to do this manually because servers still have hard-coded paths to <code>/usr/share/xsessions</code> to look for <code>.desktop</code> 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 <code>$HOME/.vnc/xstartup</code> but the more secure | Some servers will automatically run <code>$HOME/.vnc/xstartup</code> but the more secure option is to write an executable script and run <code>vncserver -xstartup $pathToScript</code> | ||
An example script: | |||
An example script | |||
<source lang="bash"> | <source lang="bash"> | ||
#!/usr/bin/env bash | #!/usr/bin/env bash | ||
Line 33: | Line 31: | ||
<code>pathToScript</code> can also be a path to an executable like <code>${pkgs.icewm}/bin/icewm</code> | <code>pathToScript</code> can also be a path to an executable like <code>${pkgs.icewm}/bin/icewm</code> | ||
=== Tiger VNC === | === Tiger VNC === | ||
Line 41: | Line 36: | ||
Nixpkgs has a package but no service. | Nixpkgs has a package but no service. | ||
The server component can be started using the <code>vncserver</code> command. | The server component can be started using the <code>vncserver</code> command. | ||
To connect use the <code>vncviewer</code> command. | To connect, use the <code>vncviewer</code> command. | ||
=== x2go === | === x2go === | ||
Line 47: | Line 42: | ||
X2go client is packaged in nixos as <code>x2goclient</code>. | X2go client is packaged in nixos as <code>x2goclient</code>. | ||
The server is installed by | The server is installed by adding the following line:<br/> | ||
<code>services.x2goserver.enable = true;</code><br> | <code>services.x2goserver.enable = true;</code><br/> | ||
to /etc/nixos/configuration.nix. | to /etc/nixos/configuration.nix. | ||
Line 67: | Line 62: | ||
(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. | |||
<code>freerdp</code> or <code>remmina</code> can be used on the client side. | <code>freerdp</code> or <code>remmina</code> can be used on the client side. | ||
Line 73: | Line 68: | ||
=== Guacamole === | === Guacamole === | ||
Guacamole-server and guacamole-client are in nixpkgs. Some details are in the [https://github.com/NixOS/nixpkgs/issues/17879 package request]. | |||
https://github.com/NixOS/nixpkgs/issues/17879 | |||
=== Meshcentral === | === 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: | |||
<code>services.meshcentral.enable = true;</code> | <code>services.meshcentral.enable = true;</code> | ||
( | However, the agent (client) is not available. ([https://github.com/NixOS/nixpkgs/issues/167527 Request]) | ||
https://github.com/NixOS/nixpkgs/issues/167527 |
Revision as of 13:50, 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 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.
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)
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
Guacamole-server and guacamole-client are in nixpkgs. Some details are in the package request.
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)