Uncategorized

Learn you a Linux for great good!

Posted in Uncategorized on October 23rd, 2009 by jb55 – View Comments

One thing I’ve noticed in the past couple of years during my time at school and on my software engineering co-op is this: a large percentage of software engineering students simply do not know Linux! This may seem odd to programmers who couldn’t have it any other way, but if you’ve never used Linux before you may be thinking: “What’s the big deal”?

It’s fun!

No, really. Humor me for a second if you’re skeptical. If you’re a person who enjoys problem solving and learning new things, Linux is a great environment to experiment and play. It also serves as a practical solution to many problems that you may have not been aware of, which I will talk about in the following sections.

The setup

One thing I’ve always recommended to fellow students and friends is to set up a dedicated linux server in your house. Chances are you’ve accumulated a few old PC’s (if you haven’t thrown them out yet) over the years. Any will do, you don’t need a beefy system to run Linux. For example, jgblue.com runs on 256MB of ram, thanks most in part to how lightweight many linux server distros tend to be. If you don’t have a spare computer lying around you can always pick up a cheap one from some bargain PC shop. As an alternative you can try installing VMware and running linux in that. I’m going to assume you have a dedicated linux box for the following sections though.

So what flavor of Linux should you get? Ubuntu. You can get it here if this is your first time running a server this is your best choice.

I do not plan on making a comprehensive guide to installing and finding your way around Linux. There are plenty of guides on the internet which cover pretty much anything you might want to know. So comprehensive in fact I recommend following a simple rule of thumb: If you find yourself stuck on a problem, and you’re not sure where to go from there, Google it. Immediately. The minute you find in a situation where you cannot intuitively determine the answer within 10-20 seconds, just Google it. Google knows. That’s a generally a good rule of thumb for anything you find yourself hacking on.

So what can I do now?

Here are a few things which I recommend setting up to get the most out of your new Linux server:

Register a domain name to access your server from anywhere
You may of heard of dynamic dns services such as dyndns.org which provides you with a free subdomain. I prefer a service called FreeDNS. FreeDNS allows you to do the same thing, except with your own domain instead. For example I use higgr.com as the domain name for my Linux server at my home.

Set up web server for low traffic personal web pages
By installing a webserver such as Apache, you can easily host web pages for sharing files with your friends or hosting a personal blog. I wouldn’t recommend hosting high traffic websites though, since it will be running off your internet connection.

Using it as an SSH proxy server for getting around firewalls and encrypting your browsing in public places
Using Putty on windows or SSH in Linux, you can use a SOCKS5 proxy to get your home internet connection to fetch websites and tunnel them to your Putty or SSH client. This effectively beats most workplace or school firewalls, while encrypting all traffic to prevent snooping.

Using it as a firewall and backdoor into your network
Your Linux box can sit between the internet and your network. By only allowing a few ports such as SSH, you can hide your entire network while giving you the ability to access your network publicly. For example, you can set up an SSH Tunnel to Remote Desktop into your desktop computer at home. I do this to add torrents to my desktop computer at home from work. Having remote desktop access to your computer at home from anywhere in the world by tunneling through higgr.com is very cool :). There’s even a remote desktop client with SSH capabilities for your iPhone, so you can access your computer from anywhere you have cell reception.

These are just a few of the practical applications I’ve employed since setting up my Linux server. The rest is up for you to discover. Enjoy!