This week I had an idea. It’s time for an upgrade in my technological shenanigans going on around the house. Something that I can put some time and effort into, learn from, and make practical use of. So of course, that leads me to re-purposing a Raspberry Pi 3 into a Linux home server. But not just your typical Kodi box or media server. I want to create an all-purpose server for home use.
The key to any successful project is planning. I learned this in my project management class in college. I haven’t had a chance to use the knowledge at work yet, but it can apply directly here at home. So this is my first post in a series that will journal the creation, execution, and enjoyment of a new home project, and serve as a guide of sorts to anyone else who may want to do the same thing.
Home Server Planning Task 1: Functionality
The first thing I need to figure out is exactly what functionality I want to get out of it. Obviously, being a Raspberry Pi 3 it’s not going to function at balls to the wall specs and power the next Fortune 500 company to greatness. But that doesn’t mean it has to sit almost completely useless. There are some functions I would like to get out of it.
- Central Storage Server: From photo and video backups, to full computer desktop backups. I want to have storage to save things to and be able to access from other devices later on.
- Wireless Access Point for Kids’ Devices: “But Johnny, you have a router. Why the hell do you need another access point?” Simple: With them accessing a point that I have full control over, I can control what they can and can’t access. Now, this does have the drawback of them not being able to cast to the Chromecast from their phones. But we have a tablet just for that, so not a real issue. It also serves as an attack point in case I feel there is a need for some backdoor spying on my kids. Go ahead and disagree, but this is the digital age. It’s not as easy as discovering a diary under the pillow.
- Home Web Server: I dabble with web design at home in my free time. From this site, to sites for others. It would be great to have an environment setup to where I can emulate a live production environment while I develop, and also have a point that they can use to view the progress. It can also hold single page html files that I am using in another Pi project (which I shall write about at another time).
- Server skills testing: I am an IT nerd. Part of my advancement in the field is learning the ins and outs of server operation, administration, security and protection. Having my own setup at home gives me the freedom to test many different skills and not put anything hugely important at risk.
- Side Functionality: Aside from the main functions of the server, I want a few other abilities such as SSH shell to monitor and make changes without having to physically connect. In the future, and as the tech in the house upgrades, I may create the ability to execute scripts to monitor and run things such as the thermostat, an alarm system, and lighting.
Home Server Planning Task 2: Software
Now I have a firm list of what functionality I want out of my miniature home server, so the next thing is to decide on the software the server will run. Obviously, from the title, I want it to be a Linux server. But with so many distros available, how do you choose the right one? Refer back for planning task 1. While it is technically feasible for each distro to server the purpose for the home server, not all are created equal. Some distros are better suited for data processing and others are suited for web application development.
The secret is in finding balance. For my particular home server build, I will be using a particular OS dubbed Raspliance from ghoulmann. Based off of the Raspbian OS (a Debian flavor made specifically for Raspberry PI ARM devices) and TurnKey Linux. With Shell in a Box, Webmin, and other great platform functionality out of the box, it is good for a small home server build without too much complication in setup or normal operation.
Home Server Planning Task 3: Hardware
This is where the whole project gets a little tricky. The plan is making the main piece of hardware a Raspberry Pi 3b. Obviously this creates a lack of power, processing speed, and storage. So there are going to have to be some tweaks to the design to make it worth it and workable. Let’s consider the basics first.
- Raspberry Pi 3b
- Raspberry Pi 5v power micro USB power adapter.
- USB Keyboard and Mouse (for initial setup only)
- 4 HDMI cord to hook into monitor or TV (for initial setup only)
Home Server Planning Task 3: Extras and Peripherals
- Hard Drive (preferably 500GB or more)
- SATA to USB with enclosure and power supply. (The hard drive I am using is a laptop drive because I’m cheap and don’t want to buy a brand new external)
- USB Hub with extra ports for future expansion.
- Wifi dongle to function as the server’s access point.
- LAN cable to plug server directly into the modem.
Theoretically, having an enclosure for all of it would be great and that may be something I look at in the near future. 3D printed or built from scratch, it would be nice to have a general box to contain it all. The extra USB ports would allow for lighting and a fan to keep everything cool.
So there we have it. The blue prints have been drawn up. With the exception of the SATA to USB, I already have everything I need. Part 2 of the series will focus on grabbing the OS image, flashing it to the SD card, and the initial software setup of the server. Then with Part 3 we will get into the nitty gritty of setting up each of the functions, testing, and deployment.