Install freeNX Server


add the following lines (replace VERSION with intrepid if you're running 8.10) to your /etc/apt/sources.list

deb VERSION main
deb-src VERSION main

then update your repository informations and install freenx

sudo apt-get update
sudo aptitude install freenx

to have a opensource client:

sudo aptitude install qtnx

otherwise use the client from NoMachine

to stop and start freeNX

sudo /etc/init.d/freenx-server stop
sudo /etc/init.d/freenx-server start

Configuring SSH port

By default, nxserver uses port 22 for communicating over SSH. On some machines or networks, port 22 may be blocked; some Internet providers block port 22, for instance. Port 22 is also a common target of people trying to crack into a network. To make the SSH server listen on port 8888, you can do the following:

Edit the file /etc/ssh/sshd_config

gksudo gedit /etc/ssh/sshd_config

Find Port 22 and change it to Port 8888. You then need to restart the ssh daemon. Try

/etc/init.d/ssh restart

FreeNX should detect the SSHd port (in calse it would not, you can edit the file /etc/nxserver/node.conf and uncomment and change SSHD_PORT=22 accordingly).

use printer

Support of the most simple way of printing with FreeNX is very easy (at least in a pure CUPS environment). All we need to do is the following:

  • have the system's cupsd running on the NX client side.
  • have at least the CUPS client (print submission) tools available on the NX server side
  • establish a forwarded port above 1024, for instance 33631. Currently, you can do this on the commandline: ssh -R 33631:localhost:631 nxuser@nxserver
  • now you can make your KDEPrint framework talk directly to your NX Client's cupsd: * [Alt]+[F2], enter "kprinter" * expand the dialog ("Options >>>" button lower left corner) * click on "System Options" (2nd button from left at bottom) * select "CUPS server" (left-hand pane) * put in "localhost" (if has a different value) and "33631" as a port * put in any credentials you may need to establish your authorization to print. * Confirm. Voila!, you can see all your CUPS printers now in kprinter! (You may need to switch the printing system in kprinter from CUPS and back to make the printers visible.) (NOTE, that the settings for this are stored in each user's "$KDEHOME/config/kdeprintrc" file....) There's more to it: You can even print from the commandline. You just need to prepend the "IPP_PORT=33631" environment parameter to each command, like this: IPP_PORT=33631 lp -d myprintername /path/to/file (Or set the IPP_PORT=33631 as exported in the shell you work from.). It works with all CUPS commands but one. These f.e. work: IPP_PORT=33631 lpstat -p IPP_PORT=33631 lpstat -o IPP_PORT=33631 lpstat -W completed -o IPP_PORT=33631 lpstat -p myprintername IPP_PORT=33631 lpstat -o myprintername IPP_PORT=33631 lpstat -o Even the "lpadmin" command will work to create or modify printers! (Note, you will run the command from inside the NX session, and it is executed on the remote end, but it will install a printerqueue on your local NX client.) Here is an example for a printer hooked to the parallel port of the NX client: IPP_PORT=33631 lpadmin -p nxclientprinter -v parallel:/dev/lp0 -E [-P /path/to/ppd] (Note: the "/path/to/ppd" is a path on the NX Server, so you must have the appropriate PPD on the remote side ready.). One could set up aliases for all these commands, which could be sourced from an initialisation file for each NX session being established: alias lpstat="IPP_PORT=33631 lpstat" alias lp="IPP_PORT=33631 lp" alias lpadmin="IPP_PORT=33631 lpadmin" Of course any Unix program that allows you to configure a custom print command will be able to print with a line like the ones outlined above. (Remember, pretending the correct IPP_PORT env variable is the key.) Here is the one (but very important) CUPS command that does not work: IPP_PORT=33631 lpoptions -p printername -l This would normally query the cupsd for the "printer driver" options as are layed down in the PPD. But it does not work. (For the reason of this, see the "Software Trouble Report" I have submitted to a few months ago: ) For the same reason, the kprinter dialog about the print options does not show up the "Drivers" tab. Printing however works as expected (even with non-generic job options) if you know your printer, its options and how you can submit these options via the "Advanced Options" tab in the upcoming KDE-3.4. ATTENTION, security: the access to the local NX Client's printers and cupsd is allowed or disallowed according to the local cupsd.conf. It is advisable to use at least "AuthType BasicDigest" security for the local cupsd to prevent other users of the same NX server to abuse the NX Client's printers. (This is especially important if the NX Client user does not have root privileges on his box, and therefor may not be able to modify the local cupsd's security). This simple method has one very big advantage in multi-user NX servers: it doesnt show up all printers of all users to all users. Each user sees only his own local printers.

II will submit another feature request for a more full-scale print support in FreeNX after the simple one works. Here is the roadmap: we should provide a little helper shell script that creates the tunnel for the user. The script should also include enough "--help" output to make the user go. we could write a {k,x}dialog or maybe even a little kommander program to create a helper GUI that establishes the forwarded port. (Maybe it could even connect through the tunnel and modify the kdeprintrc file accordingly?) we should make the kNX developers include such a functionality into kNX (in which case kNX should find a way to set IPP_PORT to the required value on the remote side and also modify $KDEHOME/share/config/kdeprintrc accordingly so that starting kprinter in an NX session will show the local NX client's printers). work with a user space cupsd on the NX client side. This will allow fully-fledged printing (including support for all fancy driver options), and all the customized security setting the NX Client user wants for his locally attached printers. I will submit a separate feature request for this....

use sound

adding the ESD plugin to Xine

use VNC → Fragen

  • install VNC-Server on the machine you want to control remotely restricted to localhost
  • connect using NX with VNC as backend to your host and then to the VNC-Server (localhost/

  • in other words: share your working space on the remote computer ( on KDE "Kontrollzentrum-Internet-Arbeitsfläche freigeben").

  • NX-Client kdrc ("Arbeitsfläche fernsteuern") and set address to "localhost:0"
/etc/nxserver/node.conf configure the following:


and connect using shadow

correct keymap

do this on both: client and server (actually all computers where you upgraded from hardy to intrepid) System → Preferences → Keyboard → Layouts: choose keyboard model "Generic / Evdev-managed keyboard"

if you want to take screenshots during a nx session using freenx after that change, you have to set a new key for that purpose: System → Preferences → Keyboard shortcuts: choose Desktop → Take a screenshot and press the key you want to assign to that.

better now:

correct keymap

on the freenx server:

sudo apt-get install xkb-data

then type: setxkbmap (or restart nx or the server itself)

Use keycombinations with NX on remote host

Usually keycombinations like [ALT]-[TAB] (cycle windows) are directed to your local machine even during a nx session. In order to be able to send such a command to your nx server host machine change the behaviour using [Ctrl] + [Alt] + [K].

for more see NoMachine's FAQ.


after having removed the package freenx(-)server the user account nx remains... uninstall using

$ userdel -r nx