I’ve been using the free version of the NX server from nomachine to access my Linux hosts and it’s been working really well. I’ve set it up at work to allowed shared access to our compute server, however we’ve run into an issue here. The free version limits how many people can use the server. Now we really don’t need the support and this isn’t like a big production shop where we need a rock solid version, so I started looking for open source alternatives. I found FreeNX, but development there seems to have paused for now. I then found Neatx. It’s hosted on google code and appears to be a little rough around the edges, but people claim it works.
There isn’t an installer, but I’m a developer, so I figured this shouldn’t be too bad. Turns out that after about 2 hours this evening I was able to get it going. Here are the steps that I followed. Note that I’m doing this on opensuse 11.3. The instructions should work elsewhere though.
- Install nxclient, nxnode, and nxserver from nomachine’s website. I grabbed the RPMs for opensuse and they installed just fine. I had originally done this because these were the binaries I was using, as it turns out I need some libraries from there for neatx to run properly.
- Copy the libraries off to the side to use later. If someone knows how to get around this step, I’d be very happy.
- sudo cp -r /usr/NX/lib /usr/local/nx-lib
- Remove nxclient, nxnode, and nxserver. We don’t need them now.
- mkdir nx
- cd nx
- Download the following source files from nomachine’s opensource site. My downloads were version 3.4.0, but there may be a newer version out when you read this.
- nxagent-3.4.0-11.tar.gz
- nxauth-3.4.0-3.tar.gz
- nxcomp-3.4.0-7.tar.gz
- nxcompext-3.4.0-1.tar.gz
- nxcompshad-3.4.0-3.tar.gz
- nxproxy-3.4.0-2.tar.gz
- nx-X11-3.4.0-4.tar.gz
- Untar the sources: for i in *.tar.gz; do tar -xzf $i; done
- cd nx-X11
- make World
- sudo cp programs/Xserver/nxagent /usr/local/bin/nxagent.real
- Now here is where we use the libraries. I tried finding all of the libraries in the sources that I built, but they weren’t enough, something was still missing. So you need to create /usr/local/bin/nxagent as a script with the following content:
- #!/bin/bash
- export LD_LIBRARY_PATH=/usr/local/nx-lib
- exec /usr/local/bin/nxagent.real “$@”
- Download neatx from svn. Note that there aren’t any packages when I did this.
- svn co http://neatx.googlecode.com/svn/trunk/neatx neatx-read-only
- Follow the instructions in neatx-read-only/neatx/INSTALL
- Fix the instructions on nx’s home dir
- sudo chown -R nx ~nx
- Edit /usr/local/etc/neatx.conf to match your system. Some paths will likely need to be changed.
You should now have neatx setup. Connect to it from any NX client and give it a try. The default neatx.conf has the loglevel set to debug. Leave this on until you’ve successfully connected, then change it to info to keep your logs from getting real full. I spent a lot of time looking through the output of the debug logs for errors in my setup. Neatx is written in python, although you don’t need to know the language to be able to debug most of the errors.