{
  "$type": "site.standard.document",
  "canonicalUrl": "https://justingarrison.com/blog/2025-03-09-getting-started-with-self-hosting",
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreie2ipmhatbqi2lnpwoe2tcprd52jla5tctk7rfsvjlstrmzyx5r4a"
    },
    "mimeType": "image/png",
    "size": 143354
  },
  "description": "Taking ownership of your data and services",
  "path": "/blog/2025-03-09-getting-started-with-self-hosting",
  "publishedAt": "2025-03-10T04:00:17.000Z",
  "site": "at://did:plc:p7uix7mresfq4nfzxp3klgfa/site.standard.publication/3mmdn7mg2qm2d",
  "textContent": "I've been running a home lab in various states for over 20 years.\nI'm not trying to be completely self-reliant and I don't think that SaaS software is bad--although increasingly this is the case.\nI just wanted to have some ownership over my data and I didn't have a lot of money to pay for cloud storage or services, but I did have cheap computers and free time.\n\nTwenty years later I have more money than time but I still run a decent amount of hardware for my home lab.\nSomeone asked me how they should get started with self-hosting so I'm writing it down to share what I've learned after years of changing requirements and multiple hardware iterations.\n\nMy advice is to build your home lab in this order:\n\n1. Storage\n2. Network\n3. Applications\n\nIf you have a specific need you should always start there first, but if you're not sure and you want to learn some new things, this is a general road map.\n\nStorage\n\nStorage always ends up being the most critical piece of infrastructure.\nIf your applications or network are down you're probably having a bad day.\nIf you lose your storage you're having a bad month--or more if you don't have backups.\n\nThe reason I say to start with storage is it's critical for applications later and it's the easiest to calculate money saved over time.\nIt also comes in really handy to increase your speed to data and access to data during network outages.\n\nBut it's usually not the _only_ storage you need.\nI have a lot of local storage but I still end up paying for multiple cloud storage services.\nBut that's not because I don't have enough storage locally, but rather those services require I use their storage (e.g. gmail).\n\nOver time I plan to replace some of those services that have more flexible storage options, but I don't suspect I'll every be completely free from some amount of cloud storage.\n\nThere are a couple different options to run storage locally.\nI call these using an appliance or doing it yourself (DIY).\n\nAppliance\n\nI currently use a Synology NAS.\nIt's not the most performant and not the cheapest option, but I've had it for almost 10 years and it's still running strong.\nOnly after I upgraded some of my network equipment to 2.5GiB did I want to upgrade my Synology.\n\nI've had various appliances in the past (e.g. Buffalo, Windows Home Server) and all of them either had hardware failure or stopped receiving software updates.\nYou don't have to get a Synology, but I've found at a great way to get started.\nThey have a decent community and apps you can run, and it's more like an appliance than a full computer.\n\nAppliances are good because you don't mess with them too much.\nThey just do their job and you forget about them.\n\nI know plenty of people have had mixed experiences with different NAS appliances so do a bit of research, figure out what you need, and you'll probably be able to use it for at least 4 years.\n\nDIY\n\nThe build it yourself NAS community has come a long way in the past 8 years.\nI've run a few Debian servers with cifs-tools installed and software RAID cards.\n\nThey were really cheap to get started but were limited by how much I knew to make them work.\nUpgrades were also a lot more time than dedicated distros and appliances.\n\nThere are quite a few options for off-the-shelf storage distros which are really powerful and simpler than a general purpose Linux distro.\nUnraid, OpenMediaVault, and FreeNAS all look like great options.\nI have limited experience with them, but I hear good things from friends.\n\nMy problem with any DIY option is I never leave it alone.\nOnce I know it's a full Linux distro I always make it do more than it should and end up making it hard to maintain.\n\nNetwork\n\nI see people build out complex network infrastructure.\nThis is partially for security reasons and partially for masochistic fun.\n\nNetworks are really cool and really powerful.\nThey also have a few different critical services you can ease yourself into when trying to be more self-reliant.\n\nI usually see network ownership as optional.\nI've run Linux servers as routers, re-flashed routers (e.g. OpenWRT), and off-the-shelf hardware.\nThis depends on how much you want to do and how much performance you need.\n\nI usually swing from completely off-the-shelf to completely DIY depending on how frustrated I am with my current limitations or how much time it's taking me to maintain.\n\nDHCP\n\nYour DHCP server is something so simple most people don't even think of it as a service.\nIt's a dumb database that hands out IP addresses.\n\nBut it can be very powerful with DHCP options and controlling access between your devices.\n\nRunning your own DHCP server can be an easy evening project or a complex, month-long inventory and isolation adventure.\nThere is no in between.\n\nDNS\n\nDNS servers usually get run for their powerful ad blocking abilities.\nPi hole, Adguard and others make DNS useful and mostly painless.\n\nI have another article that compares DNS servers, but this is one of the critical things people usually want to replace on their networks.\n\nThe nice thing about running alternative DNS servers is they can be added on to your network without turning off the default DNS.\nThis makes it easy to experiment with only a few machines and still have a working fall-back when things break.\n\nVPN\n\nVPN isn't always a requirement, but once you have it you realize just how useful it is.\nIt can range from traditional VPN services like OpenVPN or newer networking overlays like Tailscale.\n\nEveryone has a different use case for a VPN, but it's frequently a service more self-hosters are using.\n\nNetworking hardware\n\nThis is where it gets really expensive and time consuming.\nSome people love it, some people hate it.\n\nYou can learn a lot by getting used enterprise equipment and running it for a while.\nThis can lead to job offers or relationship break-ups at probably the same frequency.\n\nThere's also a lot of options like mikrotik and Unifi which AFAIK have all the same features as the enterprise gear, but at a more affordable price and smaller scale.\n\nApplications\n\nThis is usually where people try to start and often where they stop.\nRunning applications is hard.\n\nYou directly interact with it and rely on it, but if you don't have any experience in keeping it updated you'll end up with bugs and downtime.\nNobody likes that.\n\nMost applications rely on some amount of stable storage which is why I recommend starting there.\n\nApps are sometimes background services like syncthing, or they can be apps you use a web interface or mobile app like immich or Plex.\nNo matter what, you're going to want to figure out how to run them and how to keep them updated.\n\nApps usually are the most direct money savings because you can sometimes replace a hosted service like Dropbox directly.\nOnce you replace 2-3 services you were paying $10/mo for you'll be hooked on running more.\n\nThe balance comes from not running too much which requires more maintenance and usually requires occasional debugging.\nAfter trying to fix one too many bugs with software I relied on I've found a decent balance of some things I'm willing to pay for and others I'm willing to run myself.\n\nThis is another reason I like Synology because although I don't find any of their applications great, I find a lot of them good enough.\nTheir upgrade process is usually painless and I appreciate that.\n\nThere's a long list of apps your can run yourself and I won't exhaust it here.\nBut I will recommend sticking with containers where you can.\nThe portability, testability, and automation aspects alone have been well worth it for me.\n\nDistributed systems\n\nI'll mention VM management software like Proxmox and container orchestration like Kubernetes only because they often come up in conversations.\n\nTo me, these are advanced topics and nothing above requires these to be useful.\nUsually people run an orchastrator or something like Proxmox because they want to learn those tools more than they want to run an application.\n\nThis is perfectly fine, it's why I started building home Kubernetes labs and has taught me a lot over the years.\n\nI've run HyperV, ESXi, Proxmox, and various other solutions and I never rely on them for family facing applications (a.k.a. homelab production).\nFor me those have always been learning playgrounds and not stable platforms.\n\nIf you want to throw everything in a Kubernetes cluster on Talos Linux and manage it all with GitOps, be my guest.",
  "title": "Get Started With Self-Hosting"
}