There are many services out there which you can buy with your hard earned money, which under the hood are nothing more than a Linux server. Mostly you are paying people to write all those pesky Linux commands for you because Linux = hard. However, if you happen to have a Linux server for one reason or another, there’s no reason not to make it do all the things you need.
My original reason for renting a dedicated server was for *ahem* torrents… Perfectly above board, helping open source projects distribute files etc. Since then, I have expanded what it does to 5/6 different things. I plan on writing guides on the setup of each of these function, largely for my own benefit when I next break my server (this happens quite often, often enough you really shouldn’t be listing to my advice for anything remotely important).
I use rtorrent with the rutorrent web interface, which makes it really easy to upload files and monitor their progress. Despite their bad reputation torrents are an extremely useful way to distribute large files without the need for a lot of upload throughput. Many small open source projects make use of them because they simply don’t have the resources, such as the 30GB HD solar system pack for Space Engine (which incidentally is amazing and should be used in school to teach astronomy). However due to many people using torrents for downloading copyrighted material, many ISP’s block or heavily throttle torrent traffic. Having a server somewhere else can help bypass these restrictions.
Also useful for getting around those pesky ISP restrictions. Where VPN’s can be really handy is whenever you are forced to use an unencrypted Wi-Fi connection or any connection you don’t trust. Call me paranoid, but I’m not keen on doing anything important on McDonald’s free Wi-Fi. If you don’t think you are doing anything important on your phone at McDonald’s, you clearly don’t understand the amount of background data your smartphone uses. A good VPN will encrypt your data before it even leaves your device and stops people being able to track what sites you visit.
If you do any kind of software development, you should be using version control software. Period! It is number 1 on Joel Spolsky’s 12 steps to better code list. Most open-source projects use Git on a service like GitHub. Git was made for keeping the Linux source code under version control. If however, you want a private repository that you can access away from your home network, you often have to pay a monthly fee. Git is a breeze to setup on any Linux server. You can be pushing via SSH in under a minute.
Now we are getting to the really important stuff. People love a Minecraft server! Getting one set up isn’t hard (unless you want mods), and it is super cheap. You can get a VPS for £2.99/month which can support around 20 players. If you need more RAM, they can often be upgraded on the fly. I visited EMF camp last summer with some friends, and we hosted a Minecraft themed village, complete with swords! I used a cheap VPS to run a Minecraft server for anyone to join over the weekend with no problems (other than poor Wi-Fi).
Once your Minecraft server is setup, you are going to need a way to tell those kids to get off your damn lawn! Once again the gaming industry has seen fit to provide many overpriced options for things like Team Speak. You can run it on the same server the Minecraft world runs on without any problem. Once it’s setup you can setup rooms etc through your client so it can be used by people playing different games.
This is one I am still playing with. For a while, I used BitTorrent Sync to keep my files up to date between my laptop and desktop. I stopped using it due to a number of CPU resources it used to index everything. I plan to re-visit it in the future. When I do, rather than using my NAS as the primary backup location I will probably use my server since it is off-site in France. I still have to work out all the security measures to keep my files safe.