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 different configuration options either by CLI or by configuration file.
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 there is a bug where 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.
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 options is to be explicit.
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>


Write an executable script and run <code>vncserver -xstartup $pathToScript</code>
An example script:
 
An example script can be
<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 putting the following line:<br>
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])


''Notice:'' 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/?utm_source=reddit&utm_medium=web2x&context=3 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.
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 ===


Not yet added to nixpkgs
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.
Meshcentral server has been added, and can be used with:
It can be added with:


<code>services.meshcentral.enable = true;</code>
<code>services.meshcentral.enable = true;</code>


(Meshcentral Server)[https://nixos.org/manual/nixos/unstable/options.html#opt-services.meshcentral.enable]
However, the agent (client) is not available. ([https://github.com/NixOS/nixpkgs/issues/167527 Request])
 
however the agent is not yet added so you can't deploy clients i nixos. yet.
https://github.com/NixOS/nixpkgs/issues/167527