This page is going to be dedicated to all of the projects that I have either “completed” or ongoing, big or small.
Shelley – NAS
The infection vector for anyone who likes to tinker with computers in their spare time. You know it’s serious when you build a NAS, you’ve officially caught the bug, and there’s no stopping you. In its first form, this was a Raspbery Pi 3B with a USB HDD, in the next iteration I repurposed an old laptop (‘Clarke’ which is still going strong to this day). Finally, I custom built my own. This NAS has served me well, with an embarrassingly large amount of storage, a 2.5Gb NIC, a repurposed Ryzen 5 2600, 32GB of RAM, and an Nvidia Quadro P2000 for GPU accelerated tasks.
Please ignore the ‘GAMING’ branding on the motherboard. It was a good deal and met my specifications.
Pi-hole / Unbound DNS / Wireguard
Network wide domain blocking, local DNS caching, and a VPN. This solution is a perfect first project for someone with a spare Raspberry Pi, and wanting to start their homelab.
Since having this setup of Pi-hole operational, it has given me a greater peace of mind for my network, and those who are on it.
It has proven invaluable as a VPN, especially for when I’m out and about and have to deal with the hurdles of using public networks, such as domains being blocked and the added security Wireguard’s encryption provides.
OPNsense
If there’s anything I love, it’s cheap mini PCs from AliExpress for home projects. This was the first time I purchased one, and I’ve had to fight myself to not buy a whole fleet of these things. After watching ServeTheHome on YouTube review a bunch of PCs of this style, I decided replacing my stock router would be an appropriate project.
After a bit of tinkering I finally had this little machine up and running. Armed with an Intel Celeron J4125, 4GB of RAM, and 2.5Gb Ethernet, this silent little box is the perfect machine to take over as my router. This machine is much more powerful than it needs to be for my use case, but that just means I need to start adding more things onto my LAN, right?
This did come with some teething issues. For better and for worse there is no UPnP, meaning some services that were configured on my Shelley server had to be entered manually after finding out they weren’t reaching the outside world. The OPNsense UI also isn’t the most user friendly, with menus upon menus of options it’s perfect for configuring your home network to suit your specific use case. This sounds great, and now that I’ve gotten used to it, it is. However this was quite the shock coming from my old TalkTalk router which was far more user friendly.
Proxmox Virtual Machines
Question. Why buy many computers, when you can buy one computer and turn that into many computers? This is the joy of Proxmox, a virtualisation platform which allows you to spin up as many virtual machines as your heart (and hardware) allows.
It was also an excuse to buy another mini PC from AliExpress. This time making sure the CPU could handle virtualisation. With an Intel i3-N305, 16GB of RAM, and four 2.5Gb Ethernet ports, this machine does the job.
At present, this is the most recent machine in my inventory of projects, and thus other than proving I have the ability to setup a VM not much has been done. Saying that, I do have some ideas…
Having kubernetes on the Pi cluster is great, but due to the architecture being arm64, not all applications are available and run smoothly. I feel this could be mitigated by having a small virtualised cluster within Proxmox, as x86-64 is the most common CPU instruction set and therefore most appliations should work by default.
As a nerdy type, I have several domains that I’ve purchased for various projects. While I’m no stranger to hosting sites and web applications, I’ve never hosted a mail server, but I sure would like to! Having a VM be a mail server would be a hands-on way to learn how they work and what is required to get them operating. If it all goes wrong to the point that it’s unsalvageable, I can simply delete the VM and start again.
Of course there are more ideas for what can be done with this machine, but I won’t write out all of them. This just shows there is room to grow, and I’m excited to put in more work with these concepts.
The Map
If you’ve read a good chunk of the home page, you will see the diagram of how a web request is served to clients from the cluster. But this cluster is only part of the story. As a tech enthusiast (nerd) other computer projects are always happening. This is the most updated state of all the technical goings on of my home lab setup.
This diagram, and the one on the home page, was made using draw.io on the very same cluster which is hosting this website!
Future Projects
OpenWRT on the TP-Link AC1350 (EAP225)
Everyone has a wireless device or two, whether it’s’ a games console, phone, laptop, or smart devices that require connecting to the WiFi. Having ditched my stock router for a custom mini PC with OPNsense as the OS, doing the same to the access point seems like a no brainer! However every time I’ve attempted to wipe the TP-Link firmware and replace it with OpenWRT something goes wrong, usually the AP saying it’s a ‘bad file’ despite following the instructions. The site shows the EAP225 in the supported column, but the lack of info displayed in the table for the v5 makes me uncertain. I’m sure I’ll figure it out at some point…
Python Flask
I’m not sure how it happened, but I suddenly had the urge to write my own API. I also don’t know what I would use it for, or what the API would contain, but my nerdy little goblin brain thought “Wow, that would be a fun thing to do! Maybe I could dockerise it! Maybe I could run it in a VM! OOH I could host all the code on my local GitLab!” and it hasn’t left my thoughts ever since.
I just need to think of something to create. I’ve been looking through the web for ideas, and nothing has struk me yet, but I don’t want to put those Humble Bundle python books to waste, so this is another idea to be stored for future use.
MetalLB
At present, the cluster which you’re reading this site on uses Traefik to distribute traffic. It works well, but I still have to point to an individual Pi before the traffic gets rerouted. This doesn’t seem very efficient in my mind.
With MetalLB, it creates it’s own IP for the service that requires load balancing, therefore ensuring a more even distribution of traffic. However, it seems with my current configuration that MetalLB doesn’t want to work. This will require tinkering that will probably cause things to break and get worse before they get better, but isn’t that the joy of things?