Saturday, September 29, 2012

NoMachine NX, FreeNX, NeatX: Which should I use?

TL;DR: Don't use any of those, use X2Go.

I've used various different VNC servers and clients before, but I've never found them to be very useful. Most of the time the connection is too slow to get anything done. Recently, I found out about NoMachine NX, which has a bunch of really cool technology to make it actually reasonable to use your desktop machine over the internet. And, it runs over SSH, so you don't need to worry about opening up additional ports or encrypting everything.

My own use case was not terribly demanding; I want to access the computer on my desk (running Debian) from my laptop on the couch (running OS X), but I figured if NX works over the internet, it'll work even better over my local wireless network, right?

Unfortunately, NoMachine NX isn't free software. (Although some parts of it are.) Over the years several groups have tried to create an alternative server implementations, striving for compatibility with the NoMachine client software.

I first tried FreeNX, using Ubuntu packages on Debian. (I suppose that should have been a red flag: never use software compiled for Ubuntu on Debian, or vice versa. It's just asking for trouble.) It almost worked. I could connect, but then it would immediately crash. I spent hours trying anything I could to fix it, to no avail.

I tried using NoMachine NX Free, the free-of-charge version of NoMachine NX. It installed everything in weird locations on my machine and that made me angry. Also, I couldn't get it working.

I then tried going back to FreeNX, recompiling all the Ubuntu packages from source on a Debian box to rule out version incompatibilities (which was surprisingly difficult). It wasn't until I was half way through this that I discovered X2Go. The X2Go team maintains a lot of the packages used by FreeNX. Many of the underlying libraries are shared by the two products.

X2Go accomplishes everything that NoMachine NX does, except that it doesn't try for compatibility with the NoMachine NX Client; there is a separate X2Go client, with Windows, Linux and OS X support. That's a good thing, as it allows the X2Go project to control both the client and the server. And, it's packaged for Debian. I installed it and it just worked. Very simple.

So, long story short: use X2Go. Stay away from NoMachine NX, FreeNX, NeatX; they aren't worth your time.

17 comments:

  1. I use NoMachine, and it didn't install things in weird places. The original NX might be closed source, but it is still free, and don't forget, x2go and all the other derivatives wouldn't be around if it hadn't been for NoMachine. You know the old saying "don't bite the hand that feeds you.." - Bob

    ReplyDelete
  2. Hi Bob, thanks for your comment! By "install things in wierd places", I mean that the nxserver package just shoves everything into /usr/NX/, rather than properly putting things in /usr/bin/, /usr/lib/, /etc/.

    ReplyDelete
  3. Sometimes "don't bite the hand that feeds you.." is a very, very dangerous advice. As the hand that feeds you may also be the hand that shear you, or worse. But this is not related to this blog post.

    ReplyDelete
  4. Hi,

    We are currently trying to move from NX to X2Go (on RHEL).
    While we have what I would consider typical needs and usage, we are facing numerous issues: color issues with a minority of our GUI tools impacting their usability, client crashes with some other tools, etc.
    I am struggling to find expertise to move forward - either forum, technical support or even consulting to ensure our implementation is better controlled.

    Any suggestions there?

    ReplyDelete
    Replies
    1. X2Go has a couple of mailing lists that could probably help. Their website even suggests a couple of companies that could do professional consulting.

      http://wiki.x2go.org/

      Delete
  5. I've used FreeNX very successfully for quite a few years now - originally on Ubuntu and for the past few years on CentOS. On Ubuntu it was admittedly a bit of a slog to set up but on CentOS6 it was very simple indeed - it works fantastically well, much better than RDP in my experience (though I don't need printer/sound/fileshare forwarding which helps)

    NoMachine's client is not the only one available for NX, there are open source alternatives which work perfectly well so no closed-source anywhere in the setup.

    ReplyDelete
  6. A little story...

    I was fairly happily using the version 4 NoMachine Workstation for Linux (server on RHEL6 in EC2 cloud instance, client on local Windows 7 laptop).

    Sound worked, speed was fine (after I moved my EC2 instance to the West coast - when it was on the East coast EC2 region, I think latency was screwing up NX redraw).

    I did have some annoying issues - the NoMachine Menu Panel was incredibly fragile - sometimes trying to use it would simply cause my display to go black. State was preserved and I could reconnect, but basically I had to treat the Menu Panel with kid gloves.

    And after one one-month session, the Remote Desktop started to die on me (freeze up - where I could see output (such as `top` display being updated) and see mouse cursor move but no response to keystrokes or mouse clicks. I had to close my client NoMachine session and reconnect, at which point I could continue from exactly where I left off. One morning I had to do those reconnect episodes for every command line I entered into emacs:

    enter command
    NX froze
    reconnect from NX client
    repeat

    That problem kind of went away but not enough so I had to close my Remote Desktop entirely, restart a brand new session, rebuild state, etc. etc. Very annoying.

    That lead me to try to upgrade from NoMachine 4.0.360_3 to 4.0.369_3.

    Disaster:

    Audio no longer worked.

    Worse, Ctl-Alt-0 or mousing on the [ !M > Show the menu panel ] GUI menu item only worked once. Any attempt to hit it a second time breaks the system.

    So, I then found this site I just wasted over an hour trying to install and run X2Go. It is horrible. I managed to get a Desktop to come up, but then it did not understand "black" in emacs -cr red -bg white -fg black. Then, after a second attempt to connect from the X2Go Windows client, the Windows client window turned into a tiny little weird oval with a dot in it. I am going to uninstall anything having to do with X2Go and, for now...

    I plan to go back to my previous version of NoMachine 4 and just live with it.

    I figure eventually the NoMachine developers will get the thing to work and be less fragile on RHEL6.

    Dennis Allard
    http://oceanpark.com

    ReplyDelete
  7. Just proves that mileages vary significantly.

    ReplyDelete
  8. I find X2Go to be infuriatingly slow. It is much slower than the standard Windows RDP protocol. NoMachine is the fastest of the 3 and X2Go by far the slowest. On the same hardware and internet connection, NoMachine is nice and snappy but X2Go takes several seconds to "draw" the screen making it completely unusable when you have a window that is updating text data several times per second.

    ReplyDelete
  9. Use Cendio ThinLinc.

    This is an update to my earlier post about NX. Eureka, I found a much better solution -- Cendio ThinLinc. Cendio ThinLinc works extremely well and is easy to intall.

    After struggling with NX for months and giving up on X2Go after a frustrating install, I stumbled upon Cendio ThinLinc remote Linux desktop for Linux. I installed ThinLinc on my RHEL 6 system months ago and it has worked very well with no down time ever since. Audio and video works great and the system is stable. There is almost always no noticable keystroke or screen refresh latency.

    I had one minor configuration issue which Cendio support solved for me. I received a personal email from Cendio support within a few hours of reporting the issue. A Cendio developer literally told me what command to enter to get past a network NAT issue and things then just worked. Otherwise the server install was a slam dunk and the client install was a slam dunk. I did have to fiddle a bit with screen size and full screen settings to get my remote desktop to display just like I wanted on my extended display (a 1920x1200 Dell U2410 monitor). My remote desktop has now been running for months of continuous uptime. It is as if I have my remote Linux box sitting right in front of me even though it is, in fact, a remote EC2 virtual machine.

    There is one minor glitch. ThinLinc does not pass through Ctrl-Alt keystrokes. So for an emacs user such as myself, that is inconvenient but it is not a show stopper. It just means for a few emacs commands I have to use arrow keys or explicit two key combinations using ESCAPE instead of Alt (Meta). I reported this as a bug to the Cendio bugzilla system. I was informed that the issue is a known issue. In any case, it is not a big deal.

    ThinLinc works great. It installed very easily on both server and client (my client is Windows 7). Cendio (unlike NX) knows how to design friendly GUIs, the product is very stable and it performs extremely well. Excellent throughput -- I can run a remote browser and display YouTube videos. Both video and audio work almost as if running on a local browser. Very low latency -- my RHEL 6 box is on an Amazon EC2 instance on the U.S. West coast and my client is about 600 Kilometers to the South. I seldom have any keystroke or screen refresh delays. From time to time a bit of delay does occur but even then not to the point of making the system unusable and almost all the time there is simply zero noticable delay. Every few weeks my client dies for unknown reasons so I have to restart my client. That only takes a few seconds and puts me back to the exact desktop state I was at.

    One caveat. I have not figured out how to login to my remote ThinLinc desktop using ssh public key authentication. I have to use password authentication. So when I login, I first ssh in from a separate PTTY ssh shell and temporarily reconfigure my remote ssh server to allow password authentication. I then reconnect to my remote ThinLinc desktop and, once reconnected, then reset my ssh server to disallow password authentication and require public key authentication, a security level I prefer.

    I strongly recommend the Cendio ThinLinc remote desktop for Linux and RHEL.

    Dennis Allard
    http://oceanpark.com
    Santa Monica

    ReplyDelete
    Replies
    1. just checked Cendio ThinLinc website, and unfortunately they don't have a free version suitable for home users. This is a big turn-down for many users.

      Delete
    2. This is not true - it is free for up to 10 concurrent sessions per ThinLinc-server. This should be enough for every home scenario. I use it now for some years on RHEL5 and 6 and by now I found no faster and more stable solution.

      Delete
    3. Yes this is true. NO free versions, at least not in the visible place on the website

      Delete
    4. Slightly late to the party.. re: Cendio ThinLinc, DL page.

      This download is also available for small user groups and home users for free, with a maximum of 5 concurrent users, for more details see the FAQ

      Delete
    5. AWESOME! I was using x2Go and it worked, but slowly. I installed ThinLinc and compared it to my x2go install and ThinLinc was much faster and it even had sound. I am using Xfce on the server to keep the load down on the server. x2Go was a bit laggy, but worked. The server is running Ubuntu 14.04.5 LTS, which is great, because there are known problems with later versions of Linux servers and ThinLinc. ThinLinc has docs that explain what versions of Linux it works well with on their website. It is free to use for up to 5 simultaneous clients. That means up to 5 connections from anywhere, any machine at a time. I'll probably never need more then 2. Sweet. Perfect for the home admin;-)
      Thank you, Dennis Allard, for your detailed post. I have been looking for an OpenNX replacement for some time now, and this fits the bill.

      Delete
  10. I will never return to VNC again. These are great choices

    ReplyDelete
  11. No machine is way way faster than x2go on internet or lan. No machine just works, when x2go is very unstable. Nothing to compare, no machine rocks.

    ReplyDelete