HOWTO setup a small server

FreeNX/NoMachine NX

Notes

This page describes how to setup FreeNX 0.7.3 with the NoMachine 3.4.0 OSS components (or compatible versions). For the clients the closed-source packages provided by NoMachine will be used. The server part will be built from the open-source packages by NoMachine and the FreeNX project. The installation of the server does only make sense on a computer with typical desktop setup (KDE/Gnome).

Original websites of the projects:

Client Installation

Get an appropriate NoMachine 3.4.0 client package from NoMachine (typically nxclient_3.4.0-XXX_i386.deb or nxclient_3.4.0-XXX_x86_64.deb) and install it:

# dpkg -i nxclient_3.4.0-XXX_YYY.deb

Client Configuration

The configuration is quite simple: A dialog pops up at first start of nxclient and few questions must be answered. I recomment to encrypt all traffic (no checkmark in checkbox “Disable encryption of all traffic”).

If the nx user at the server is not configured to use the NoMachine default key, you will have to add his private key to your client's configuration. Click “Configure” and then “Key” (in the “General” tab). You can replace the key in the window popping up with the key from the server.

Server Pre-Build

Prerequisit: OpenSSH The following packages (and maybe others) are required by FreeNX:

# apt-get install expect netcat

I prefer to install the NX server stuff to /opt/freenx. This makes a deinstallation at a later time very easy, because only one directory must be deleted. Only few steps must be performed as root (lines begining with #); building should be done as ordinary user (e.g., user, lines begining with $):

# NX_DIR=/opt/freenx
# mkdir "${NX_DIR}"
# chown user: "${NX_DIR}"

Build of NoMachine Components

The following NoMachine 3.4.0 OSS packages are required. Get them from NoMachine:

  • nxagent-3.4.0-XXX.tar.gz
  • nxauth-3.4.0-XXX.tar.gz
  • nxcomp-3.4.0-XXX.tar.gz
  • nxcompext-3.4.0-XXX.tar.gz
  • nxcompshad-3.4.0-XXX.tar.gz
  • nxproxy-3.4.0-XXX.tar.gz
  • nx-X11-3.4.0-XXX.tar.gz

Untar the packages in a separate subdirectory, e.g., named build:

$ mkdir build
$ cd build
$ for I in ../nx*.tar.gz; do tar xzf "${I}"; done

Now you can build the packages by running make in only two of the directories which have been created by unpacking the sources. The sources in the other directories will be automatically built as well:

$ cd nx-X11
$ make World
$ cd ..
$ cd nxproxy
$ ./configure
$ make
$ cd ..

Build and Installation of FreeNX

Get FreeNX 0.7.3 (freenx-server-0.7.3.tar.gz), untar it and apply the patch that enables NoMachine 3.4.0 and changes the installation directories. Afterwards, build and install FreeNX:

$ cd build
$ tar xzf ../freenx-server-0.7.3.tar.gz
$ cd freenx-server-0.7.3
$ patch -p1 < ../../freenx-server-0.7.3_install-dir.patch
$ make
$ make install
$ cd ..

Installation of NoMachine Components

Create the destination directories for the NoMachine binaries:

$ NX_DIR=/opt/freenx
$ mkdir "${NX_DIR}/bin" "${NX_DIR}/lib"

The NoMachine components contain two executables that must be installed:

$ cp -a nxproxy/nxproxy "${NX_DIR}/bin"
$ cp -a nx-X11/programs/Xserver/nxagent "${NX_DIR}/bin"

Additionally, these shared libraries are required:

$ cp -a nxcomp/libXcomp.so* "${NX_DIR}/lib"
$ cp -a nxcompext/libXcompext.so* "${NX_DIR}/lib"
$ cp -a nxcompshad/libXcompshad.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/X11/libX11.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xext/libXext.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xrender/libXrender.so* "${NX_DIR}/lib"

The following libraries are also built and may be installed, but in most cases they are already installed on your Linux system and are not required. If you experience problems with the libraries of your Linux distribution or just want to use the new ones, you can install them with:

$ cp -a nx-X11/lib/freetype2/libfreetype.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xpm/libXpm.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xfixes/libXfixes.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xtst/libXtst.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xdamage/libXdamage.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xrandr/libXrandr.so* "${NX_DIR}/lib"
$ cp -a nx-X11/lib/Xcomposite/libXcomposite.so* "${NX_DIR}/lib"

Note: The libraries listed above are required, because the nxagent binary is dynamically linked against them. For newer versions of NoMachine NX the list might be incomplete. To check the list you can filter out the newly built libraries in the shared library dependencies of nxagent:

$ ldd nx-X11/programs/Xserver/nxagent | \
  awk '{ gsub("([0-9.])*$","",$1); print $1; }' | \
  while read I; do
    find nx-X11/lib nxcomp*/ -name "$I*"
  done

Server Post-Installation

These steps must be performed as root. Change the owner/group of the newly installed files to protect them from the users:

# NX_DIR=/opt/freenx
# chown -R root: "${NX_DIR}"

Finally, the NX server must be setup. Just answer the questions according to your needs. I highly recommend to create a new OpenSSH key for the nx user instead of using the NoMachine default key, although this requires to distribute the private part of the key (not the public key) to all clients.

# "${NX_DIR}/bin/nxsetup" --install

In order to enable/disable the NX server, run:

# "${NX_DIR}/bin/nxserver" --start|--stop

At this point, your NX server should work and you should be able to login.

Some aspects (e.g., logging) can be configured in "${NX_DIR}/etc/node.conf". You can use "${NX_DIR}/etc/node.conf.sample" as a starting point.

Back to index.