Build a Linux Home Server for less than £200
Nowadays, pretty much everyone and their hipster grandmother is blogging, publishing web articles, cooking recipes, or sharing some sort of digital content with free online services such as Blogger, Facebook, Flickr, Instagram and Youtube. These are all great, no cost options for putting content online, but still a poor substitution for a feature rich web server.
If you're looking to setup your own website or go beyond the basics, paying a hosting provider is usually one way to go. But there is a cost associated with doing so. The average cost of web hosting (i.e. buying a space on a server and a domain name) is about $15 per month. That includes as little as 20GB of storage and 20GB monthly bandwidth, which is really low, plus a domain name. My small wordpress stream here consumes ca. 40GB of bandwidth per month, not to mention home media sharing with samba or mpd. There's one good option if you don't want or cannot set up your own web server at home, which is Digital Ocean. They offer as much as 20GB of SSD storage with 512 MB of RAM and 1TB of monthly bandwidth for as little as $5 per month (a pay-as-you-go kind of plan). Take a look at their plans HERE. However, Digital Ocean is a VPS, which from my experience is not as good for hosting a website as a dedicated physical server.
But, how about escaping the monthly service fees of web hosting or gaining full control over hardware, features, data and privacy? Well, one solution would be to host your own Web Server.
The term Web Server can refer to either the hardware (a computer) or the software (an application) that serves content accessed through the Internet. Here, I'm going to provide both hardware and software recommendations for building your very own web server all for under £200 (or ca. $300).
- Low power consumption
- Silent operation
- Little heat generation
- Small form factor
- Budget: £200 (or ~$300)
Building a desired by us (i.e. low-powered, silent and small) web server requires some hands-on assembly of standard hardware components. If you're not comfortable doing so, I would suggest having a friend help you out, or refer to one of the many tutorials available online. Choosing the right hardware can also be tricky. Some common considerations when building a web server are performance, form factor (size) of components, cooling, storage capacities, minimal acoustics (noise reduction), compatibility and, of course, cost.
I've been looking for a long time for a decent hardware for my home webserver. Till now, I've been hosting this website on a Raspberry Pi, but because of it's limited hardware capabilities, I've decided to migrate to a more stable build. To be honest, all you need to host a website is a Raspberry Pi, but Pi doesn't handle big traffic very well. With about 10,000 monthly visits, the Pi gets laggy, and sometimes crashes. It wasn't created with such a traffic in mind - to be honest - it'snot even supposed to host websites, it's merely a learning tool and a toy.
I got few recommendations from cunning fellows on IRC, however those were a bit expensive solutions. That's when I came across what's on the list here.
The Hardware Build
Before getting started, please note that this build does have it's limitations and is intended for home or small office use on a broadband connection.
Motherboard and processor
What I've decided to go with, is the Intel D525MW Mini-ITX Motherboard. It is an energy-efficient motherboard, built with the Intel NM10 Express Chipset, featuring an integrated Dual-core 1.8 GHz Intel Atom processor D525 and Intel Graphics Media Accelerator 3150 graphics core.
It supports two slots of single channel DDR3 memory at 1066/800 MHz (up to a 4GB maximum), along with integrated VGA, Gb LAN, two SATA II (3 Gb/sec.) connectors, PCI, seven USB 2.0 (Back + Internal), RS-232 COM, and six-channel high definition Audio2. The board also has legacy ports (PS/2 ports and a parallel port) that in my opinion could be used for something more useful (who uses PS/2 keyboard/mouse nowadays?), but still, it's a very good motherboard.
This desktop board gives off very little heat and utilizes passive cooling which means there are no spinning fans generating nose when powered on. Best thing of all is that there isn't a need to purchase a processor, video card, network adapter or heatsink with a fan - everything we need comes with the Intel D525MW Mini-ITX Motherboard. Thus, making it an excellent platform for our build.
Storage requirements for our home web server build should be relatively modest.
I've decided to go with what I already have, and utilized a Hitachi Travelstar 2.5"³ 100GB 7200RPM HDD for the rootfs that I've previously used for Windows 7 partition (goodbye Microsoft!) and the internals of the PQI H550 external HDD I used with Raspberry Pi. The drive is nothing much than Toshiba MK3255GSX 2.5"³ 320GB 5400RPM HDD that serves for my media centre.I've decided to go with two 1TB WD Red 2.5 HDD SATA drives arranged in RAID 1 array. I'm still aiming at SSD drives, however their price compared to capacity drives me off for the time being.
The motherboard has two DDR3 204-pin SO-DIMM sockets. Any memory, up to 4GB module(s) would do, but I've went for Crucial's 4GB DDR3. This 4GB, 204-pin SODIMM, DDR3 PC3-10600 memory module is a perfect fit for the Intel D525MW Motherboard.
You could also use the Crucial's 4GB DDR3 Memory KIT (2GBx2), but I found a cheaper single 4GB module for my build.
Typically, a web server would be left powered on and running 24/7, otherwise it isn't doing it's job. With that in mind, it was important for me to select products that conformed to our objectives. The case was no exception. I needed an efficient case that took up very little physical space. I found this in the Antec ISK 300 series cases. The ISK Series line of cases is designed exclusively for Mini-ITX motherboards. The case has a 0.8mm cold rolled steel frame with exceptional build quality. It has a build in 1 side 80mm TriCoolâ„¢ 3-speed exhaust fan, that operates really quietly, so if you needed extra cooling, it's there for you. Measuring 6mm (H) x 222mm (W) x 328mm (D), the case can lay flat or in vertical position on the supplied stand. There are three drive bays, one slim optical 5.25"³ external and two 2.5"³ HDD internal. Front panel features two USB 2.0 ports, 1 eSATA, and an audio (AC'97 and HDA compatible).
A primary reason for me choosing this chassis was due to the included 65-Watt external AC to DC power supply adapter. Not only does it lessen it's physical footprint, but the heat generated is outside of the box, thus, in turn, providing better cooling and near silent operation.
Total cost of hardware
- Intel D525MW Mini-ITX Motherboard £50 (~$80)
- Hard Drives £0 (if bought new, ca. £40)
- Crucial 4GB £20 (~$30)
- Antec ISK 300-65 Chassis £55 (~$90)
Total cost of hardware: £125 (£165 with HDDs)
UPDATE: I've updated my disk space after some time, bought two 1TB WD Red HDDs for £70.
In the final cost, as well as the tutorial, I intentionally didn't include peripherals (i.e. keyboard, mouse and a display), as I had them already on me and I assume most of us have them as well. Those shouldn't be required after operating system installation, as we aim for a headless machine.
Before we begin with system installation, it's good to perform one more crucial action. We need to update BIOS to the latest version. Just head to Intell's Download Center, grab the latest iflash BIOS Update, put the extracted files onto a small USB thumb drive and perform the update on the board. This will help the board with USB drive recognition as well as introduce other improvements.
When choosing the OS for my home web server, I was aiming at good performance and stability. Having used Debian for a long time, and knowing it is a really stable environment, I've decided to go with it one more time. All you need to get Debian running on this hardware configuration is a 2GB USB thumb drive and, of course, Debian image. The installation is pretty straightforward, so there's no need for me to explain it in details. But, for the sake of security, I'd strongly advise you to harden your server once installed.
UPDATE: Currently, my server runs CentOS 7 Linux, which is an extremely server-friendly OS. Stable, and almost identical to Red Hat Enterprise Linux, minus the price tag and the support. CentOS, which is mandated to be binary-compatible with Red Hat 7, shares about 95% of the features of its commercial enterprise-class sibling.
The most widely used web server software out there is the Apache HTTP server. It is very reliable and stable and, most importantly, it's clearly one of the best open-source projects in world, as its continuing existence and use is a testament to how great this software is.There have been numerous web server software that has come out in the recent years like Nginx (still, good option for a Reverse Proxy server in front of Apache) and lighttpd, but the Apache web server has remained as the web server of choice for a lot of organizations world-wide.What I like about the Apache Web Server is that it just simply works. It's very easy to set-up and configure, and you can have a website up in a few minutes. Furthermore, it supports a lot of web scripting languages which even made it more popular.
And here's the last look on my old good Raspberry Pi webserver: