Of my five blog posts prior to this, I consider three of them "real" posts. These are "Renaming an Active Node in a Proxmox Cluster", "Notes for Self-Hosting an ATProto PDS", and "Welcome to the ATmosphere!". In each of these prior posts, I made some allusion to my personal Homelab, a set of hardware spread between two (or three, if you count my Oracle Cloud server) locations running nearly everything that is accessible on shad.moe and konpeki.solutions. I think it's about time I actually write about this homelab, and more-so why I have a homelab in the first place.
Definition: Homelab
"...Homelab is the name given to a server (or multiple server setup) that resides locally in your home and where you host several applications and virtualized systems for testing and developing or for home and functional usage."
"This server can be a simple tower or small PC or a Raspberry Pi like device or a repurposed professional server that you can acquire from companies who discard them due to their age but are still usable." - Helder - Linux Handbook
Actually, I disagree with this definition slightly. Where Helder specifies that the server "resides locally in your home", I think that can be loosened a bit. This is indeed generally true, but there can be exceptions - your definition of a homelab can be different! At its core, a homelab is a machine or set of machines in your control on which you can run basically whatever you want! Some people make lists of their "recommended" services to host, but I won't be doing that. What I host can vary quite a bit from what you may want, so instead I'll direct to this directory of selfhostable apps that you can explore at your leisure.
Instead, my aim in writing this is to talk about my personal homelab, and why you should consider creating your own!
Supplemental Information NoticeMuch of this post consists of information about my own homelab setup. For this reason, a lot of what I talk about may contain links to other resources about this software / hardware. If you are interested in learning about a piece of my homelab, feel free to follow the links! A lot of the discussion about my setup will be information dense, and the links will help to better explain a given topic for your own use.
My Hardware
I've talked in some length about my own Homelabbing equipment in my previous posts. At the time of publishing, my setup currently consists of two Dell PowerEdge R640 servers and one Dell Optiplex 5040. I also have two Oracle Cloud free tier VPS servers. The networking side of things is much more varied.
Currently, the two R640s are in a dorm room on the Purdue University campus, which are soon to be moved as the semester winds up. For those two servers, an HP ProCurve 2910al-48G switch is used for local communication (as well as other clients in my dorm room), which is routed through an old Netgear WNDR3400 router running dd-wrt, which is connected to Purdue's network. At home, an hour and a half away, my Optiplex sits in a laundry room with a direct ethernet connection to the router there.
Communication between these servers is handled via Tailscale, on their free tier. I am a fan of Tailscale, and have explored alternatives (Headscale, Netbird, Self-Managed Wireguard) but kept returning to Tailscale in the end. All World-Accessible endpoints (mostly everything hosted on shad.moe, konpeki.solutions, or their subdomains) are routed to the two Oracle Cloud VPSs, which have the primary purpose of proxying traffic to the internal servers.
So... Why bother homelabbing?
Personally? I find homelabbing fun. Some people lab for learning, others to reduce their reliance on corporate oversight, and many others lab for reasons I don't know. My homelab is what I jokingly call a "High Downtime Environment". I break things, often, and the perceived usefulness or interest any given puzzle piece provides determines if it gets fixed or stays broken. This is a good thing! This freedom allows me to do a lot more than I could in a constrained environment.
I also enjoy playing with new software. Having a Homelab provides a perfect environment to tinker and put things into production! The most recent example I have is Anubis. I do care a bit about resiliency, and security, so Anubis immediately struck my interest.
What is Anubis?
"Anubis weighs the soul of your connection using a sha256 proof-of-work challenge in order to protect upstream resources from scraper bots."
"This program is designed to help protect the small internet from the endless storm of requests that flood in from AI companies. Anubis is as lightweight as possible to ensure that everyone can afford to protect the communities closest to them." - Anubis Documentation - April 2nd, 2025
I heard about Anubis directly from the source: a Bluesky post made in late March by the original developer, Xe Iaso. If you haven't heard of them before, I highly recommend checking out their site and blog! Anubis was a tool created to solve a specific problem: AI Scrapers bullying websites with overwhelming amounts of requests in their thirst for more data. I won't be able to do right by the first of Iaso's blog posts on this, so I highly encourage checking their post out yourself.
Anubis is the latest example of software I thought was interesting and/or could serve a useful purpose to me. Soon after I learned about Anubis, I overhauled my outward-facing networking (previously a number of muddled proxies between the world and my servers), and simplified the flow while implementing Anubis at the same time. Anubis doesn't work on some of my subdomains - it's not supposed to work on everything! - but for those it does, it now protects. This includes my Forgejo/Git instance and my SearXNG instance for example.
However, it's important to know that homelabbing can be time consuming if you let it, and you will oft find something broken for you to fix.
There's Always Trouble in Paradise
Even now, as I begin the process of writing this blog post, I had to stop writing to fix a bug I noticed. I was on Bluesky, and I attempted to follow the account @techaro.lol, the company behind Anubis. I noticed however that while the BlueSky AppView reported for a moment that I now follow the account, BlueSky quickly forgot this fact and re-displayed the blue "follow button". After some investigation, I discovered that this was because of a change I had made on a whim, which had consequences I hadn't anticipated. Let me walk you through the journey I took to get this fixed - I documented each step as I took it to include in this post.
First, I tried to access my Nginx logs to check the network traffic to my self-hosted data server. I grabbed my phone to open the Proxmox mobile app, but I soon remembered I had been working on moving Nginx to a NixOS-based machine instead, so I would need to access that machine rather than one of my Proxmox containers. Unfortunately, the SSH key to connect is on a hardware token my phone wasn't immediately able to use. So, I grabbed my laptop - and found it dead. After plugging it in and turning it on, I attempted to SSH into the Nginx container to discover that I still couldn't access it; I had changed the SSH port earlier and forgot to allow the new port in the firewall. Luckily, one quick configuration change later, and I was in! And yet, after all of that, the access logs looked fine. Any calls to the PDS were returning code 200 (HTTP code for "OK") and no errors were being posted.
What gives? Well, further research online and in the "AT Protocol PDS Admins" Discord server turned up similar occurrences for instances with WebSockets incorrectly configured. This couldn't be my issue though - I had just added proxyWebsockets = true;
to all my Nginx configurations some hours ago! It couldn't be possible that WebSockets weren't being proxied. ...Right?
Wrong, and it's because I made a mistake. The configuration file that defines the url for the PDS instance, $/machines/servers/barrier-nginx/nginx/solutions/konpeki/default.nix
, had apparently been overlooked and never had this configuration set! Of course, adding the single missing line immediately resolved my issues. Problem solved! Now I can follow Techaro, and re-like the few post I had attempted to like in the downtime.
A Place to Try New Things, and Break Old Ones
I host a fair amount of services on my personal hardware. For example, even this blog is running in two parts, an Astro frontend and my ATProto Personal Data Server. Both of these are hosted on different LXC containers, further separated from the Nginx server which is hosted on a free Oracle Cloud machine (one of the 1GB ram, 1 oCPU machines). While this may seem intimidating, I manage my efforts to prevent it from being a burden. Keeping my homelab together can be a chore at times, but it should never become like a job!
Allowing myself these freedoms opens up doors to the ability to make changes that you otherwise couldn't in a more "production" or "corporate" setting. Most companies obviously wouldn't allow an employee to haphazardly prop up software or reconfigure hardware that interests them with the ease you can in a homelab. In the same vein, I would be fired on the spot if I started completely reinstalling an entire server's operating systems just because I "wanted to try NixOS".
In fact, some people do treat their Homelabs as if they were in a company setting! I personally do a mix of both - many of my services run on the shad.moe domain, often more personal services like my blog or my RSS Aggregator. However, I also make use of the name Konpeki Solutions for anything I target to be more like a company. This includes the domains konpeki.solutions and konsol.internal, which host my BlueSky PDS.
What is Konpeki SolutionsKonpeki Solutions is a strange construct. It is an example company name, a legal name (currently as a DBA, with plans to incorporate using the name if/when I need to form a Corporation for something), and the setting of a fictional corporation. This fictional corporation and it's employees (the universes' characters) will someday appear in some form brought to life by me and my sibling @axoblu. I will write more about Konpeki Solutions / KonSol in a future post.
This type of organization of your homelab can help guide you in certain directions, and is a good way to focus your efforts! Sometimes having self-imposed constraints can make things more interesting and easier to work on then having no idea what to do next.
On top of this, this environment allows me to make mistakes and learn at a pace that far surpasses what i could achieve without. Simply having a two-node Proxmox cluster has given me knowledge that many people wouldn't have prior to working in a more corporate Proxmox environment - and even in that case, I have a much deeper knowledge of some of aspects than the average tech would. (See my Proxmox Cluster Post for an example. I'd bet most people haven't had to hand repair a Proxmox Cluster!)
How does one start a homelab?
You can make your homelab as simple or as complicated as you want! There are plenty of reading resources on creating a homelab, and I've included some of my personal favorites.
- r/homelab on Reddit - A Reddit Community of other Homelabbers. Typically more hardware focused.
- r/selfhosted on Reddit - A Reddit Community of people self-hosting services for their own uses. Typically more software focused.
- Self-Host Weekly Newsletter - A Weekly Newsletter that shares updates in the self-hosting community, including new software, updates to software, and other general news.
- Self-Host Apps Directory - A directory of self-hostable apps, managed by the same person behind the Self-Host Weekly Newsletter.
As well as these resources, I've drafted a few different categories of ways you can start a homelab below. Feel free to read them all, or skip to the category that interests you most!
DisclaimerThe following suggestions are a mix of personal experience and information I've heard from friends and online. Always know what you're buying, what the policies on return are, etc. TL;DR - Treat your money with the care it deserves!
I don't want to purchase anything
There are many ways to begin a homelab without spending a cent! Whether you want to get a taste of the experience or you want to avoid ever spending money, you have plenty of options. Some good places to start are with software that runs in Docker containers, as you can easily run a handful of these in the background on an existing desktop machine. If you have old hardware laying around, such as an old laptop, this can also make for a great start to a Homelab! Installing a Linux distribution (preferably without a graphical environment if it will be a server) is a great way to breathe some extra life into old tech you have laying around, and often times what you thought was e-waste can be a decent host.
I want to own my hardware
Personally, each of my physical servers were obtained thanks to the Purdue University Surplus Store. I've spent 350 US Dollars there, which seems like a lot at first glance, until you compare to the hardware. Each of my two R640s were obtained for 100 US Dollars each, while the Optiplex and the HP ProCurve switch were about 50 US Dollars each. These are really good deals on older server hardware, and everything worked great! I've since upgraded the RAM in the Optiplex and did have to purchase storage for each machine, as they don't come with their storage installed for data security reasons. If you don't have a similar store nearby, there are other places you can look for deals. Government and other Surplus sites online may offer hardware if you can arrange shipping, and sites like eBay can have some good deals as well.
Of course, you don't need enterprise grade hardware either! In fact, for a lot of people this is an anomaly. Like if you were to purchase nothing, old laptops and desktops can be great servers. You can often get these for cheap (know the worth of what you're buying though!), and in some areas even free! Ask some friends if they have old tech they don't want anymore, hit up your local e-waste collections facility (some are amiable to letting you have some of their collected hardware, but most aren't. They have to make money somehow!), or even check with your workplace, school, etc. to see if you can requisition some old hardware destined for recycling or destruction. As with before, in almost every case you'll have to provide your own storage, and these methods are more likely to net you broken tech. For some people, fixing their hardware is part of the fun! For others, inspect anything before you buy or otherwise requisition it if possible.
I want to rent a server
Renting a server is another way to get a machine to self-host a homelab. I can't recommend any service providers myself, but a number of Cloud Service Providers (CSPs) offer Virtual Private Servers you can rent on a timed basis. You'll often expect to pay for CPU hours, Network Ingress/Egress, etc., but CSPs have the advantage of uptime guarantees, fast networks, and no physical maintenance requirements. If you've heard of Amazon Web Services, Google Cloud, or Microsoft Azure, you have an idea of what a CSP is. Many CSPs have free trials and free tiers, but they often end up with unexpected charges. Keep this in mind if you go this route!
Oracle Cloud Free TierOracle Cloud has a generous Free Tier for customers to try out, but I cannot recommend it despite the fact I use it myself. Oracle has a long history of shutting down free tier customer's machines[1], deleting entire accounts[2], and preventing sign ups in the first place if they happen to decide they don't like your email, location, credit card, etc.[3] Unless you're willing to deal with these headaches, avoid Oracle Cloud.
Conclusion
To some people, a homelab is a daunting idea. They may have heard stories about the amount of time, or effort, or cost some people put into their own homelabs, or maybe they just don't know where to start. My goal in writing this post is of two parts - first, to write about an interest of mine. Secondly, however, I also hope to convince you - the reader - that a homelab isn't this overwhelming concept. As with many things, a homelab is what you make out of it. You can put in as much or as little effort as you want. Maybe you want to host one or two services for yourself, or maybe you want to create an entire miniature network. Maybe you want to learn about Microsoft Active Directory, or maybe you want to participate in a community like DN42, participating in a peer-to-peer BGP routed network!
All this is to say, don't concern yourself with making a "perfect" or "correct" homelab. Anyone who has their own homelab will tell you that it can never be perfect. Something will always break, something can always be added, something can always be tweaked. In my own opinion, a homelab is not a static entity, it evolves with you.
Authors NoteI always try to write my blog posts semi-professionally, but always ending with a "Conclusion" feels almost too professional... I aim to write for a wider audience, often as an outlet for whatever I feel like writing about. If you have anything I may find interesting, or comments about this (or any!) post, don't hesitate to reach out on Bluesky or via email!
References
[1] r/oraclecloud on Reddit - How possible Oracle shut down my always free resources instance?
[2] r/oraclecloud on Reddit - Just like everybody says, Oracle Free Tier suddenly deletes your account
[3] r/oraclecloud on Reddit - Can't sign up for free tier