Hello my imaginary friend, long time no see? Well, we will be seeing every week from now on.🤞. Okay let's start with the topic in hand. Since this is my first post on here, I will be introducing what a HomeLab actually is. Here we go.

It is a cult that worships the god of servers, according to Urban Dictionary. Whatever that means and whoever the god of servers maybe.😂. In simple terms, HomeLab is a system of servers and other networking gear where you can experiment with running different services and network configuration.

The funny thing is HomeLab might not need to be present at your home. It might include VM's and other services from cloud providers. My HomeLab includes my old HP laptop, couple of Raspberry Pis 4, my ISP provided Wifi Router and AP, a WiFi range extender and a Digital Ocean droplet.

You might be thinking why? Why configure and maintain a HomeLab at all? Because it's hella fun! And it helps me better manage my life. I always find ways to automate things and having a server ready to deploy that little python script is just plain awesome. After you've deployed, you can see the magic happen. Files and Photos automatically going into the correct folder under it's respective year and month is just magical.

Allow me to explain my HomeLab configuration so that it may inspire you to set up your own. Starting with the Raspberry Pi 4. Like many people, this was the initiator of my HomeLab about the same time last year. This was a 1Gb ram variant of the device but I have swapped its memory card into 2Gb variant.

So what my very first Pi is running? The very first service I remember was Pi-Hole. It's a network-wide ads and tracker blocking service. According to their website, it's a Black-Hole for ads and tracker. I wouldn't go that far but its definitely helpful, it blocks all the trackers in the default block list but the things it struggle with removing ads where the ads and normal content is served using the same server, sites like YouTube, Twitter, and Instagram.

You need to set up PiHole server as your default DNS provider. And when you try to access a website, your phone will ask the DNS server i.e. PiHole in our case to send the IP Address of requested domains, if PiHole founds that the website is trying to load a domains that are blocked, it will simply not sent the IP Addresses back to the device. It's an awesome little solution for blocking ads and trackers, network wide.

A picture of my PiHole dashboard
A picture of my PiHole dashboard

We all have that old printer that needs to be plugged in to a Computer for it to work right? I wanted to make that printer print wirelessly using my mac and even my phone. So here started my search for what could solve this issue for me.

The answer was CUPS. And to my surprise it was developed by Apple. So yeah, that ecosystem baby. But unfortunately my printer was not "officially supported" so it was a very painful and time consuming process but at the end I was able to set it up successfully. It doesn't has a nice dashboard like PiHole but still it does that's very important to me. I am able to print stuff directly off of my phone and it's awesome.

I haven't run in to trouble with Cups much often until that one time my 7Gb memory card was full and I was not able to figure out why the printer is not printing. But a simple upgrade to a larger memory card did the trick. This was the time I figured that a dashboard for all my diagnostics would by very helpful and choose to set up the TIG stack.

For the uninitiated, TIG stack is Telegraf, InfluxDB and Grafana. If I remember correctly, Telegraf is used to log all the inside InfluxDB which is then parsed by Grafana. A pretty neat system if you ask me. Currently I am running Telegraf on all my Pi's and logging it all data inside the same DB.

A screenshot for my Grafana Dashboard
My Grafana Dashboard

I have been meaning to update my dashboard to incorporate all the information for my servers into one but haven't got around to do that yet. If you want to see much better dashboards than this, you ought to visit r/selfhosted.

At this point remembering the port for every service was getting out of hand, so I found and configured heimdall in a docker container to contain all my services. This was probably the best idea for me as it aggregated all my services meaning I just need to remember one URL for all my services.

A screenshot of my Heimdal Dashboard
My current heimdall dashboard

Let's go into media side of things as I feel that's pretty interesting. One of the Pi is configured as my NAS (Network Attached Storage) which hosts all my media and photos. Every night at 11pm Rclone backs up to all my hard drives to Google Drive such that I have at least have a backup incase of hard drive failure or more importantly me accidentally deleting all my stuff because I didn't knew how raid filesystems works.

This Pi is running SMB, Netatalk and NFS. You may ask why. I would answer just because each serves a specific purpose. I generally use SMB to access files on my mac. Netatalk is for using my server to do regular TimeMachine backups. And NFS is used for when I need to mount my NAS to my other Servers. My NAS also handles my filesystems automation I have mentioned in the beginning.

My other Raspberry Pi is running different services such as Jackett, Sonarr and Radarr for managing and downloading my media. It is also running my transmission for downloading that sweet sweet Linux distros of the internet.

Talking of  downloading and managing media, I repurposed my old laptop as my Media Server. I have been using Plex but looking into if I could switch to open source and free service Jellyfin.

Last but not the least, my Digital Ocean droplet is running Bitwarden as my password manager as well as the site you are currently seeing. This way I don't have any public facing servers at my home because it can be a potential risk for devices at my place and also my ISP doesn't provide me with a public facing IP. 😬.

As for the Operating System, all my servers are running latest ubuntu server except my old laptop, it is running a hypervisor called Proxmox. A hypervisor allows you to create multiple VMs in it. This helps me run any new server at a moment notice to test out new services and automation. Currently it is running two VMs namely for Plex as well as Jellyfin both on ubuntu.

I really want to dive into the Smart Home stuff in the future. I want to use HomeKit as a base for my smart home but those devices are very expensive or straight up not available in India. I am planning to make my own and hack together some sort of solution with HomeAssistant and NodeMCU, let's see how it goes. 🤞

I also want a Google Photos type solution for my photos but sadly, I haven't found anything that does what google photos does namely grouping photos according to faces. I know some of you will see use iCloud but with over 900gb of photos in my library I don't think I can afford anything that is not self-hosted.

If you are planing to dive into creating your own HomeLab, I would say start small. Get a Raspberry pi and start with some of the most basic stuff. The feeling and joy of successfully hosting your first service is just immense. It wont be easy but trust me, it would be worth it.

Also if you are new to Linux CLI and/or planning to get better at it I would say self hosting is the best way forward. I can't tell you how many nights I have been awake till 4 in the morning to fix a problem that seems easy to me now. Don't get me wrong I am not a master in cli but I have definitely come a long way.

If you are stuck somewhere, and want some help, hit me up on twitter. I would do the my best to help you out. Until next time, peace.✌️