I've been meaning to try NoMachine NX for
a while. Its promise of fast remote X11 sessions sounded exactly like
what I wanted to log into my work desktop remotely (I really like having
a remote desktop with saved state you can just pick up from when using
remote access). That was pretty much all I knew about the software, so I
was a completely blank slate.
The getting started
guide is the
perfect example of how not to write a getting started guide.
Firstly, Section 1 - "Getting started" - gives me a full history of the
product, goes into significant depth about the challenges of forwarding
X11 requests, talks about the caching and compression implementation,
round-trip latency measurement, the details of two-way proxying system
and discusses every other feature of the software.
My eyes glazed over after about the first paragraph. That's all great --
I just want to know what to do!
At this point, I assume that I'm required to run some sort of daemon at
the remote end. I download and install the server package (it is
explained that the server package requires the client and agent packages
as well, fine).
I'm paging down, looking for something to get me started. I'm happy to
see Section 7 - "Set up your NX Server environment" (remember, at this
point I though I needed some daemon running in the background
constantly). It even has some commands commands to type, so I tap away,
running nxserver --useradd nxtest --system. My server binary doesn't
even seem to recognise these options. I give up, assuming that the
server isn't running and nothing will work. The getting started guide
has abruptly ended and I have no idea what to do.
As it turns out, it's all completely trivial. Here's the missing
"getting started guide".
- Download
and install the client, agent and server packages on the remote end.
You need to have ssh access to this box.
- Install the client on your end.
- Run /usr/NX/bin/nxclient. It will start a wizard where you input
the remote host name.
- The client will, under the hood, ssh to the remote end, open the
tunnel it needs, start the server and do all the magic required to
make things "just work". A remote desktop will appear.
- That's it!
Additional tips:
- It's easy to tunnel this connection (for example, if you have to
bounce through a ssh gateway to your internal network). Do something
like
/usr/NX/bin/nxssh -o 'Compression=no' -L 2022:remote.host:22 -f -N user@sshgateway.company.com
and then connect the client to localhost:2022. You don't want to
compress this link, as NX is already doing it.
- The only way I can find to make a new session is to start
nxclient with the --wizard command.
- Don't click "Disable encryption of all traffic" if you're tunneling.
AFAICT this tries to redirect the client to a non-encrypted port,
which obviously won't get through.
Other than the documentation, it really works as promised, making remote
X11 usable. One really nice feature is that it is smart about the
resolution of the remote desktop, filling up your local screen. Add to
that you don't need anything setup but your normal ssh connection, and
it's a great remote desktop solution.