Welcome to the NoMachine Terminal Server Node - Installation and Configuration Guide v. 6.
What is NoMachine Terminal Server Node for? NoMachine Terminal Server Node is designed to be specifically installed on a Linux remote node and be part of a multi-node environment ruled by a NoMachine Enterprise Terminal Server. It is not a standalone server and cannot accept direct connections to its host.

Once installed, the NoMachine Terminal Server Node has to be added to the Enterprise Terminal Server. Users will connect to the Enterprise Terminal Server which is the single point of access to all the available nodes. Depending on the Enterprise Terminal Server's configuration, users will be able to choose the node on which to run their virtual desktop and/or sessions will be automatically load-balanced among the nodes (default).
Setting-up a multinode environment made of a NoMachine Enterprise Terminal Server plus a scalable number of Terminal Server Nodes is a solution for centralizing access to multiple hosts and distributing the load among them.
A Graphical Interface The NoMachine Terminal Server Node package includes the NoMachine GUI which provides the graphical interface (Server preferences) for administering the Terminal Server Node services. This GUI also acts as client for running sessions and connecting to remote desktops.
The most common operations detailed in this guide can be performed by the NoMachine UI and the Server preferences panel running on the local installation of the Terminal Server Node:

More details about the Server preferences GUI can be found in the dedicated guide available in the Documents section at: https://www.nomachine.com/all-documents
The Terminal Server Node is ready once installed Installation provides a fully operative NoMachine node with a default configuration suitable for the majority of environments. All the necessary services are automatically started. Just add it to the Enterprise Terminal Server.
A node of the Enterprise Terminal Server NoMachine Terminal Server Node, available for Linux only, 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.
Document Conventions and Important Notices The following conventions are used in this guide:
BaseDirectory is the base directory where the NoMachine binaries and libraries are installed. By default, BaseDirectory is: /usr.
InstallationDirectory is: BaseDirectory/NX, i.e. /usr/NX.
The command line interface 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.
On Linux invoke the 'nxserver' and 'nxnode' programs from /etc/NX, for example:
$ sudo /etc/NX/nxserver --status |
Printing the server and node usage doesn't require to be a privileged user, instead: |
$ /etc/NX/nxserver --help |
$ /etc/NX/nxnode --help |
The 'nxserver --help' and 'nxnode --help' display the list of all the available commands and options and their description. |
Online Resources Visit the NoMachine Support Area to access a variety of online resources including the NoMachine Forums, tutorials and FAQs: https://www.nomachine.com/support
Find a list of all documents and tutorials: https://www.nomachine.com/all-documents
Use the Knowledge Base search engine to access articles, FAQs and self-help information: https://www.nomachine.com/knowledge-base
Leave Feedback About This Guide 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.
Supported Operating Systems Windows 32-bit/64-bit XP/Vista/7/8/8.1/10 Windows Server 2008/2012/2016 Mac OS X Intel 64-bit 10.7 to 10.14 Linux 32-bit and 64-bit RHEL 4 to RHEL 8 SLED 10 to SLED 15 SLES 10 to SLES 15 openSUSE 10.x to openSUSE 15.x Mandriva 2009 to Mandriva 2011 Fedora 10 to Fedora 30 Debian 4.0 to Debian 9 Ubuntu 8.04 to Ubuntu 19.04 Raspberry Pi 2/3 ARMv6/ARMv7/ARMv8
Hardware requirements Intel Core2 Duo or AMD Athlon Dual-Core or equivalent 1 GB RAM Network connection (either a LAN, or Internet link: broadband, cable, DSL, etc...) Size required on disk: Linux 115 MB
Software requirements A desktop environment must already be installed. This applies also to headless Linux machines.
Web sessions and NoMachine client's sessions are supported. Users must connect to the Enterprise Terminal Server in order to run the session on the Terminal Server Node host (the node doesn't accept direct connections).
Even if it's advisable to upgrade client installations to the same version 6 of the Enterprise Terminal Server and Terminal Server Node, compatibility with clients v. 4 and 5 is preserved.
It's strongly advisable to keep version of Enterprise Terminal Server and of its Terminal Server Nodes always aligned.
NoMachine v. 6 is not compatible with the legacy NX version 3.5.0 (no longer supported since December 2016).
Installing for the first time 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.
Successive updates 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 Node is not accessible to users during the update procedure. Current sessions will be terminated, users will be able to connect again later.
There are two ways to update your current installation:
I |
Automatic updates
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, the automatic updates are disabled: it's therefore necessary to upgrade NoMachine Terminal Server Node v. 5 by manually installing packages (see below).
|
II |
Update with NoMachine packages
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 own a customer license we recommend to download the package from your Customer Area: https://www.nomachine.com/support#login.
|
If you want to install to default location, namely /usr/NX/:
INSTALL
# rpm -ivh <pkgName>_<pkgVersion>_<arch>.rpm |
To find out which NoMachine package you have installed (you will get the full name of the package), run: |
# rpm -qa | grep nomachine |
UPDATE
# rpm -Uvh <pkgName>_<pkgVersion>_<arch>.rpm |
UNINSTALL
# rpm -e nomachine-terminal-server-node |
TIP |
 |
|
|
For non-default locations, for example /opt/NX: |
INSTALL
# rpm -ivh <pkgName>_<pkgVersion>_<arch>.rpm --prefix /opt
UPDATE
# rpm -Uvh <pkgName>_<pkgVersion>_<arch>.rpm --prefix /opt
UNINSTALL
# rpm -e nomachine-terminal-server-node
|
|
If you want to install to default location, namely /usr/NX/:
INSTALL
$ sudo dpkg -i <pkgName>_<pkgVersion>_<arch>.deb |
To find out which NoMachine package you have installed (you will get the full name of the package), run: |
$ dpkg -l | grep nomachine |
UPDATE
$ sudo dpkg -i <pkgName>_<pkgVersion>_<arch>.deb |
UNINSTALL
$ sudo dpkg -r nomachine-terminal-server-node |
TIP |
 |
|
|
For non-default locations, for example /opt/NX: |
INSTALL
$ sudo NX_INSTALL_PREFIX=/opt dpkg -i <pkgName>_<pkgVersion>_<arch>.deb
UPDATE
$ sudo NX_INSTALL_PREFIX=/opt dpkg -i <pkgName>_<pkgVersion>_<arch>.deb
UNINSTALL
$ sudo dpkg -r nomachine-terminal-server-node
|
|
If you want to install to default location, namely /usr/NX/, ensure that the package is placed there.
INSTALL
$ cd /usr |
$ sudo tar xvzf <pkgName>_<pkgVersion>_<arch>.tar.gz |
$ sudo /usr/NX/nxserver --install |
UPDATE
$ cd /usr |
$ sudo tar xvzf <pkgName>_<pkgVersion>_<arch>.tar.gz |
$ sudo /usr/NX/nxserver --update |
UNINSTALL
$ sudo /usr/NX/scripts/setup/nxserver --uninstall |
$ sudo rm -rf /usr/NX |
TIP |
 |
|
|
For non-default locations, for example /opt/NX: |
INSTALL
$ sudo NX_INSTALL_PREFIX=/opt /usr/NX/nxserver --install
UPDATE
$ sudo NX_INSTALL_PREFIX=/opt /usr/NX/nxserver --update
UNINSTALL
$ sudo /opt/NX/scripts/setup/nxserver --uninstall $ sudo rm -rf /opt/NX
|
|
Customer packages include a temporary (30-days) node.lic file for evaluation. Such license file has to be replaced with the customer's license file acquired from NoMachine. This can be done via the NoMachine server GUI in the 'Updates' panel: click on the node.lic links to open its 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.
To verify from command line that node.lic is correctly in place and check its validity, you may run:
$ sudo /etc/NX/nxnode --subscription |
$ sudo /etc/NX/nxnode --version |
First of all, ensure that the user has a system account on the Terminal Server Node host: you can create it by using system tools or by using nxserver commands. Empty password is not supported. Note that users need to have a valid system account on the Enterprise Terminal Server host and on each of the Terminal Server Nodes. Username must be the same on all machines but the password can be different.
Once added to the Enterprise Terminal Server, the Terminal Server Node is ready to go.
To connect via web, the end-user should point the browser on his/her device to the name or IP address of the Enterprise Terminal Server host.
In a similar way, when connecting form a client device, the user will have to specify the IP or hostname of the Enterprise Terminal Server while creating the connection.
TIPS |
 |
|
|
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 or 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. |
By default, the NoMachine Enterprise Terminal Server makes available the Terminal Server Node for the automatic load-balancing of virtual desktops. This means that the server, based on its load-balancing algorithm, will select the node where the new virtual desktop will be started. The server can be also configured to let the user choose the node. See the NoMachine Enterprise Terminal Server guide for instructions to configure multi-node access: https://www.nomachine.com/all-documents
In the case of web sessions, by default, session data is streamed in video frames compressed and decompressed by using the MJPEG lossy algorithm, which is the video-format widely supported by browsers.
Oher video codecs like VP8 and H.264, require a browser which supports WebRTC and HTML5.
NoMachine web sessions use the H.264 video streaming when the following requirements are all met, otherwise VP8 is used. In practice, when WebRTC is enabled, the H.264 or VP8 encoding will be used, otherwise MJPEG will be the codec:
I |
WebRTC is enabled. |
II |
The software or hardware H.264 encoding is supported on the node host. (*) |
III |
The browser supports WebRTC and the H.264 decoding |
(*) Terminal Server Node packages for customers provide the H.264 libraries necessary to support the SW H.264 encoding.
HW H.264 encoding is possible when the Terminal Server Node host machine has a hardware accelerated video card (GPU) with any of the supported microarchitectures: Nvidia Kepler microarchitecture onward and Intel Quick Sync processors. Enabling HW acceleration by Quick Sync requires however a manual configuration as explained here: https://www.nomachine.com/AR09O00938
Optimizations Optimizations can be done in two ways: (I) by adjusting display settings in the session or (II) by enabling WebRTC.
I |
Adjusting display settings in the web sessions 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.
Change the display image quality Increasing the quality will mean to apply a minor compression ratio, the image will be clearer, but more bandwidth will be used.
Disable network-adaptive display quality 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.
Disable multi-pass display encoding 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. |
II |
Enabling WebRTC on Enterprise Terminal Server 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 the user experience with multimedia applications and contents. |
TIP |
 |
|
|
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 in 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.
The display encoder can be changed on the server:
from the GUI In the GUI in the Server Performance panel.
or in the node configuration file Enable the use of a specific codec by editing the node configuration file and enabling the following two keys:
EnableDisplayServerVideoCodec 1 DisplayServerVideoCodec CODEC
where CODEC can be: 'vp8','h264' or 'mjpeg'. For example: EnableDisplayServerVideoCodec 1 DisplayServerVideoCodec mjpeg
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 content is 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 advisable for multimedia content or applications with many graphical effects.
This mode can also 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.
You can disable/enable the X11 vector graphics mode via the GUI in the Server preferences GUI -> Performances panel
or in the node configuration file for disabling the X11 vector graphics mode, edit the node configuration file, uncomment and set: AgentX11VectorGraphics 0
or to enable it: AgentX11VectorGraphics 1
TIPS |
 |
|
|
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.
In order to activate support for VirtualGL, follow instructions at http://www.nomachine.com/AR05P00982
The configuration files for the Terminal Server Node are mainly node.cfg. In some cases it may be necessary to adjust some settings also in the server configuration file, server.cfg. In effect, the Terminal Server Node package includes the nxserver program as well, which still manages users and sessions on localhost but doesn't accept connections unless they come from the Enterprise Terminal Server.
Configuration files are placed in the BaseDirectory/NX/etc directory: /usr/NX/etc/server.cfg /usr/NX/etc/node.cfg
The Default Configuration NoMachine Terminal Server Node comes with a default configuration that is sufficient to grant a working setup in 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 this will require to restart all NoMachine services.
Edit the Configuration Files 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.
Make Changes to the Default Configuration Effective Changes will be effective with the next new connection without the need to restart services if not otherwise specified.
For each session, NoMachine uses ports that are used only locally on the node 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.
Local port |
Description |
How to change the default |
11000 + DisplayBase |
Session display. If this port is already in use, NoMachine will look for a free port by incrementing DisplayBase up to the value set in the DisplayLimit server configuration key. |
DisplayBase (by default 1001) and DisplayLimit (200) are defined in server.cfg |
20000 |
Communication port between the session's nxserver process and the main server process. |
Add the ServerSlaveBase key to the end of server.cfg and specify a value |
24000 + DisplayBase |
Session's monitor port. |
DisplayBase (by default 1001) and DisplayLimit (200) are defined in server.cfg |
5473 and 5483 |
USB devices forwarding. |
Disable USB sharing by setting EnableUSBSharing none in node.cfg |
Network port |
Description |
How to change the default |
6000 + DisplayBase |
TCP port for the NoMachine display service. If this port is already in use, NoMachine will look for a free port by incrementing DisplayBase up to the value set in the DisplayLimit server configuration key. |
DisplayBase (by default 1001) and DisplayLimit (200) are defined in server.cfg. |
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. Note that UDP is not used if the node is behind a firewall. |
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. |
20000 - 30000 |
External ports range for UPnP port mapping. |
Set NXUPnPPort in server.cfg to define a different range. Set EnableUPnP none in server.cfg to disable port mapping. |
5040 + x |
Port opened between client and server for each USB device. Port number is defined by 5040 + x where 'x' is the first free port retrieved starting from port number 5040. |
N/A |
4000 |
Automatic updates from NoMachine repositories. |
Updates are managed by nxd. Disable automatic updates by setting UpdateFrequency 0 in server.cfg. |
5473 and 5483 |
USB devices forwarding. |
Disable USB sharing by setting EnableUSBSharing none in node.cfg. |
It is possible to hide or show the !M (the Monitor) icon in the system tray. When the icon is hidden, notification messages will still be displayed when users are connecting. This can be configured from the GUI: In the Server status -> Server preferences -> Security panel by selecting 'Hide the NoMachine icon in the system tray'. When the icon is hidden, notification messages will still be displayed when users are connecting.
or in the node configuration file 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.
To hide the !M in the system tray set: DisplayMonitorIcon 0
To display the !M in the system tray set: DisplayMonitorIcon 1
In both cases, then restart the server:
By default NoMachine issues a balloon message to notify about events like user's disconnection or user's requests for connecting. You can disable notification messages by setting the following key in the node configuration: DisplayMonitorNotifications 0
TIP |
 |
|
|
If the displaying of monitor's notification messages is disabled, the desktop owner will be unable to accept connection's requests by other users. Configure trusted users on the Enterprise Terminal Server if you need to allow connections without explicit authorization. |
If you want to disable the launching of the Whiteboard from the Monitor menu, edit the node configuration file to have: EnableWhiteboard 0
Then restart the server:
You can manage create and delete user accounts by using tools provided by your Operating System or the NoMachine server commands as explained below. Note that the user who will connect by NoMachine must have an account also on the Enterprise Terminal Server (username must be the same, password can be different).
Creating Accounts
nxserver --useradd USERNAME --system |
Modifying the User's Password: |
nxserver --passwd USERNAME --system |
Listing the NoMachine Users: |
nxserver --userlist |
Removing Accounts: |
nxserver --userdel USERNAME --system |
|