If you’ve been reading this blog for a while, you’ll be aware that I am a huge fan of running a home server. In fact, I now have several used servers, all neatly racked up. The first thing most people ask when they see this is either “what do your home servers do?” or “what’s a home server used for?“. Their second question is usually regarding how much electricity they consume and how much it costs per month. I try not to think about my electricity bill as it’s pretty horrendous, to be honest. I also have to switch the TV off whenever Greta pops up making me feel guilty about climate change and saving the whales. As you can imagine, I’m going to address the first question today and list some fun things you can do with a home server. If you’re on the fence about getting a server, maybe this list will inspire you.
Streaming your media to TVs and devices
This is probably the most popular use of a home server and is something a lot of people do, even in they’re not very technical. Basically, you can install software such as Plex, point it to your library of movies, TV shows, music, etc and it’ll let you stream them. You could, for example, enjoy your Plex library from your smart TV, iPad, laptop, etc.
Some people even configure it to allow access over the Internet. You could set it up so that you can stream your library from your home server to your smartphone from the other side of the world! Of course, you’ll want to secure it so that random people can’t just access your stash.
Whilst Plex is the most well known of the media streaming/sharing applications out there it’s by no means the only one. Jellyfin is a piece of software that’s similar to Plex and is really beginning to take-off. Unlike Plex, Jellyfin is completely free and open-source which makes it really appeal to a certain audience. People who believe in FOSS and are concerned about the privacy and security of Plex quite often prefer Jellyfin.
If you want to get even more advanced, you can add a capture card to your server and hook up a live TV feed. This will allow you to stream live TV and even schedule recordings to build up your library.
A lot of people got into the whole “home server” scene just to stream and organise their media. A significant number of these people found the tinkering and experimental side of owning a home server exciting and started to explorer other uses for it.
Home file server / NAS
Many people don’t realise how useful running a file server or NAS is until they’ve done it. Rather than have all your files scattered over various desktop PCs, laptops, external drives, etc. you can consolidate them all onto a fast file server.
Not only does having a file server make access and sharing much easier, but it also makes it much easier to perform backups and protect your important files.
There are numerous options when it comes to running a file server, from simply running Windows Server and creating file shares, to installing a dedicated NAS (Network Attached Storage) operating system. If you go down the NAS route, there are several options such as FreeNAS and OpenMediaVault. There’s an enormous amount of information on building a NAS online, from blog posts to technical documentation, to YouTube videos.
If you’re thinking that perhaps storing you data “in the cloud” is better and more modern, allow me to point out a few benefits that running a local file server/NAS has over “the cloud”:
1 – Privacy
Can you really trust any cloud provider when it comes to privacy? Yes, you could encrypt your data before uploading it but it creates an extra step.
2 – Speed / Performance
Accessing you files from a local file server/NAS is going to be lightening fast, especially with today’s cheap 1Gb network speeds.
3 – Safety / Security
You should of course be keeping backups of your important data (using the “321 rule” ideally), In addition to this, running your own local file server/NAS gives you options to employ redundancy (RAID, ZFS, etc). This combination of redundancy and backups should give you confidence that your data is safe. Can you really be sure that a cloud storage company isn’t going to go into administration or suffer some other disaster?
Self hosted home Web server
Running your own Web server from home can be great fun. For many years, I hosted my personal blog/CV from a server in my basement. There’s a real satisfaction from knowing that you can tap an address into your browser from anywhere in the world and the disks in your server will spin up and it’ll dutifully serve your website.
I should point out that if you have a website or blog that’s quite popular that serving it from home probably isn’t ideal. The upload speed on many home connections is lower than the download speed so performance won’t be great. You need to remember that when you’re running a web server, you’re basically uploading data to the client/user at the other end, rather than downloading. Also, professional hosting is very cheap nowadays and is often geo-balanced. This means that the person visiting your website consistently has a good, fast experience.
If you’re just serving a personal/small website, then by all means go ahead and put it on your home based web server. I recommend using either Apache or NGINX. They’re both very popular free and open-source web hosting software solutions. If nothing else, you’ll learn a great deal. I can recommend this!
Running an E-mail server from home
Back in the day, I used to run all of my email accounts from my home server. It was very rewarding, but if I’m honest it became a bit too much of a hassle. That said, if you’ve never administered your own email server before, I can recommend giving it a try. If nothing else, like running a web server, you can truly learn a lot about the technical side of how email works. Email is a very old technology too, so not only is it well documented, it’s quite nostalgic too, like a link back to the past.
If you’re hoping to gain experience to eventually get a job in IT then you’ll probably want to follow the Microsoft route and install Microsoft Exchange on your home server. Most of the “email admin” jobs currently on the market are for Microsoft Exchange. Similarly, if you’re already working in IT, perhaps in a support role and hoping to progress then running your own MS Exchange home server could help you out.
I personally didn’t use to run Exchange on my home server. Firstly, it was overkill as there was only me accessing the email accounts but secondly, I was already proficient in Exchange and wanted to learn something new. I ended up installing Postfix which is an open-source MTA (mail transfer agent) along with various other open-source systems. I firmly believe that if you’re going to have a home server then you should at least make it fun. For me, aside from my data hoarding, I enjoyed setting up and running an open-source Linux mail system.
Taking control of your DNS / Pi-hole
If you don’t know what DNS is then don’t worry, you can head over to Wikipedia and learn all about it. Briefly, however, DNS is the system that looks network host names (e.g. bbc.com) and returns their IP addresses (e.g. 126.96.36.199).
Computers only understand how to reach other computers or servers using their IP address. Humans aren’t great at remembering IP addresses however, we’d much rather remember a domain name. A DNS server takes the human-friendly domain name (bbc.com in the example above) and looks it up, returning the underlying IP address.
This may not seam like something you’d be interested in hosting on your home server (a bit boring even!), but it does have its benefits. Firstly, it’s a fantastic learning experience. It really helps you start to understand how domain names, web services, and the Internet in general are all glued together.
Secondly, it allows you to assign memorable names to other devices or servers on your home network. For example, if you wanted to browse your Plex server, rather than remembering to type, for example, “192.168.80.240”, you could create a DNS “A” record so that you only need to type “plex.local”. In other words, you create a DNS entry that maps “plex.local” to “192.168.80.240”. This is a very simple example and there’s a lot more you can do. I mention it just in case any readers are completely unfamiliar with DNS.
Thirdly, and perhaps most excitingly, it allows you to tweak DNS responses. I personally run a service known as “Pi-hole“. This software will accept DNS lookup requests but only selectively lookup and return the corresponding IP address. If Pi-hole determines that the domain or host name belongs to and advertisement, tracking, spyware, or analytics server it won’t return the correct IP address. In effect, Pi-hole keeps you safe from malicious attacks but primarily from Internet Ads.
I’ve been running Pi-hole for around a year now (admittedly alongside ad-blocking browser plugins such a uBlock Origin) and I can’t remember the last time I accidentally saw an advert. It really is that good. It also has a nice Web interface where you can log in and see charts showing how many ads it has blocked on an hourly or daily basis.
In case you’re wondering where the name Pi-hole came from, it’s because the software was originally designed to run on a standalone Raspberry Pi computer. I run it as a virtual machine on my home server though as it’s a fairly simple piece of software that runs on Debian Linux.
Learning using your home server
I know the gist of this post is “fun things to do with your server” but who said learning can’t be fun? If you’ve no interest in literature or history then I accept that being forced to learn Shakespeare for hours on end can’t really be described as fun. Conversely, if you’re a little interested in technology, computers, servers, etc then tinkering with a home server can be really fun. You may not even realise you’re learning anything but each time you get stuck and have to read an article or forum post or have to watch a YouTube video, you’ve potentially learned something. Back in the day, I had no idea how to configure RAID controllers, what iLo was, how to configure Fibre Chanel, or a whole host of other things. After a few months of playing with my home server and getting everything set up the way I wanted it, I suddenly realised that I had picked up quite a bit of technical knowledge.
There are countless posts and stories online of people getting their first job in IT, with no commercial experience, purely through looking after their own home server. On the other hand, there are those who already work in the industry but lack server knowledge in certain areas. These people, often quite rightly, don’t feel comfortable testing things on their employer’s hardware. They would much rather tinker with ESXi, for example, on their home server.
If you’re interested in IT, technology in general, or even just general tinkering, I can recommend getting yourself a home server or two.
Hosting a home gaming server
Personally, I’m not into gaming. Years ago, I used to enjoy messing around with some of the older games (Operation Wolf, Doom, Quake, and later GTA Vice City), but that’s all a thing of the past. In some ways, that’s sad because I know a lot of younger guys/girls (and a few older ones!), get a real sense of satisfaction from running their own gaming server.
Tastes change of course. In my day, running a Quake server was the “done thing”. Nowadays, it seems that games like Minecraft and Counter-Strike are current favourites when deciding to set up a gaming server. I believe these are strategy games and don’t appeal to me at all but of course, “no hate” as they say. These games seem to have huge audiences, times change, and it wouldn’t do for us all to be the same,
Home hosted VOIP PBX
If you don’t know what VOIP is, it stands for “Voice Over IP”, and is a way to carry voice telephone conversations over the Internet Protocol. One of the first things I did after building my first home server was to spin up a new VM and get my telephony migrated to it. The most appealing function to me was the “home switchboard” or PBX (Private Branch Exchange). I wanted to have a software switchboard installed, complete with IVR integration, that would answer incoming calls and direct them as appropriate. Some people found this funny, knowing that hardly anyone had my home number and the only calls I used to get were from telemarketers or scammers. Nonetheless, I wanted to consider my home as a “Private Branch”!
For a long time, the home-telecom software of choice was Asterisk, and it’s still hugely popular. The current leader, however, in my opinion, is FreeSwitch. They’re broadly similar but I find FreeSwitch more stable and intuitive. Both are open-source and free.
Running a home firewall on your server
I’ve never really trusted the “home” firewalls that are often supplied by your ISP, often integrated into your modem or router. There have been a number of vulnerabilities found over the years, plus I always assumed they are “backdoored” either by foreign powers or even our own governments.
Unfortunately, “proper” enterprise grade firewalls are expensive and current models tricky to find. This makes it unfortunate if you’re hoping to get into the industry and would like a true firewall to experiment with and learn the concepts.
Fortunately, if you have a home server you can run a very powerful open source firewall and hone your skills. I decided to run a firewall instance as a virtual machine. Not everyone agrees with this approach. Some say that running a firewall virtually detracts from its security. Others say that it’s too much hassle because if your server goes down, the whole home loses Internet connectivity. I decided to take these risks but you may want to think about them before taking the plunge.
The two main players in the open-source firewall scene are Pfsense and OPNsense. Pfsense are the original players, having forked their software from another open-source project ( m0n0wall ) and turning it into an absolute beast of a software firewall/router. Whilst it’s still free and open-source, some have become uncomfortable following their acquisition by NetGate. The purists believe that being owned by what they view as a competitor is something bad and stifles future innovation. A long-held argument, played out a million times even with big names like MySQL and Oracle.
The second big open-source software firewall/router is OPNsense. OPNsense is a fork from Pfsense, which if I remember correctly, took place around the time that Pfsense made a statement indicating that future versions of their software would only support CPUs with the AES-NI instruction set.
I’ve perhaps gone into too much detail here, but if you’re interested in networking, security, etc then I highly recommend having a play with Pfsense or OPNsense should you decide to bite the bullet and get a home server.
Given the subject of this blog, it wouldn’t be fair to write a piece about all the fun things you can do with a home server, without at least mentioning data hoarding. I’m not going to dwell on what this is as the whole blog is full of posts about it. All I will say though is that it’s great fun and the reason I bought a home server to begin with. Be warned, however, it’s addictive so start saving for your future hard drives now!