Building my own "Citrix Terminal Server" With Ubuntu 10.04.May 24
Most of you who follow me on Twitter (and Facebook) know that i’m an IT consultant. In my dayjob, that means i have to work for a lot of “different clients” on the same day. This is sometimes a little bit of a Mindf*ck since you need to keep those professional “identies” seperated when you are working for another client. Emails, logins, proxy settings, mail signatures, bookmarks etc .. Its hard enough keeping track of all of those settings for ONE specific client, let alone for several. Before you know it you’re logging into webmail with the wrong credentials, follow the wrong twitterfeed, Sign a message with a completely different personality and confuse not only yourself, but also “weird the flying frack” out of the people you are contacting. One of my clients has a pretty decent solution for this. They offer you a remote Citrix based desktop enviroment. Use their Vpn token from ANY computer equipped with a Citrix ICA client and you have ‘their’ (remote) desktop on ‘your’ desktop. This is a pretty cool system since it not only “seperates” their “work desktop enviroment” from all other “enviroments” i have on whatever system i’m using. ( Did i mention this Citrix ICA client thing works on my Macbook too ? ) What it comes down to is that the whole “concept” of a ” remote desktop session ” on some sever , using ANY operating system, ANY piece of hardware and from ANY location, tickled the ‘killroy 2.0’ nerve inside me .. This is something I wanted to try out.
Now, buying my own Citrix serverfarm was not really an option , since I don’t want to spend that kind of money (i’m a cheap ass bastard) AND i wanted to do this from a linux enviroment. Ubuntu Linux was to be my poison of choice and the goals of the entire project should be the following.
1 : Provide a ‘remote desktop session’ with a Ubuntu desktop interface, accessible from anywhere – on any machine – using any operating system.
2 : Create a ‘terminal server enviroment’ to allow MULTIPLE users, from MULTIPLE locations to access the Linux server, enabling you to “share” processor power, memory and storage to MULTPLE users.
3 : Enable the DIFFERENT users to connect to the server AT THE SAME TIME , each using their OWN personal settings (so VNC is out of the question)
A solution like using “logmein” on a “dedicated virtual workstation” ( a virtual machine, running Windows, remotely controlled via Logmein) was not an option here since i would need to create a different virtual machine for every user that connected to the server. This has a high impact on system resources, and i did not want that. Since this was going to be a ‘terminal server’ experiment, it means users are not going to be able to ‘manage’ their ‘remote desktop’ like they would manage a ‘ personal desktop ‘ (adding applications etc). In this scenario the “administrator” gets to decide what applications are going to be installed, and users get (non-sudo) rights to their personal desktop enviroments.
How to go about this practically COULD involve hours of reading through obscure forum posts, trying and retrying to get things to work. It might involve compiling kernels, adjusting configuration files, dancing naked around your server swinging a rubber chicken and praying to the gods of geek to make it work. Unfortunately … its much more simple then that… If you are using Ubuntu 10.04.
There are only a few steps involved
1 : Set up a standard Ubuntu 10.04 desktop and install all the applications you want to use.
2 : Create accounts for the different users you want to be able to connect.
3: Enable OPENSSH-Server (as mentioned in COUNTLESS Knightwise.com howto’s) : sudo apt-get install openssh-server
4: Install NEATX ( the Ubuntu 10.04 replacement for the FreeNX server)
5: Make sure you have all the dependencies installed ( do a “sudo apt-get update” “sudo apt-get upgrade” and a sudo apt-get install -f ” , to make sure you have everyting )
6: Next you need to install the NXFREE client on whatever computer you want to use to connect to your linux server. There are versions available for Windows, OSX, and Linux. Go to the NoMachine NX webpage and pick your client.
7: Install your client and try to connect to your server.
This is of course just a quick-and-dirty article on how to get it working , something I will try to elaborate on in the next docu-cast or podcast episode. But the results of my little experiment are very promising so far. I’m currently testing out the setup on my home network, and over LAN its just like working with a fast and responsive Virtual machine. The colors are excellent and there is no difference in working with a ‘real’ Ubuntu desktop environment or connecting to the remote session. One of the other good things is that the No-Machine client is keyboard aware ! When I use it on my mac, it maps the apple keyboard layout correctly to the desktop session. When I connect from my windows machine, it gives me the correct keyboard layout there. (When I work remotely , this is a big issue since the keyboard layouts on my Mac’s and my PC laptop differ). I”ve hooked up three concurrent users so far, and since i’m running this on an Intel Atom pc with 2 gigs of ram, its still pretty responsive.
The pro’s of a setup like this are :
– I have a ‘personal ubuntu based desktop enviroment’ that is accessible from anywhere. (all i need to do is forward port 22 from my router and I can even connect from across the internet). The connection is encrypted and secure.
– The Client is cross-platform , enabling me to connect using Mac’s, Other Linux machines or Windows machines. ( With correct keyboard mappings )
– Several users can connect at the same time.
– I can “split up” the different “identities” I need to use for several projects into individual user accounts. Each with its own different “settings” bookmarks etc.
3 different users logged into the system at the same time.
So in all i’m pretty pleased with this setup (although i still need to learn some things about it) but I could see the potential in using a setup like this in a home, an educational or perhaps even a professional environment. Add enough processor power, some decent amount of RAM and before you know it , you just need ONE Super powerful PC in the house and let the kids connect via the No-Machine client. Dad (or mum) manages ‘the server’ and controls what applications the youngsters can use, and huzzah .. now you can use all the old clunkers again !
The next step in the experiment will be hooking up some old clunkers with a minimal desktop environment to see if I can run them as “Terminals”.
Official Ubuntu Help article on installing FreeNx (NeatX) on 10.04 : https://help.ubuntu.com/community/FreeNX
Neatx Project : http://code.google.com/p/neatx/
NoMachine Desktop software : http://www.nomachine.com/download.php