Using Ubuntu as a thin client

Over the last few years there have been quite a few articles discussing the uses and advancements of the rdesktop application for Linux users. Rdesktop is an application designed to allow Linux users to access the remote desktop feature of Windows based machines, specifically servers. When my company made the decision to implement a terminal server to ease the network effects of a critical application, I began investigating other practical applications for it's use in a mixed Windows/Linux environment. I set out to determine if a Linux based thin client would be practical. As it turns out, not only was it practical, it was also exceedingly easy.

Recently, my department began paying closer attention to our inter-office bandwidth usage. We began to notice that one of our network applications required its end users to conduct a “push” several times a day, taking up most of our available bandwidth. After implementing QOS style bandwidth throttling, we took the additional step of placing this particular application solely on a terminal server. Our users would log in remotely, do their work, and the data transfer took place locally on that server, with no need for a “push” over the network. Encouraged by the results of this test, I began to explore the possibility of doing this with all of the applications commonly found on our end-users' computers. The result was a completely free (in all senses) thin client.

I took a stock computer from the warehouse that was for most purposes, outdated. Since I was planning to install a thin client version of Linux on the machine, it didn't need much more than a keyboard, mouse, monitor and network access. We rely heavily on CentOS for our server distribution, but I decided to use Ubuntu for my proof of concept thin client. I chose Ubuntu because of its out of box functionality across a number of different components and drivers. I am certain you could use just about any distribution you are comfortable with. Very little is needed to configure a thin client during the default install. The only deviation on this install was that it would login the user automatically without prompting for a password (since nothing would be stored or accessed on this machine, there were few security concerns).

Once the machine was installed, a short script was placed in the home directory containing the following:

!/bin/bash
rdesktop 192.168.???.??? -f    #insert terminal address
sudo /sbin/halt

The script needs to be made executable, which can be chmod'd from the command line, or clicked through Gnome. After that's done, let Gnome's startup program manager know where it is and you're almost done (System → preferences → startup applications). Currently, there is still a bug of sorts in rdesktop that will only connect once before generating errors. To fix this, enter the following at the command line:

# Remove/Delete the ".rdesktop"-directory 
$ rm -rf ~/.rdesktop
# and create a _file_
$ touch ~/.rdesktop

That's it. There's really nothing left to do but reboot. As you can see from the script, a few things are going to happen. First, as soon as the computer boots, you're going to see an Ubuntu splash screen, which is the last time the end user is going to be reminded they're not really using Windows. Second, instead of the Gnome desktop appearing on their screen, they are automatically taken to the terminal server's login screen. After the day is done, logging out of the terminal server shuts the thin client down.

So what do we have, and what does it all mean ? Ultimately, our end-user-turned-test-pilot has a Linux machine on what is now considered sub standard hardware that normally would have been thrown out. The computer boots, and takes her directly to the Windows based terminal server, completely eliminating any learning curve whatsoever. When she logs off, the computer turns off. Total cost to company: nothing. If the thin client burns down tomorrow, the unit can be replaced in minutes, and the end-user's loss is non-existent. All of this is accessable via VPN, making the entire desktop more freely accessable should she find herself at home, or on the road. We haven't spent a dime, and in the same we have managed to recycle a machine that would otherwise have been land fill bound. We've struck a blow for open source, one for Mother Earth, kept our money where it belongs and had a blast doing it.

While it is unlikely that this is the killer-concept that will change the way we do business, it did help us to think outside the digital box of sorts. It pointed us in other directions, and I'm sure that some project in the future is going to benefit from what we've learned here. Either way, we continue to discover new ways to implement open source solutions. Each step we take produces it's successes, and sometimes not so successful results. Building a thin client from a linux box can hardly be called a monumental achievement, but each small step forward leads us to the bigger solution around the corner, and is ultimately why I love my job as much as I do.

Load Disqus comments