Source: https://www.nomachine.com/DT04O00139
Timestamp: 2019-04-26 09:04:21+00:00

Document:
Welcome to the NoMachine Terminal Server - Installation and Configuration Guide v. 6.
What is NoMachine Terminal Server for?
NoMachine Terminal Server is a standalone server that provides unlimited concurrent virtual desktops running on its host. Designed to offer individual instances of the remote desktop (terminal services), it provides users with their own separate desktop environment. With Terminal Server each user has his/her own desktop or application, and can store, manage files inside the session and even share his/her own resources with another user.
Available for Linux, the Terminal Server accepts connections via a browser (thanks to its built-in web server) or via NoMachine client.
Additionally, it can also be federated under a Cloud Server. This solution centralizes access to multiple NoMachine servers distributed across a LAN or WAN environment.
The NoMachine Terminal Server server package includes the NoMachine GUI which provides the graphical interface (Server preferences) for administering the server and its services. This GUI acts also as a client for running sessions and connecting to remote desktops.
Installation provides a fully operative NoMachine server with a default configuration suitable for the majority of environments. All the necessary services are automatically started.
NoMachine Terminal Server is a single server (standalone server), to all effects. Aavailable for Linux only, it supports unlimited concurrent virtual desktops. A virtual desktop is an individual instance of the remote desktop. Sharing of a virtual desktop is also supported. The number of users is not limited.
NoMachine Terminal Server can be also federated under a Cloud Server v. 6 which provides a single point of access to multiple server subsystems. In this case, it's possible configuring the Terminal Server to not accept direct connections. For more specific instructions about federating the Terminal Server, refer to the Cloud Server administrative's guide.
is the base directory where the NoMachine binaries and libraries are installed.
By default, BaseDirectory is: /usr.
NoMachine server and node programs have a command line interface to execute operations.
You need to be a privileged system user to access all these functionalities. These commands can be run from an xterm or similar using the sudo utility or as root.
The 'nxserver --help' and 'nxnode --help' display the list of all the available commands and options and their description.
Our goal is to provide comprehensive and clear documentation for all NoMachine products. If you would like to send us your comments and suggestions, you can use the contact tool available at https://www.nomachine.com/contact-request, selecting Web Quality Feedback as your option.
Connections via web and by NoMachine clients are supported. Although compatibility with clients v. 4 and 5 is preserved, it's advisable to upgrade client installations to the same version 6 of the Terminal Server. NoMachine v. 6 is not compatible with the legacy NX version 3.5.0 (no longer supported since December 2016). Note also that when the Terminal Server works as a federated server, NoMachine Cloud Server v. 6 requires a client v. 6.
You can install, update and uninstall using the graphical package manager of your Linux distribution or from command line by running commands from an xterm or similar with the sudo utility, or as root user if you don't have sudo installed. Instructions below refer to installation by command line.
If you own a customer license we recommend you download the package from your Customer Area: https://www.nomachine.com/support#login.
The update procedure for server and node installations requires all NoMachine services to be stopped in order to correctly replace libraries and binaries. This implies that the Terminal Server is not accessible to users during the update procedure. Current sessions will be terminated, users will be able to connect again later.
You can update your installation from our repositories. Just run the NoMachine GUI from your Programs Menu and access the 'Settings' panel and click on 'Server preferences'. Go to the 'Updates' GUI and click on the 'Check now' button.
NoMachine has the automatic check for updates enabled: it will check by default our repositories every two days to verify if updates are available. In this case, the server will prompt a dialog informing that a new version is available but it will never automatically update the current installation.
Checking for updates can be disabled from that dialog by selecting the 'Don't ask again for this version' option or in the Updates panel by unchecking the 'Automatically check for updates' option.
Detailed instructions for configuring the Automatic Updates are available in the Documents section on the NoMachine web site: https://www.nomachine.com/all-documents .
Note: Due to heavy changes between versions 5 and 6, automatic updates are disabled: it's therefore necessary to upgrade NoMachine Terminal Server v. 5 by manually installing packages (see below).
Alternatively, download the latest available package from the NoMachine web site and click on the executable file to launch Setup. As for the installation, Setup will guide you through all steps necessary for updating your installation.
If you want to install to default location, namely /usr/NX/, ensure that package is placed there.
includes a 30-days license which is automatically activated during the installation. No further action is necessary.
include a temporary (30-days) node.lic and server.lic files for evaluation.
Evaluation license files have to be replaced with the customer's license files acquired from NoMachine. This can be done via the NoMachine server GUI in the 'Updates' panel: click on the server.lic and node.lic links to open their license panel and replace the license.
You can find a Guide for GUI usage in the Documents section on the NoMachine web site: https://www.nomachine.com/all-documents. Look for the keyword 'license' to find out in the knowledge base, section 'Articles' how to activate licenses manually: https://www.nomachine.com/knowledge-base.
First of all, ensure that the user has a system account on the Terminal Server host: you can create it by using system tools or by using nxserver commands. Empty password is not supported.
Once installation is complete, Terminal Server is ready to go.
Where SERVER is either the name or IP address of the host you want to reach.
In the login form, the end-user has to provide username and password of his/her system account on the Terminal Server host and connect.
I Auto-reconnection is supported: when the connection is lost for whatever reason (including when the browser's computer has entered sleep mode), the NoMachine web application will automatically try to reconnect for as long as the user keeps the web page open. If reconnecting is not possible, then the user will have to reconnect manually.
II IPv6 is supported: specify the IP address of the server host in IPv6 format (e.g. 2001:0:5ef5:79fb:30c6:1516:3ca1:5695) if you want to use it instead of IPv4.
From a client device, where you have already installed a NoMachine package type or the Enterprise Client, run the NoMachine GUI from the programs or applications menu. A wizard will take you through the steps necessary to set-up your first connection, just click on 'Create a new connection'. If you prefer to skip the wizard, click on 'Continue'.
The fastest way to create a new connection is to write the name or IP of the NoMachine host you want to connect to in the text field and click on the 'Press enter to create a new connection' link. This method will use the default NX protocol on port 4000.
Alternatively, you can click on the 'New' icon next to the white text field to configure the session in more detail.
I Auto-reconnection is supported: when the connection is lost for whatever reason (including when the client host has entered sleep mode), the client will automatically try to reconnect for as long as the user keeps the GUI open. If reconnecting is not possible, then the user will have to reconnect manually.
webplayer Only users connected via browser can choose to save their access credentials. They are stored in the browser's cookie, given that the user's browser has cookies enabled.
both All users, regardless if connected via NoMachine client or via web, can store their credentials.
none Users cannot save their username and password. They will be requested to provide their log-in credentials at each connection.
The configuration file for the web player program (which provides the graphical front-end) and the web client program (which manages web sessions) is server.cfg, located in the BaseDirectory/NX/etc directory on Linux: /usr/NX/etc/server.cfg.
Name is a label that can be displayed as an alternative to show hostname of the server.
Host is IP or hostname of the NoMachine server host.
Protocol and Port indicates protocol and port that web player will use to connect to the NoMachine server.
By default when users connect via web, they will use the NX protocol on port 4000. Supported protocols are NX and SSH with system login.
NoMachine uses by default port 22 for SSH protocol on Linux. The default port for NX protocol is 4000. In order to change the port for NX protocol, change the port for the nxd service and restart it. See the paragraph 'Connecting by NX Protocol'. To change the port for connections by SSH it's necessary to modify the listen port for the SSH server on the system.
from the Server preferences GUI -> Server preferences -> Network services panel. From the NoMachine GUI you can also change the port where the web server will be listening (by default 4080 and 4443 for secure connections).
From command line it's possible to do the following.
NoMachine Terminal Server is designed to provide a fully integrated service to deploy sessions on the web which doesn't require additional software to be installed or manual configuration. The minimal Apache web server, nxhtd, provides the necessary modules and is pre-configured to work with the web player application.
However, it is possible to run the web player application with an alternative Apache web server. Look for detailed instructions in our Knowledge Base, section Articles, by searching for the 'Apache' keyword: https://www.nomachine.com/knowledge-base.
The implementation of WebRTC support in browser-based remote desktop sessions has inititally been released as beta and must be enabled explicitly by the administrator by editing the server.cfg file.
With the help of a STUN/TURN server for negotiating NAT traversal, peer-to-peer WebRTC communication can be established also when the web session has to be run behind a NAT.
and provide relevant information to contact a STUN or TURN server. In this last case change Section name to "TURN".
Specific articles can be found in the Knowledge Base, https://www.nomachine.com/knowledge-base.
In the case of web sessions session data is streamed (by default) in video frames compressed and decompressed by using the MJPEG lossy algorithm, which is the video-format widely supported by browsers.
Other video codecs like VP8 and H.264, require a browser which supports WebRTC and HTML5.
(*) Server packages for customers provide the H.264 libraries necessary to support the SW H.264 encoding. Packages for evaluation, instead, don't provide such libraries. In this case it's possible to add them by installing the NoMachine AVC pack or by compiling them manually.
Optimizations can be done in two ways: (I) by adjusting display settings in the session or (II) by enabling WebRTC.
To access NoMachine display settings, open the NoMachine menu inside the web session: press ctrl+alt+0 or click on the page peel in the upper right corner of the window to open it. Then click on the 'Display' button and finally on 'Display settings'. From this panel you can do the following.
Increasing the quality will mean to apply a minor compression ratio, the image will be clearer, but more bandwidth will be used.
This will anchor the display quality to the fixed value specified in the Display quality slider, making it independent from the current network congestion. This is not recommended when there is a very limited bandwidth.
Default settings within the encoding will work to refine the image progressively to the target quality (as specified in the Display quality slider) starting from a lower quality version of the image during moments of inactivity of the desktop. Disabling this refinement sends the image directly with target quality. Not recommended when there is limited bandwidth.
NoMachine web sessions use by default the classic web media exchange protocol for the two-way browser/web server communication. WebRTC (Real-Time Web Communication) is also supported and can be enabled as explained in the next paragraph.
Enabling WebRTC allows to use the H.264 video streaming (when possible) or VP8 which optimize users'experience with multimedia applications and contents.
You may verify which encoding method is in use from the NoMachine menu inside the session: press ctrl+alt+0 or click on the page peel in the upper right corner of the window to open it. Then click on the 'Display' button and finally on 'Display settings'. The codec actually on use is reported at the bottom left of the menu.
Sessions run by NoMachine client use a combination of video and image encoding based on standard codecs and a number of techniques developed by NoMachine. Frames are encoded into a video stream optimized by means of a compression and decompression algorithm of real-time image and audio data. VP8, H.264 and MJPEG encoding are supported.
In general VP8 and H.264 are suitable for all situations, while MJPEG can be an alternative when the end-user's computer is less powerful and the user is experiencing slow responsiveness.
In the GUI in the Server Performance panel.
The X11 vector graphics mode (previously called 'lightweight mode') is enabled by default for (i) virtual desktops and (ii) custom sessions in floating window mode. This mode is mainly a set of NoMachine techniques to compress and optimize the X11 protocol (by applying the same alghoritms available with the NX compression protocol v. 3). These compression techniques are applied to all non-video contents like textual elements, while multimedia contents are encoded in a video stream (VP8 or H.264).
The X11 vector graphics mode is useful for avoiding loss of image quality and in general is the best option when working with traditional GUIs or a large amount of text. However it's not suggested for multimedia contents or applications with many graphical effects.
It also may help to reduce bandwidth usage, decrease the HW requirements on client and server (expensive video encoding/decoding operations are applied only to multimedia contents), increase responsiveness on slow link and end-users' clients without hardware accelerated video encoding/decoding capabilities.
I In the case of slow bandwidth, decreasing the quality level of images could help but if you need to have a perfect image without quality loss, you have to increase the display quality instead. It's also suggested to disable multi-pass encoding to avoid the 'out of focus' effect: multi-pass is an encoding technique which uses multiple passes to reach progressively the best definition of the image.
II Quality level and multi-pass encoding can be tuned from the NoMachine menu inside the session in the Display -> Change settings panel. (Ctrl+alt+0 or click on the right upper corner of the window to open the NoMachine menu).
In NoMachine virtual desktops and custom sessions, OpenGL rendering is done by default by software components. This means that rendering tasks are accomplished by CPU and not offloaded onto GPU. Such operations could be resource-demanding, especially in the case of 3D desktop graphics effects, and make the user interface look slow.
A possible alternative is to configure the NoMachine server to use the VirtualGL libraries (included in the NoMachine package) and therefore activate support for HW accelerated OpenGL applications. This allows OpenGL applications, namely 3D applications, to use server side graphics hardware.
The configuration file for the nxserver and nxweplayer/nxwebclient programs is server.cfg. The configuration file for the nxnode program is node.cfg.
NoMachine Terminal Server comes with a default configuration that is sufficient to grant a working setup for the majority of environments. NoMachine administrators can tune their installation at any moment and according to their specific needs by setting the related configuration keys. In some cases a restart of all NoMachine services will be required.
NoMachine configuration files are text files made up of a number of key-value pairs. All the configuration files can be edited manually by a text editor, e.g. 'vi'.
Be sure to uncomment the configuration key (i.e., remove the '#' pre-pended to the key) to set a value different from the default.
When a configuration key supports an on/off status, set value to '0' to disable it and to '1' to enable it.
Changes will be effective with the next new connection without the need to restart the server if not otherwise specified.
Installation and upgrade procedures take care of configuring and starting all the necessary services to make NoMachine Terminal Server ready to accept and serve users' requests for virtual desktops and custom sessions. The necessary services are configured to be restarted at each reboot of the host machine.
all NoMachine services can be stopped by the Server status GUI ('Shutdown the server'). When doing so, you will be asked if services must be started at the next reboot or not. You can restart services also from the Server status GUI ('Start the server').
in the Server status -> Server preferences -> Network services GUI. You can choose there also the start mode: if the service must be started automatically at the next boot or not.
Commands above operate on the configuration keys listed below. You can change them manually in the server configuration.
For each session, NoMachine uses ports that are used only locally on the server host and network ports.
Some ports are mandatory and must be free, e.g. the session display number and the connection port. Other ports are used for services that can be disabled (e.g. USB forwarding, UDP communication).
4000 TCP port for the NoMachine Network service (nxd) and connections via NX protocol. This port must be open in the firewall and mapped to the external IP of the server host. Set NXPort in server.cfg and restart the nxd service.
4011 - 4999 UDP port range. Set UDPPort in server.cfg to define a different range. UDP can be disabled on client side.
22 TCP port for connections via SSH protocol. This port must be open in the firewall and mapped to the external IP of the server host. Set a different port for the system SSH server and align value set for SSHDPort in server.cfg. Then restart the NoMachine server.
4080 and 4443 HTTP and HTTPS port for web connections. These ports must be open in the firewall and mapped to the external IP of the server host. Change 'Listen' directives in htd.cfg and restart the nxhtd service.
In the Server status -> Server preferences -> Server options GUI. When the icon is hidden, notification messages will still be displayed when users are connecting.
This setting is ruled by the DisplayMonitorIcon key in the node configuration file. If you change them manually by editing the file, you then need to restart the server to make changes effective.
If the displaying of monitor notification messages is disabled, the desktop owner will be unable to accept connection requests by other users. Configure trusted users if you need to permit the connection without explicit authorization.
NoMachine provides an instant messaging tool, named whiteboard which allows drawing, the sharing of files with connected users and fast-track access to file transfer. To access it, connect to the user's desktop and from the Monitor (!M icon) in your system tray click on 'Show the whiteboard'. Note that if multiple users are connected at the same time to the same session, they will all see the message.
As an alternative, it's possible to issue a dialog in the connected sessions to show a custom message by sending it from command line.
nxserver --broadcast "Your message goes here"
nxserver --message "Your message goes here"
NodeFirstLoginGreeting "Welcome to your first NX session"
NodeLoginGreeting "Welcome to your NoMachine session"
connections by default use the NX protocol which is its own protocol for secure communication over the network. Encryption in the NX protocol is implemented using OpenSSL TLS/SSL, based on ECDHE-RSA-AES128-GCM-SHA256 as the default cipher suite. ECDHE-RSA-AES128-GCM-SHA256 is an AES (Advanced Encryption Standard) block cipher with 128 bits key in GCM (Galois/Counter Mode). RC4 (ECDHE-RSA-RC4-SHA cipher suite) is used as a backward compatibility when connecting from or to version 4.0.
When using the NX protocol, NX data can travel on TCP and UDP streams, even at the same time. The client and server can decide dynamically what transport to use, based on the type of data and the network conditions. Client and server negotiate the UDP transport at session startup, after having negotiated the main TCP link. UDP uses symmetric Blowfish encryption, with key negotiated on the secure TCP link. UDP is presently not available when using the SSH tunneling, to ensure that all data goes through the same SSH link, as it was in legacy version 3. UDP protocol can be also disabled.
NoMachine Terminal Server also provides tunneling of connections using SSH and full integration with any authentication backend supported by the host SSH server.
This key is automatically populated during the installation or the update of the package. It is possible to exclude any of the available protocols to force users to connect by the desired protocol.
I If your server supports SSH but it still reports that SSH is not available, check the ClientConnectionMethods key and ensure that the SSH values is set. Then restart the server.
II Removing 'HTTP' from the ClientConnectionMethods key will disable the starting of the NoMachine HTTP server and prevent connections via web.
By default all methods are accepted. They can be restricted by providing a comma-separated list of values, they will indicate which authentication method is permitted.
NX-password to allow password authentication.
NX-private-key to allow key-based authentication.
NX-kerberos to allow Kerberos ticket-based authentication.
SSH-system to allow all methods supported for the system login. SSH authentication methods for the system login have to be set on the system for example in the PAM configuration.
Users can select the authentication method in their connection settings from the NoMachine GUI in the Advanced panel for the NX protocol and SSH protocol settings respectively.
or changed later by modifying the connection settings (right mouse click on the connection icon in the client GUI to edit it).
The default setting of NoMachine is to run connections via the NX protocol on port 4000. On the server side, the Network Server, nxd, is listening on port 4000. It's mandatory that this port is open between client and server to allow connections by the NX protocol.
If you change the listen port for nxd, connecting users will have to specify the new value in their connection settings in the client GUI.
Users can disable UDP in their connection settings from the NoMachine GUI in the Advanced panel for the NX protocol settings.
The default port used for the SSH protocol is 22 on Linux. On Linux NoMachine relies on the SSH server installed on the system. If your SSHD is configured to listen on a port different from 22 you need to align the NoMachine server configuration accordingly. Connecting users will have to specify such value in their connection settings in the client GUI.
Automatic discovery of the NoMachine Terminal Server host is possible only when the server and the user's machine are on the same LAN. When the user connects over the internet or from a different network, it's mandatory to know the public (or external) IP of the Terminal Server.
When the server is behind a firewall, you have to configure the router to forward external port to the nxd service (to use the NX connection protocol), to the SSH server (to use the SSH protocol) and to the nxhtd service (to connect by the web). By default the required ports are TCP ports: 4000 for NX, 4080 and 4443 for HTTP/HTTPS and UDP ports in the 4011-4999 range. Note that users will have to specify the external port in their connection settings in the client GUI.
If the router on the server side supports UPnP/NAT-PMP, you can let NoMachine try to enable port forwarding in the router automatically. External ports will be selected randomly from the 20000 - 30000 range. Also in this case users will have to specify the external port in their connection settings in the client GUI.
For connections by NX protocol, at session startup NoMachine will also try to map UDP ports by using UPnP.
NXUPnPPort ""; SSHDUPnPPort "" and HTTPUPnPPort ""
via the Server preferences -> Network services GUI by selecting the service and enter its settings (click on 'Configure'). Then check the Gateway port option.
Authentication is requested to the system, user's connection is allowed once the user has been authenticated. PAM, LDAP, AD are supported.
User access based on NX Password db EnablePasswordDB 1 Authentication is verified against the NX password DB. Separate the NoMachine authentication from the system authentication. The user's account must exist on the system.
Allow connections from all authenticated users (default) EnableUserDB 0 Every time a new account is created via NoMachine or an already existing system user runs the session for the first time, the user is added to the NoMachine NX Users DB, even when the use of NX Users DB is disabled. These users cannot be disabled and are always allowed to connect if they authenticate successfully.
Enable or disable user access to NoMachine EnableUserDB 1 By default all users are enabled to access the NoMachine system once authenticated. With this configuration a user can be disabled and re-enabled at any moment from command line.
You can manage (create, delete and modify) user accounts by using tools provided by your Operating System or the NoMachine server commands as explained below.
The Terminal Server is able to handle two types of accounts: system accounts and NoMachine accounts. The latter can separate the system password from the NoMachine password.
I To assign a password different from system password to a system user, enable NoMachine Password DB ( EnablePasswordDB 1) in server.cfg.
III If this Terminal Server is federated under a Cloud Server, each user must have the same system account on the Cloud Server host and on this Terminal Server. Password can be different.
i)The user has run at least one session or has been added to NoMachine dbs by means of 'nxserver --useradd' command.
Note that 'nxserver --useradd USERNAME' adds the user to NoMachine dbs and automatically enables the user to log-in, while 'nxserver --userdel USERNAME' removes the user from NoMachine dbs and disables the user's ability to login by NoMachine.
Redirected to: IP/hostname of the server to which the user's connection is redirected (by means of the 'nxserver --redirect' command when supported).
Trusted for: it shows if the user is trusted.
Screen Sharing: it shows which user has the sharing of their physical screen disabled.
Access: it shows if the user is enabled or not to access the NoMachine system. This works in conjuction with the use of the NoMachine Users DB: when enabled (EnableUserDB 1 in the server configuration), it's possible to enable/disable user access to the whole NoMachine system.
Forwarded to: this field is applicable only when the server is a NoMachine Cloud Server, so it's always empty in case of Terminal Server.
This will not remove the system account.
NoMachine Terminal Server supports the creation of groups of users with the possibility to set attributes (e.g. the trusted flag) to the group or create profiles rules which apply to all users belonging to the given group (e.g. disable the possibility to print and share disk).
The automatic generation of guest accounts is not enabled by default and must be activated via profile rules. If enabled, the server generates a new system account on demand when the user connects with the 'Login using a guest account' GUI option.
If this key is disabled, users will have the possibility to choose if log-in with their credentials or as a guest.
It is also possible to define a set of profile rules on a per-guest basis only. Such rules will not apply to other users.
to set the Group Identifier (GID) for NoMachine guest users. The specified GID must already exist on the system.
Guest users don't know their username and password and cannot therefore unlock the remote screen if screen locking it's enabled. Be sure to disable screen locking if you want to let guest users connect to the remote desktop.
By default when the connecting user is different from the owner of the virtual desktop, the desktop owner has to authorize the user for the connection.
It is possible to define in advance a number of trusted users who don't need the specific owner's permission to connect to virtual desktops un by a different user.
In order to create a list of trusted users, administrators should use the nxserver commands for creating and editing users. These commands provide the --trusted option to define if the user is trusted for connections to the virtual desktop or not.
Each session on the same server is uniquely identified by a session id (which can look like: B253864E822F5A235825F3AB8853AF00) and a display id (e.g.,1002).
Connected - when it's connected to the remote display.
Disconnected - this status is available only for virtual desktop sessions and custom sessions. A session is marked as disconnected when it's disconnected from the remote display. A disconnected session can be reconnected at any time even from a different machine (migration). While a session is disconnected, applications on the remote server stay running. Finished - the session has been closed in a clean way and all NoMachine processes have been shut-down smoothly.
Failed - any of the NoMachine processes has failed to start or it has been "un-cleanly" terminated.
Transitional statuses are Connecting, Disconnecting and Terminating.
physical-desktop Connect to the physical desktop of the Terminal Server host.
unix-xsession-default Run the default virtual desktop as set on the system.
shadow Connect to a virtual desktop session (desktop sharing/collaboration).
unix-console Run a virtual Unix console application.
unix-desktop Run a virtual custom application embedded into the player session window.
unix-application Run a virtual custom application.
It can be embedded into the client session window or be a floating window application depending on the user's choice: run or not the command in a virtual desktop.
unix-gnome Run a virtual GNOME desktop.
The ConnectPolicy key in the server configuration must have 'desktop=1' set.
unix-kde Run a virtual KDE desktop.
unix-xdm Run a virtual desktop through the X Desktop Manager.
unix-default Run a virtual session by using the default X client script on server.
unix-script Run a virtual session by using the X client script on server as specified by path.
windows Run a RDP session encapsulated in a virtual session.
vnc Run a VNC session encapsulated in a virtual session.
You can monitor sessions from command line tools. Below are the server commands to be run from xterm or console.
The number of active connections on the server corresponds to the number of sessions in status Connected. Session status is shown in the output of session history command.
Output of this last command in the case of a failed session can help to understand what went wrong.
You can reset the history backlog by running the following command.
< 0 Never delete data from NX session history.
0 Disable NX session history.
> 0 Keep data in session history for this amount of seconds.
Take SESSIONID or DISPLAYID from the output of the 'nxserver --list' command, they are the 'Session ID' and 'Display' column respectively. The same output shows also the user's name.
If the NoMachine display agent doesn't receive any input from the user in the given timeout, it will either disconnect or terminate the session. Termination of the session will be carried out if the session is not persistent or no X application is connected to the display. Otherwise the agent will disconnect the session so that the X applications will be left running.
Note that the DisplayServerExtraOptions key is only for virtual desktops or custom sessions with X11 vector graphics enabled (default).
a virtual desktop will terminate after ten minutes provided there is no activity.
You can set a limit for the number of virtual desktops provided that such limit does not exceed the number of connections allowed by the server license value (it's the 'Virtual Desktops' field in the server.lic file). NoMachine Terminal Server allows unlimited virtual desktops.
Limit the number of virtual desktops to three and keep alive a virtual desktop (inactive & disconnected) for one day. If a new virtual desktop is requested, the server will terminate the oldest virtual desktop in status disconnected to make room for the new session.
The automatic disconnection is a server configuration to rule the server behavior when the limit of users is exceeded and a new user is requesting to connect.
enabled (1): the server will automatically disconnect the user to make room for the new user.
disconnect itself. If no choice is made, the server will automatically disconnect this user and let the incoming user to connect.
The automatic disconnection applies when the maximum number of available connections to the desktops or the maximum number of available virtual desktops is exceeded.
In this way when the user closes the virtual desktop, the session is terminated instead of being disconnected. This server configuration key also accepts a list of comma-separated usernames and will be applied to the specified users. Non persistent sessions cannot be reconnected.
Pre-requisite to connect by NoMachine is that a desktop environment is installed on the system even if the host is headless or is not started in graphics mode.
During installation, NoMachine detects the default desktop environment set on the system and configures the node accordingly. Path and command to start the system desktop environment is defined in the node configuration file by the DefaultDesktopCommand key. The Terminal Server is able to detect GNOME, Unity, KDE and LXDE. If you have a different desktop environment, it's necessary to edit the DefaultDesktopCommand key accordingly.
If you want to let users choose between creating new KDE or GNOME virtual desktops (given that they are both installed) set desktop=1 in the ConnectPolicy key in the server configuration. With this key set, the server uses the following keys (in node.cfg) to start respectively KDE and GNOME virtual desktops: CommandStartKDE and CommandStartGnome.
RDP sessions are encapsulated inside a virtual desktop session and they use the RDP client. So, prerequisite is that this RDP client (by default rdesktop) is installed on the Terminal Server host, i.e. where the NoMachine RDP virtual desktop will be run.
Note that behaviour of RDP sessions is strictly related to features supported by the RDP client. For example, running a Windows application as a single application is possible only if the version of the RDP client supports it.
VNC sessions are encapsulated inside a virtual desktop session and they use the VNC client. So, prerequisite is that this VNC client (by default vncviewer) is installed on the Terminal Server host, i.e. where the NoMachine VNC virtual desktop will be run.
Note that behaviour of VNC sessions is strictly related to features supported by the VNC client.
The server configuration provides a number of keys that can be activated to execute a custom script upon a certain event. According to the event, a number of parameters can be specified for each script. In a similar way, a number of keys is present in the node configuration file to allow a custom script to be executed on a certain NoMachine node event. In both cases and according to the event, a number of parameters can be specified for each script.
(*) 'main session id' and 'main session type' parameters are available only when the user connects to an already running virtual desktop (session shadowing). They indicate respectively the id and type of the session to which the user is connected with his/her own session qualified by 'session id' and 'session type'.
Note that the order of parameters is relevant. For example, a custom script to be run on node event 'UserScriptBeforeSessionStart' should use the $2 variable to retrieve username and $4 to retrieve display.
Custom scripts must be executable. Custom scripts set-up in server.cfg are common to all the users who are accessing the server and are executed by the nxserver program. Since nxserver is running as the nx user, you have to grant this user the necessary permissions in order to execute the custom script.
Custom scripts set-up in node.cfg are executed by the nxnode program, which is run as the connected user. Place the script in a directory that is accessible by the node, i.e. accessible by the connected user(s).
By default if the execution of the scripts fails, the nxserver and nxnode will terminate. This means that the user's session will not start. You can override this behavior by forcing exit 0 inside the custom script and let the session start even if the custom script is failed.
If NoMachine Terminal Server is federated under a Cloud Server consider that custom scripts have to be placed in server.cfg or node.cfg file on the Terminal Server host, not on the Cloud Server.
By default users can connect to their virtual desktops and to virtual desktops owned by other users. When the desktop owner is different from the connecting user, he/she is always required to authorize the incoming request for connection. Authorization is not requested when the incoming user and the desktop owner are the same. This allows different users sharing the same instance of the virtual desktop and access all applications and resources interactively or in view-mode only. This feature is suitable for collaborative sessions and desktop sharing.
You can configure how users will connect to a desktop owned by another user from the Server preferences GUI -> Security panel. You can basically determine if users can connect or not without asking the desktop owner's permission and if users will be able to interact with the desktop. Allowing connections in interactive mode grants the user full access to the desktop resources and applications. View-only mode is suggested for example when making presentations or teaching a lesson.
besides using the graphical tools, you can configure the server by editing the server configuration file, uncommenting and setting a proper value for keys as illustrated in the following paragraphs.
I Configurations made from the GUI apply to connections to physical and virtual desktops. If you want to set a separate configuration for these desktops, you have to edit the server configuration manually.
II Rather than allow all users to connect without virtual desktop's owner authorization or click accept for every single user which would like to connect, it is possible to define in advance a number of trusted users who don't need the specific owner's permission.
III When the Terminal Server is federated under a Cloud Server, each user must have the same system account on the Terminal Server host and on the Cloud Server host. Password can be different.
NoMachine Terminal Server supports the screen blanking feature: when active, the local user will see a black screen on the physical monitor while somebody is connected from remote to the physical desktop. Operations made on the physical screen are not shown and the local user cannot interact with the desktop until the remote user logs-out. Control is given back to the local user once the remote user has logged off. Screen blanking is available for physical hosts, it is not supported on virtual machines since it has effect on the physical monitor.
or in the server configuration file.
The screen blanking feature can be used in conjunction with the automatic lock of the remote screen. Even if the user didn't lock the screen before disconnecting by NoMachine, as soon as the screen is unblanked, the system lock screen will be activated automatically to keep the remote desktop protected even when the computer is running unattended.
or in the server configuration file, server.cfg.
The option to manage the screen blanking from the server User Interface was named 'Lock the physical screen when somebody connects' and the server configuration key was: EnableScreenLock.
The possibility to automatically lock the remote screen when the user disconnects was not available.
This setting also disables the listing of other users' virtual sessions in the client GUI.
In this way, the connected user will access the virtual desktop in view-only mode.
Users trusted for virtual desktops, and by default also system administrators and NoMachine administrators, will be able to connect without the need for the desktop owner's approval.
Settings above apply to all users.
By default, connections to the physical desktop are enabled and require the desktop owner's permissions (if the connecting user is different from the desktop owner).
Users trusted for physical desktop, system administrators and NoMachine administrators will be able to connect without the need for the desktop owner's approval.
In this way, the connected user will access the physical desktop in view-only mode.
System administrators, NoMachine administrators, trusted users and the desktop owner will be still able to connect without authorization.
A privileged system user has to be defined by means of system tools.
By default, the owner of the physical desktop, either sitting in front of the computer or connected to the physical desktop via NoMachine, has the possibility to switch off/on the sharing of the screen at any moment.
This can be done via the NoMachine Monitor (click on the !M icon in the system tray to open it) and the 'Accepting connection is enabled/disabled' item in the menu.
When 'Accepting connection' is disabled, nobody can connect to that desktop by NoMachine. This setting lasts until the desktop owner changes it again. It persists also when the user is physically logged out or closed the NoMachine connection. It's therefore strongly advisable to be very careful when disabling accepting connections from remote, since it will be no longer possible to reconnect to the desktop via NoMachine once the current session is closed.
The Terminal Server permits users to access and share their devices and resources from locale to remote and vice-versa. Disks, printers, USB devices and more can be connected inside the session to easily access them from both client and server side. At present device sharing is not available with web sessions and requires to connect by NoMachine client.
Two-way copy and paste is fully supported. Web sessions implements the NoMachine virtual clipboard provides for copying text from/to the session running in the browser and the local computer.
Download/upload files from the session to the local computer and vice-versa is also fully supported in client and web sessions, as well as drag and drop of a file from remote to locale and from locale to remote.
By default device sharing, copy&paste and file transfer are always permitted. You can however completely disable any of these services or disable it only partially, for example to prevent users from sharing their local printer in the NoMachine session but permitting them to use the remote printer.
NoMachine implements a self-contained infrastructure for making available physical and logical devices over the network from local to remote or vice-versa.
The NoMachine infrastructure for device sharing ensures that all services work out of the box without the need for any additional change or configuration. It is possible to connect disks, printers, USB devices, network port and smartcards.
Connecting devices is supported only by NoMachine client (web sessions don't support that). Devices can be connected through the NoMachine menu within the session (ctrl+alt+0 to open it). Connected devices can be disconnected during the life of the session and reconnected later. If option 'Export this deviceName at session startup' is checked in the menu panel, this device is automatically reconnected at the next session start-up.
by editing the corresponding keys. Manual configuration also allows the service to be limited to one-way, for example forbid to connect a local printer to remote. The next paragraphs deal with manual node configurations in detail.
Disks Local and remote disks can be connected and disconnected during the life of the session and navigated by file browsing. A disk connected as 'Public' is available to all users accessing that desktop. A private disk is available only to the user who connected it.
Administrators can configure paths on the server where public and private disks will be mounted as well as specifying which disks on the server can be made available to users. This service uses FUSE, installed on the Linux system by default. The nxfs and nxfsserver programs are used to mount disks.
Printers Local and remote printers can be connected at any time (bi-directional printing). A connected printer is listed among the available printers when printing a document or similar. A printer can be connected to be 'Public', i.e. available to all users connected to that desktop, or private, for a specific user. It can be also configured to be the default printer. This services uses the CUPS infrastructure present on the Linux system. A printer can be exported to the server only if the connected user is in the lpadmin group.
USB devices USB devices such as disks, pendrives, webcam etc... are forwarded through the network. For example, when a USB device is forwarded from locale (where the player is running) to remote, it becomes available on the remote side only. This service is based only on the NoMachine USB Server (nxusbd) and drivers (the nxusb.ko kernel module for Linux) and doesn't require external tools.
Network ports Service ports (such as Samba, CUPS, FTP, SSH, telnet and others) can be made available from local to remote and vice-versa via a virtual network interface. This service relies on a NoMachine tool plus a standard driver.
Smart Cards A smartcard reader can be forwarded from client to server side and makes smartcard authentication available within the session. The server host must support authentication via smartcard. Support for authentication with smart card has been set-up by relying on the Public Key Infrastructure (PKI) and requires an OpenSC compatible smart card. It can be integrated with Kerberos ticket authentication and ticket forwarding.
NoMachine allows access to local and remote file systems from within the session through the SSHFS file-sharing protocol and by means of FUSE, a technology to implement a fully functional filesystem in a userspace program.
Connected folders and disks can be disconnected during the life of the session or left as they are.
By default, all disks from the server are available to be connected to the end-user's machine. However you can specify a set of disks and folders by editing a proper value for the DiskSharingList key in the node configuration file. The default value is: all. Alternatively, you can specify a list of comma-separated directories. Note that $(HOME) and $(USER) are accepted values.
Disks from the end-user's machine can be connected on the server in 'Public' or 'Private' mode.
By default public disks are exported from player to "$(PUBLIC)" directory on the server, where $(PUBLIC) is: /media on Linux.
You can specify a different path by un-commenting and editing the DiskSharingPublicBasePath key in the node configuration file.
Note that $(USER) is an accepted value that can be also concatenated to specify the path to a directory, for example "/tmp/$(USER)".
The target directory must exist on the system!
client The filesystem on the client can be connected to server side and accessed from the session.
server The filesystem on the server can be connected to the end-user's machine and accessed through the whole life of the session.
both Client and server filesystem can be connected to remote and local sides respectively.
none Neither client or server filesystem can be connected.
The printers sharing infrastructure integrates client-side printers with the server-side printing subsystem and vice-versa. Printers available on the client machine can be shared and used within the session as well as printers on the server side which can be made available on the end-user's machine.
Connected printers can be disconnected during the life of the session or left as they are. In this case, they are automatically shared at the next session start-up.
On Linux this service uses the CUPS infrastructure present on the system. With CUPS 1.4 or later, to ensure that users are able to connect a printer from locale to their NoMachine session on Linux , it's necessary that the user already belongs to the CUPS System Group on the NoMachine server host. That's because, to add a printer to the CUPS system, the 'lpadmin' command line tool has to be executed by a user who belongs to the CUPS System Group, which can be for example 'lpadmin' on Ubuntu, 'sys' on Fedora, RHEL and CentOS distributions.
client Printers on the client can be connected to server side and made available within the session.
server Printers on the server can be connected to the end-user's machine.
both Client and server printers can be connected to remote and local sides respectively.
none Neither client or server printers can be connected.
This service creates a USB tunnel between client and server to forward devices over the network such as hard disk, web cams, barcode readers, and pen drives from local to remote desktops and vice-versa.
client USB devices on the client can be forwarded to server side and made available within the session.
server USB devices on the server can be connected to the end-user's machine.
both Client and server USB devices can be connected to remote and local sides respectively.
none Neither client or server USB devices can be connected.
NoMachine can create virtual network interfaces and establish a bridge between local and remote sides or vice-versa to provide transparent access to network resources.
This service allows access to any of the default network servers like Samba, CUPS, FTP, SSH and Telnet or any other type, for example a MySQL server.
Connecting a Samba server allows access to resources on that server host via the SMB/CIFS protocol. Connecting a local CUPS server to the remote side allows mounting of printers (local to the user) on that remote CUPS subsystem so that files can be printed on the remote side via the IPP protocol.
If you have a Linux or Mac machine you can add the locale CUPS server via the player toolbar. Choose to add a local server and select CUPS. In this way all printers that are available on your side will be available also on the server and you can print all your documents via the native CUPS (IPP) protocol.
If the remote host has a Samba server, you can add it via the player toolbar. Choose to add a remote server and select Samba as server type. Once that Samba server is added, the remote host shows up in your local Network Neighborhood. You can then connect to remote folders via SMB/CIFS protocol as if that host was in your local network.
You can add your local HTTP server via the player toolbar and make it available on the remote host where your session is running. In this way you can develop and test your web application directly inside the session, without the need for sharing or moving files from remote to local.
You can choose to add a remote server via the player toolbar. Select 'Custom' and specify MySQL and the port for the MySQL server, by default 3306. Once done, you can connect to that MySQL server via the MySQL client installed on your PC.
To forbid network server sharing it is necessary you uncomment and set a proper value for the EnableNetworkSharing key in the node configuration file: client Network servers on client side can be connected and made available within the session.
server Network server on the server side can be connected and made available on the end-user's machine.
both Network servers from client and server side can be connected to remote and local sides respectively.
none Neither client or server side network servers can be connected.
When the smartcard reader plugged into the enduser's host is forwarded to the server host, the smartcard authentication is made available inside the session. It can be integrated on with Kerberos Ticket system for example for implementing single sign-on (SSO).
You can enable or disable support for smarcard forwarding by uncommenting and setting the EnableSmartcardSharing key in the node configuration to 1 or 0 respectively.
By default users can copy and paste from locale to the session and vice-versa.
You can configure the server to limit such operations by setting proper values in the configuration file as explained below.
client Content copied on the user's side can be pasted inside the session.
server Content copied inside the session can be pasted on the user's side.
none No copy and paste operations are allowed.
both Two-way copy and paste operations are allowed.
client Files can be transferred from client machine to the server.
server Files can be sent from the server to clients.
both Client and server files can be transferred on remote and locale respectively.
none Neither client or server files can be transferred.
On Linux, NoMachine audio framework is integrated with PulseAudio sound server. If PulseAudio is not available on the system, NoMachine is able to use ALSA (Advanced Linux Sound Architecture). This is automatically managed by the NoMachine server so that multimedia support can work out of the box without the need for any configuration. If both PulseAudio and Alsa are available, the administrator might want to configure the node to use one or the other.
NoMachine can record in a video all activities made inside the session or on the desktop. To start the recording of the session, users should open the NoMachine menu inside the session (ctrl+alt+0) and click on the 'Recording' button icon to access the Recording panel. From this panel it's possible to open the recording bar, change audio and video quality and open the recording directory to access all recorded files. Session recording is not available with sessions on the web.
To register activities made on the desktop, start the recording from the !M icon menu in the system tray of the Terminal Server host and show the Recording bar from there. Desktop activities can be registered on the physical desktop without the need to be connected by NoMachine.
Recorded files are saved by default in WebM format and can be played back directly with NoMachine or any other player supporting that format. Video streams can be encoded only with VP8 or H.264 when supported. Recorded files are saved by default on the user's device in the NoMachine directory under the 'Documents' directory.
I Rules are on a per-system basis, if not otherwise specified. It can also be on a per-user, per group or a per-guest basis, when applicable.
II Rules are grouped into classes. The available classes are: session, service and feature. Each class has a number of class types.
III For each rule it is necessary to define the following items: class, class type, value and eventually option. Option indicates on which basis the rule has to be applied (e.g. per-system, per-user etc...).
IV Rules concerning the server behaviour (enable/disable use of profiles and automatic generation of guest accounts) can be applied only on a per-system basis.
V Rules set for guest accounts apply to all guest users and do not affect other users. Support for the automatic generation of guest accounts must be enabled in profiles.
Until the administrator defines a set of rules, the server relies on its default profile, which allows all the supported functionalities, except for automatic generation of guest accounts that must be enabled explicitly.
The default profile of the server is based on the list of resources available on that host. Setting profile rules is like creating a subset of available resources. When the user logs in to the system, NoMachine Server verifies what is allowed for that user by comparing available resources and the set of profile rules.
A rule to allow or deny a class type (e.g. forbid a session type) or set a behavior (e.g. limit the bandwidth usage) has to be explicitly set, otherwise the server continues to rely on its default behaviour.
If you need, for example, to deny all features except one, you can deny all features for the whole system and add a rule to allow only this feature.
For each class there is a number of available types, which are listed in detail in the following paragraphs.
--system, set the rule on a per-server basis. The rule will be applied to the whole NoMachine system and to every user accessing it. This is the default and can be omitted.
--user, USERNAME set the rule on a per-user basis (USERNAME). The rule will be applied to the specified user only.
--guest, the rule will be applied to all guest users and will not affect other users.
--group GROUP, set the rule for the specified GROUP.
To modify an existing rule, just re-add the same rule by specifying the new value in the --value option.
Rules for session types: unix-gnome and unix-kde works only if server has the ConnectPolicy key enabled with the desktop=1 option set. With this setting, users are entitled to choose between starting a GNOME or a KDE desktop (if both are available on the system). Otherwise the default desktop environment set on the system is started.
VALUE is a positive integer.
It cannot be higher than the maximum number of connections or virtual desktops specified in the license file (server.lic and/or node.lic) in the 'Connections' and 'Virtual Desktops' field respectively.
Setting it to 0 means that no limits will be applied, except those coming with the license.
--system to set the rule on a per-server basis. The rule will be applied to the whole NoMachine system and to every user accessing it. This is the default and can be omitted.
--user USERNAME to set the rule on a per-user basis (USERNAME). The rule will be applied to the specified user only.
--guest to apply the rule to all guest users. This will not affect other users.
The connections-limit counter counts all types of active connections: connections and rconnections to virtual desktops and custom sessions and connections to physical desktop. Connections to physical desktop are available only for special users: system administrators, NoMachine administrators and trusted users.
When the user connects, the connections-limit counter is always increased. This counter is decreased when the user disconnects.
The virtual-desktops-limit counter counts only new virtual desktops and new custom sessions.
The virtual-desktops-limit counter is increased only when the user creates a new virtual desktop or a new custom session. It's decreased when the user terminates the virtual desktop or the custom session, i.e. it's not decresead when the session is just disconnected.
Allow user nxtest01 to have only one active connection.
Allow each users of group 'testers' to have maximum 2 virtual desktops at the same time.
Limit to two both the maximum number of concurrent connections and of virtual desktops for all users (option --system can be omitted).
As an alternative to profile rules, it's possile to use the following keys in the server configuration file: ConnectionsLimit and ConnectionsUserLimit, VirtualDesktopsLimit and VirtualDesktopsUserLimit. These configurations will apply to all users.
Benefit of using profile rules instead than configuration keys is to gain more flexibility thanks to the possibility of setting the rule on per-user/group basis.
It's strongly advisable to not mix the two methods, use of profile rules and of server configuration.
Two-way services such as printer sharing or USB forwarding can be disabled or enabled on one side only, or on both. To disable or enable the service from client to server, set the rule named as client-servicename (e.g. client-printer-sharing). To completely disable the service, set the rules for both client and server side.
TYPE is any of the type of service listed in the table above.
As an alternative to setting profiles, services can be partially or fully disabled also via configuration file by editing the corresponding key in the node.cfg file. Limiting services via profiles, however, gives a better granularity of control, especially if they don't need to be applied to all users. It's advisable to not mix the two methods, server configuration and profiles.
The class 'feature' controls copy and paste operations and can limit the bandwidth usage. It additionally provides the rules to disable/enable profiles and the automatic generation of guest accounts. All features are enabled by default, except the automatic generation of guest accounts.
The Terminal Server, as well as the other NoMachine client and server products, periodically checks NoMachine repositories (by default every two days) to verify if updates are available and will prompt a dialog informing the user that a new version is available.
It will never automatically update the current installation. Also the download in background of a new software version will not lead to an automatic update of the current installation.
I A new virtual desktop is created for each new connection. The virtual desktop type (GNOME, KDE etc ...) must be specified in the connection settings: to do that in client v. 6, 5 or 4, choose the desktop type the first time you run the session and remember to save the connection settings.
II You can migrate a virtual desktop session from one PC to another one: the session is disconnected and reconnected on the new side.
The above are automatically available when connecting from client 4.1 or later. The client overrides values set in the ConnectPolicy key in the server configuration.
Differently to version 3.5, NoMachine runs the default desktop set on the system instead. By adopting the configuration explained in the next paragraph, it's possible to allow users to choose the virtual desktop type from a list, e.g. choose between running a GNOME or a KDE desktop. Additionally, it's also possible to display the 'disconnect/terminate' dialog typical of version 3.5.
It's possible to configure the server to display a dialog to let the user decide whether to disconnect or terminate the virtual desktop session when clicking on the X button to close the session window.
This allows administrators to re-introduce the disconnect/terminate dialog typical of NX 3.5.0 but it will override the possibility of disconnecting the session by clicking on the X window button. It will be still possible to terminate the session by executing log-out from the system menu.
Two separate guides, available in the Documents section on the NoMachine web site (https://www.nomachine.com/all-documents) provide step-by-step instructions for that.
When debug mode is enabled, server logs may increase consistently. It's suggested to keep debug level only for the time necessary to reproduce the problem and collect logs.
By default the nxserver, nxwebplayer/nxclient and nxnode programs log to the file defined in the SystemLogFile key in their configuration files (server.cfg for nxserver and nxwebplayer/nxwebclient and node.cfg).
The custom file must be accessible (writable) to the 'nx' user and to the connected user.
In its default configuration, the Terminal Server removes the session directory once the session has been correctly terminated. Sessions directories are stored in the /usr/NX/var/log/node/ directory.
If you own multiple installations of Terminal Server, you may need to provide a single point of access to all of these servers. This can be done by installing NoMachine Cloud Server on a dedicated host and add each Terminal Server to it.
In this way, users will connect to the hostname/IP of the Cloud Server and will be redirected to the appropriate Terminal Server or, depending on the Cloud Server configuration, will be able to choose it manually.
You may also configure the NoMachine centralized infrastructure to make each Terminal Server to accept or refuse direct connections to its host.
To grant high available access to this centralized system, it's possible to add a second Cloud Server to the first one and set-up a failover cluster.
In order to federate a Terminal Server under a Cloud Server, connect to the Cloud Server host as a NoMachine administrator and use the graphical interface to add the server.
Otherwise, execute on the Cloud Server host the 'nxserver --serveradd ' command.

References: v. 
 v. 
 v. 
 v. 
 v. 
 v. 
 v. 
 v. 
 v.