<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/pretty-feed-v3.xsl"?>
<rss
  version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:source="https://source.scripting.com/"
>
  <channel>
    <title>Paul Tibbetts</title>
    <link>https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/tags/homeops/</link>
    <description>Recent posts by Paul Tibbetts on homeops</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Thu, 07 May 2026 12:50:40 +0100</lastBuildDate>
    <atom:link href="https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/tags/homeops/feed.xml" rel="self" type="application/rss+xml" /><item>
      <title>HomeOps Tour: Hardware</title>
      <link>https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/2026/05/21/homeops-tour-hardware/</link>
      <pubDate>Thu, 21 May 2026 13:35:06 +0100</pubDate>
      <guid>https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/2026/05/21/homeops-tour-hardware/</guid>
      <category>homelab</category>
      <category>homeops</category>
      <description>The first stop on my HomeOps Tour covers the hardware I use.</description>
      <content:encoded><![CDATA[<p>The first stop on my HomeOps Tour covers the hardware I use.</p>
<p>It&rsquo;s a mix of &ldquo;too expensive&rdquo; and &ldquo;I should have spent more on this&rdquo;.</p>
<p>None of this was designed all at once. It&rsquo;s the result of buying things for one reason, repurposing them for another, and slowly discovering a stable setup.</p>
<h2 id="what-its-for">What it&rsquo;s for</h2>
<p>HomeOps is the boring half of my homelab: the part that runs the services I actually depend on.</p>
<p>It started as an all-in-one server, but I eventually moved away from that. It was convenient until it wasn&rsquo;t; every change was risky.</p>
<p>Splitting it up gives me more to manage, but also a smaller blast radius when something goes wrong.</p>
<h2 id="overview">Overview</h2>
<table>
	<thead>
			<tr>
					<th>Device</th>
					<th>Role</th>
					<th>Purpose</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>NAS</td>
					<td>Storage</td>
					<td>archiving, media, network shares</td>
			</tr>
			<tr>
					<td>NUC</td>
					<td>Server</td>
					<td>apps, databases, services</td>
			</tr>
			<tr>
					<td>VPS</td>
					<td>Tunnel</td>
					<td>external entry point for tunnel access</td>
			</tr>
			<tr>
					<td>Pi</td>
					<td>Monitoring</td>
					<td>monitors everything else</td>
			</tr>
	</tbody>
</table>
<p>Each of these devices could do more than they currently do, but I&rsquo;ve tried to keep their roles separate.</p>
<p>They are more like pets than cattle: the software is reproducible but the machines are not disposable.</p>
<h2 id="nas">NAS</h2>
<p>I have a dedicated machine for Network Attached Storage. I built it myself; the specs are <a href="https://github.com/paultibbetts/homeops/tree/main/hardware/nas">in the repo</a>
. It runs <a href="https://www.truenas.com/">TrueNAS</a>
 and is the central place for storage, backups, archiving, and media.</p>
<p>Storage is shared over NFS for Mac and Linux, and SMB for Windows. The only app the NAS runs is <a href="https://www.min.io/">minIO</a>
, which provides S3-compatible storage. minIO changed its license recently so I am eventually going to swap it for something else.</p>
<p>It has 4TB of NVMe storage, which is the pool I use most often. My NAS and PC are connected through a small 10GbE switch, so from my PC it feels like the drives are plugged in directly. These drives are <strong>not</strong> set up in a RAID array, so if one failed I would lose data.</p>
<p>For archiving and longer-term storage it has 4 x 6TB HDD set up in a RAIDZ2 array, which means 2 of the drives could fail before I lost data. Anything important is copied to the RAIDZ2 pool, which is why I&rsquo;m comfortable running the NVMe drives without redundancy. <a href="https://www.raidisnotabackup.com/">RAID is not a backup</a>
, so I <em>should</em> back this data up to an external location, but I&rsquo;m yet to set this up.</p>
<p>It was originally made up of spare parts from an old gaming PC but I decided I wanted <abbr title="Error Correcting Code">ECC</abbr> memory. That meant replacing the CPU and motherboard with parts that supported it, and the affordable options were older server components. At this point the only gaming PC parts still in use are the case and the PSU.</p>
<h3 id="review">Review</h3>
<p>Those older server components are less efficient and more power-hungry than newer ones would be.</p>
<p>It was expensive. I made the decision that storage was important enough to justify ECC memory, but plenty of people choose to go without it. ECC is there to protect against memory-related corruption, and I don&rsquo;t know whether it&rsquo;s ever actually done that.</p>
<p>It&rsquo;s overpowered and underutilised for its current role, mostly because it used to do everything and now it just does storage.</p>
<p>However, it plays a major part in my HomeOps setup, so it&rsquo;s definitely worth its place.</p>
<p>If you have a homelab, or even just multiple computers in one household, you would benefit from a NAS. It doesn&rsquo;t need to be an expensive one like mine though.</p>
<h2 id="nuc">NUC</h2>
<p>I use an Intel NUC as my server. Specs are <a href="https://github.com/paultibbetts/homeops/tree/main/hardware/nuc">in the repo</a>
.</p>
<p>Originally I used my NAS as a server, until I found that messing with it made it unstable, so I stopped doing that and looked for something else. I bought something from Kickstarter, and in true Kickstarter fashion it was delayed multiple times, and eventually I got impatient and bought the NUC.</p>
<p>It&rsquo;s modern and pretty power efficient, which means running it is much cheaper than the NAS made out of older components.</p>
<p>The CPU has 12 cores and 16 threads, which gives me plenty of headroom for virtualisation. I have <a href="https://www.proxmox.com/en/products/proxmox-virtual-environment/overview">Proxmox</a>
 installed and use it to run 9 virtual machines and 1 LXC. This lets me split services across separate environments instead of installing everything directly on one host, so a problem with one service is less likely to affect the others.</p>
<p>The LXC is for Jellyfin, which is self-hosted Netflix for movies I store on my NAS. The NUC has an integrated Intel GPU that supports <em>Quick Sync</em>, which Jellyfin uses for hardware-accelerated transcoding. This means I can watch my movies from any device and let the GPU do the transcoding, leaving the CPU available for the other services hosted by the NUC.</p>
<h3 id="review-1">Review</h3>
<p>The NUC is an excellent home server. It&rsquo;s not enterprise hardware with redundant power supplies and room for expansion, but its size and efficiency make it a great fit at home.</p>
<p>The trade-off is that it&rsquo;s not a box for lots of disks. Mine has room for an SSD boot drive and the NVMe I use for local data. After that I needed to pair it with my NAS for extra storage.</p>
<p>It has a 2.5GbE NIC. That is not as fast as the 10GbE link to the NAS, but is more than enough for what I use it for.</p>
<p>If I started again and didn&rsquo;t need much local storage, a machine like this might be all I needed.</p>
<p>Unfortunately Intel has stopped making these but places like <a href="https://www.minisforum.uk/">Minisforum</a>
 make ones that are similar.</p>
<h2 id="vps">VPS</h2>
<p>The VPS is the only machine in this setup that I don&rsquo;t physically own. It&rsquo;s rented from <a href="https://www.hetzner.com/">Hetzner</a>
.</p>
<p>It is the public side of my &ldquo;tunnel&rdquo; setup, which I&rsquo;ll explain in a future post. The services I run are hosted at home and this VPS gives me an entry point without directly exposing my home network.</p>
<p>There isn&rsquo;t much to say about it. Hetzner is some of the cheapest European hosting I could find, and even though the VPS is located in Germany it doesn&rsquo;t add any real delay to my connection.</p>
<h2 id="monpi">MonPi</h2>
<p>The final part of the setup is the Raspberry Pi that monitors everything else.</p>
<p>The reason it exists is separation. I didn&rsquo;t want to run monitoring on the same machines that host the services. If the NAS or the NUC has a problem, a separate device has a better chance of catching it.</p>
<p>It runs two types of monitoring: Uptime Kuma for service uptime checks, and Beszel for host metrics. I&rsquo;ll cover these in more detail later in the series.</p>
<h3 id="review-2">Review</h3>
<p>The Pi works great for monitoring, but for this particular model that&rsquo;s about all it can do.</p>
<p>It was originally called &ldquo;DeskPi&rdquo; and was plugged into a screen to show a live output, but because it has only 2GB of RAM it struggled to run the desktop environment and I quickly gave up on that idea.</p>
<h2 id="whats-missing">What&rsquo;s missing</h2>
<p>There are two pieces of hardware people might expect to see listed here that I don&rsquo;t yet have: a custom router and a <abbr title="Uninterrupted Power Supply">UPS</abbr>.</p>
<p>I still use the router my ISP gave me, instead of something like OPNsense or pfSense. I&rsquo;ve worked around some of its limitations by letting Pi-hole handle DHCP - more details on that in the Pi-hole post. I will be moving soon, and when I get settled I&rsquo;ll start working on the router.</p>
<p>The UPS will come after. It is risky running a NAS without one, but I live in the UK, and in the five years I&rsquo;ve lived in this house there&rsquo;s been exactly one power cut, so I haven&rsquo;t felt the need to prioritise it.</p>
<h2 id="not-highly-available">Not Highly Available</h2>
<p>The obvious limitation of my setup is that it&rsquo;s not highly available.</p>
<p>Splitting storage, compute and monitoring across different machines gives me cleaner roles and a smaller blast radius than the all-in-one server I started with. It does not mean the setup can survive any of those machines breaking.</p>
<p>If the NUC dies, my services go offline. If the NAS fails, the storage layer is unavailable. If the VPS has a problem, friends and family can&rsquo;t get through the tunnel. MonPi monitors the setup, but nothing is monitoring MonPi.</p>
<p>There is an old redundancy saying that &ldquo;two is one and one is none&rdquo;. That applies here, but in different ways at different layers. The NAS has redundant disks, but it is still a single machine with one motherboard, one power supply and one network path. The NUC is a single host, so the VMs and containers running on it have nowhere else to fail over to.</p>
<p>Making the NUC highly available would mean running multiple Proxmox nodes. That means not just two machines, but three, so Proxmox can <a href="https://pve.proxmox.com/wiki/High_Availability">maintain quorum</a>
.</p>
<p>That would be a better <abbr title="High Availability">HA</abbr> design, but it would also mean more hardware and more power usage.</p>
<p>For now, I have accepted that my setup might have downtime because that is the trade-off that keeps it affordable and manageable at home.</p>
<h2 id="next">Next</h2>
<p>That&rsquo;s the hardware covered for my setup.</p>
<p>The important thing is not that any individual machine is special, it&rsquo;s that each one has a clear job. The NAS stores things, the NUC runs things, the VPS provides the public entry point, and the Pi monitors it all.</p>
<p>It&rsquo;s not perfect, and it&rsquo;s not highly available, but it&rsquo;s much easier to work with than the all-in-one server I started with.</p>
<p>Next I&rsquo;ll look at the storage layer in more detail: how I use TrueNAS for network shares, archives, and the storage services that support the rest of the setup.</p>]]></content:encoded><source:markdown>
The first stop on my HomeOps Tour covers the hardware I use.

&lt;!--more--&gt;

It&#39;s a mix of &#34;too expensive&#34; and &#34;I should have spent more on this&#34;.

None of this was designed all at once. It&#39;s the result of buying things for one reason, repurposing them for another, and slowly discovering a stable setup.

## What it&#39;s for

HomeOps is the boring half of my homelab: the part that runs the services I actually depend on.

It started as an all-in-one server, but I eventually moved away from that. It was convenient until it wasn&#39;t; every change was risky.

Splitting it up gives me more to manage, but also a smaller blast radius when something goes wrong.

## Overview

| Device | Role       | Purpose                                |
| ------ | ---------- | -------------------------------------- |
| NAS    | Storage    | archiving, media, network shares       |
| NUC    | Server     | apps, databases, services              |
| VPS    | Tunnel     | external entry point for tunnel access |
| Pi     | Monitoring | monitors everything else               |

Each of these devices could do more than they currently do, but I&#39;ve tried to keep their roles separate.

They are more like pets than cattle: the software is reproducible but the machines are not disposable.

## NAS

I have a dedicated machine for Network Attached Storage. I built it myself; the specs are [in the repo](https://github.com/paultibbetts/homeops/tree/main/hardware/nas). It runs [TrueNAS](https://www.truenas.com/) and is the central place for storage, backups, archiving, and media.

Storage is shared over NFS for Mac and Linux, and SMB for Windows. The only app the NAS runs is [minIO](https://www.min.io/), which provides S3-compatible storage. minIO changed its license recently so I am eventually going to swap it for something else.

It has 4TB of NVMe storage, which is the pool I use most often. My NAS and PC are connected through a small 10GbE switch, so from my PC it feels like the drives are plugged in directly. These drives are **not** set up in a RAID array, so if one failed I would lose data.

For archiving and longer-term storage it has 4 x 6TB HDD set up in a RAIDZ2 array, which means 2 of the drives could fail before I lost data. Anything important is copied to the RAIDZ2 pool, which is why I&#39;m comfortable running the NVMe drives without redundancy. [RAID is not a backup](https://www.raidisnotabackup.com/), so I _should_ back this data up to an external location, but I&#39;m yet to set this up.

It was originally made up of spare parts from an old gaming PC but I decided I wanted &lt;abbr title=&#34;Error Correcting Code&#34;&gt;ECC&lt;/abbr&gt; memory. That meant replacing the CPU and motherboard with parts that supported it, and the affordable options were older server components. At this point the only gaming PC parts still in use are the case and the PSU.

### Review

Those older server components are less efficient and more power-hungry than newer ones would be.

It was expensive. I made the decision that storage was important enough to justify ECC memory, but plenty of people choose to go without it. ECC is there to protect against memory-related corruption, and I don&#39;t know whether it&#39;s ever actually done that.

It&#39;s overpowered and underutilised for its current role, mostly because it used to do everything and now it just does storage.

However, it plays a major part in my HomeOps setup, so it&#39;s definitely worth its place.

If you have a homelab, or even just multiple computers in one household, you would benefit from a NAS. It doesn&#39;t need to be an expensive one like mine though.

## NUC

I use an Intel NUC as my server. Specs are [in the repo](https://github.com/paultibbetts/homeops/tree/main/hardware/nuc).

Originally I used my NAS as a server, until I found that messing with it made it unstable, so I stopped doing that and looked for something else. I bought something from Kickstarter, and in true Kickstarter fashion it was delayed multiple times, and eventually I got impatient and bought the NUC.

It&#39;s modern and pretty power efficient, which means running it is much cheaper than the NAS made out of older components.

The CPU has 12 cores and 16 threads, which gives me plenty of headroom for virtualisation. I have [Proxmox](https://www.proxmox.com/en/products/proxmox-virtual-environment/overview) installed and use it to run 9 virtual machines and 1 LXC. This lets me split services across separate environments instead of installing everything directly on one host, so a problem with one service is less likely to affect the others.

The LXC is for Jellyfin, which is self-hosted Netflix for movies I store on my NAS. The NUC has an integrated Intel GPU that supports _Quick Sync_, which Jellyfin uses for hardware-accelerated transcoding. This means I can watch my movies from any device and let the GPU do the transcoding, leaving the CPU available for the other services hosted by the NUC.

### Review

The NUC is an excellent home server. It&#39;s not enterprise hardware with redundant power supplies and room for expansion, but its size and efficiency make it a great fit at home.

The trade-off is that it&#39;s not a box for lots of disks. Mine has room for an SSD boot drive and the NVMe I use for local data. After that I needed to pair it with my NAS for extra storage.

It has a 2.5GbE NIC. That is not as fast as the 10GbE link to the NAS, but is more than enough for what I use it for.

If I started again and didn&#39;t need much local storage, a machine like this might be all I needed.

Unfortunately Intel has stopped making these but places like [Minisforum](https://www.minisforum.uk/) make ones that are similar.

## VPS

The VPS is the only machine in this setup that I don&#39;t physically own. It&#39;s rented from [Hetzner](https://www.hetzner.com/).

It is the public side of my &#34;tunnel&#34; setup, which I&#39;ll explain in a future post. The services I run are hosted at home and this VPS gives me an entry point without directly exposing my home network.

There isn&#39;t much to say about it. Hetzner is some of the cheapest European hosting I could find, and even though the VPS is located in Germany it doesn&#39;t add any real delay to my connection.

## MonPi

The final part of the setup is the Raspberry Pi that monitors everything else.

The reason it exists is separation. I didn&#39;t want to run monitoring on the same machines that host the services. If the NAS or the NUC has a problem, a separate device has a better chance of catching it.

It runs two types of monitoring: Uptime Kuma for service uptime checks, and Beszel for host metrics. I&#39;ll cover these in more detail later in the series.

### Review

The Pi works great for monitoring, but for this particular model that&#39;s about all it can do.

It was originally called &#34;DeskPi&#34; and was plugged into a screen to show a live output, but because it has only 2GB of RAM it struggled to run the desktop environment and I quickly gave up on that idea.

## What&#39;s missing

There are two pieces of hardware people might expect to see listed here that I don&#39;t yet have: a custom router and a &lt;abbr title=&#34;Uninterrupted Power Supply&#34;&gt;UPS&lt;/abbr&gt;.

I still use the router my ISP gave me, instead of something like OPNsense or pfSense. I&#39;ve worked around some of its limitations by letting Pi-hole handle DHCP - more details on that in the Pi-hole post. I will be moving soon, and when I get settled I&#39;ll start working on the router.

The UPS will come after. It is risky running a NAS without one, but I live in the UK, and in the five years I&#39;ve lived in this house there&#39;s been exactly one power cut, so I haven&#39;t felt the need to prioritise it.

## Not Highly Available

The obvious limitation of my setup is that it&#39;s not highly available.

Splitting storage, compute and monitoring across different machines gives me cleaner roles and a smaller blast radius than the all-in-one server I started with. It does not mean the setup can survive any of those machines breaking.

If the NUC dies, my services go offline. If the NAS fails, the storage layer is unavailable. If the VPS has a problem, friends and family can&#39;t get through the tunnel. MonPi monitors the setup, but nothing is monitoring MonPi.

There is an old redundancy saying that &#34;two is one and one is none&#34;. That applies here, but in different ways at different layers. The NAS has redundant disks, but it is still a single machine with one motherboard, one power supply and one network path. The NUC is a single host, so the VMs and containers running on it have nowhere else to fail over to.

Making the NUC highly available would mean running multiple Proxmox nodes. That means not just two machines, but three, so Proxmox can [maintain quorum](https://pve.proxmox.com/wiki/High_Availability).

That would be a better &lt;abbr title=&#34;High Availability&#34;&gt;HA&lt;/abbr&gt; design, but it would also mean more hardware and more power usage.

For now, I have accepted that my setup might have downtime because that is the trade-off that keeps it affordable and manageable at home.

## Next

That&#39;s the hardware covered for my setup.

The important thing is not that any individual machine is special, it&#39;s that each one has a clear job. The NAS stores things, the NUC runs things, the VPS provides the public entry point, and the Pi monitors it all.

It&#39;s not perfect, and it&#39;s not highly available, but it&#39;s much easier to work with than the all-in-one server I started with.

Next I&#39;ll look at the storage layer in more detail: how I use TrueNAS for network shares, archives, and the storage services that support the rest of the setup.
</source:markdown></item><item>
      <title>HomeOps Tour: Overview</title>
      <link>https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/2026/05/06/homeops-tour-overview/</link>
      <pubDate>Wed, 06 May 2026 21:05:00 +0100</pubDate>
      <guid>https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/2026/05/06/homeops-tour-overview/</guid>
      <category>homelab</category>
      <category>homeops</category>
      <description>Welcome to my HomeOps Tour, where I’ll be your guide to the stable part of my Homelab.</description>
      <content:encoded><![CDATA[<p>Welcome to my HomeOps Tour, where I&rsquo;ll be your guide to the stable part of my Homelab.</p>
<h2 id="what-is-homeops">What is HomeOps?</h2>
<p>HomeOps isn&rsquo;t a widely used term, but I have seen a few people use it. To explain what I mean by it I should first define &ldquo;Homelab&rdquo;.</p>
<p>A homelab is a setup of computers you control and use for experiments - like a laboratory. It&rsquo;s usually at home, hence the name, but not always. You might own all the equipment, rent it, or even send your own machines to a provider so they can run them for you - called &ldquo;colocation&rdquo;.</p>
<p>The problem is that homelab seems to cover experimentation as well as self-hosting services you use every day, which have different needs.</p>
<p>HomeOps, short for &ldquo;Home Operations&rdquo;, is my attempt at labelling the stable part of my homelab.</p>
<h2 id="purpose">Purpose</h2>
<p>My HomeOps setup is used to host the apps and services a few people depend on, so I can&rsquo;t be breaking it every five minutes.</p>
<p>Some people call this &ldquo;HomeProd&rdquo;, short for &ldquo;Home Production&rdquo;, which separates it from the &ldquo;development&rdquo; or &ldquo;staging&rdquo; environment you use for experiments.</p>
<p>As such I treat it like a real production system: stable, reproducible, and intentionally boring to operate.</p>
<h2 id="architecture">Architecture</h2>
<p>The system is split over different machines, each with a different purpose.</p>
<ul>
<li>a <abbr title="Network Attached Storage">NAS</abbr> provides storage over the network</li>
<li>a server hosts all the apps and services</li>
<li>a rented <abbr title="Virtual Private Server">VPS</abbr> lets external users in securely through a &ldquo;tunnel&rdquo;</li>
<li>a Raspberry Pi monitors it all</li>
</ul>
<p>The whole thing is written down as Infrastructure as Code, with Terraform defining the infrastructure and Ansible for configuring it. This would let me reproduce it if a machine breaks and I need to set up a new one.</p>
<p>The server uses a hypervisor as an operating system and services generally get their own virtual machine. One of those VMs uses Docker to run most of the apps.</p>
<h2 id="key-decisions">Key Decisions</h2>
<p>Each of these deserve their own post later in the series.</p>
<h3 id="separating-homeops-from-homelab">Separating HomeOps from Homelab</h3>
<p>I made this split after <em>the data loss incident</em> which taught me not to let others depend on apps I&rsquo;m only trialing in my lab, especially without working backups.</p>
<h3 id="infrastructure-as-code">Infrastructure as code</h3>
<p>Everything is written down as code, so there&rsquo;s as little manual setup as possible. This means I can see what&rsquo;s going on by inspecting the code, and I can automate configuration.</p>
<h3 id="terraform-and-ansible-not-kubernetes">Terraform and Ansible, not Kubernetes</h3>
<p>When I started I wanted to compare Terraform and Ansible against Kubernetes for running a homelab.</p>
<p>I thought I&rsquo;d prove that Kubernetes was obviously the better choice, but two years later I&rsquo;ve found the Terraform and Ansible setup works just fine, so that&rsquo;s what powers my HomeOps.</p>
<p>I use Kubernetes in its own environment where I run experiments.</p>
<h3 id="not-highly-available">Not highly available</h3>
<p>One downside to my setup is that it&rsquo;s not highly available. If a machine breaks then there&rsquo;s nothing to fill in for it until I replace it. I could fix this by running more machines, but that increases the cost.</p>
<p>For now I can live with the downtime. So far nothing&rsquo;s broken, although one day something will.</p>
<h2 id="what-this-series-will-cover">What this series will cover</h2>
<p>In this series I&rsquo;ll go over each part of the system in more detail, including the hardware, IaC, services that run on top, and how I let people access it from outside my home.</p>
<p>The aim is not to present this as the correct way to run a homelab, but to explain the choices I made, how they fit together, and why I use the apps that I do.</p>
<p>It will be split up so you can dive in and out at any point to read just the parts that interest you, with links to anything written earlier that provides necessary context.</p>
<p>It might be awkward in that the system builds up in layers, and things may only make sense for my particular setup, but I&rsquo;ll try my best to generalise each part so it&rsquo;s relevant on its own.</p>
<h2 id="next">Next</h2>
<p>Coming up first is the hardware I use.</p>
<p>Check back soon for the link, or subscribe to the <a href="https://paultibbetts-uk-feat-cooks.preview.lab.paultibbetts.uk/series/homeops-tour/feed.xml">feed for this series</a>
 in your feed reader.</p>
<p>Or jump straight into the code, which is now on <a href="https://github.com/paultibbetts/homeops">GitHub</a>
.</p>]]></content:encoded><source:markdown>
Welcome to my HomeOps Tour, where I&#39;ll be your guide to the stable part of my Homelab.

&lt;!--more--&gt;

## What is HomeOps?

HomeOps isn&#39;t a widely used term, but I have seen a few people use it. To explain what I mean by it I should first define &#34;Homelab&#34;.

A homelab is a setup of computers you control and use for experiments - like a laboratory. It&#39;s usually at home, hence the name, but not always. You might own all the equipment, rent it, or even send your own machines to a provider so they can run them for you - called &#34;colocation&#34;.

The problem is that homelab seems to cover experimentation as well as self-hosting services you use every day, which have different needs.

HomeOps, short for &#34;Home Operations&#34;, is my attempt at labelling the stable part of my homelab.

## Purpose

My HomeOps setup is used to host the apps and services a few people depend on, so I can&#39;t be breaking it every five minutes.

Some people call this &#34;HomeProd&#34;, short for &#34;Home Production&#34;, which separates it from the &#34;development&#34; or &#34;staging&#34; environment you use for experiments.

As such I treat it like a real production system: stable, reproducible, and intentionally boring to operate.

## Architecture

The system is split over different machines, each with a different purpose.

- a &lt;abbr title=&#34;Network Attached Storage&#34;&gt;NAS&lt;/abbr&gt; provides storage over the network
- a server hosts all the apps and services
- a rented &lt;abbr title=&#34;Virtual Private Server&#34;&gt;VPS&lt;/abbr&gt; lets external users in securely through a &#34;tunnel&#34;
- a Raspberry Pi monitors it all

The whole thing is written down as Infrastructure as Code, with Terraform defining the infrastructure and Ansible for configuring it. This would let me reproduce it if a machine breaks and I need to set up a new one.

The server uses a hypervisor as an operating system and services generally get their own virtual machine. One of those VMs uses Docker to run most of the apps.

## Key Decisions

Each of these deserve their own post later in the series.

### Separating HomeOps from Homelab

I made this split after _the data loss incident_ which taught me not to let others depend on apps I&#39;m only trialing in my lab, especially without working backups.

### Infrastructure as code

Everything is written down as code, so there&#39;s as little manual setup as possible. This means I can see what&#39;s going on by inspecting the code, and I can automate configuration.

### Terraform and Ansible, not Kubernetes

When I started I wanted to compare Terraform and Ansible against Kubernetes for running a homelab.

I thought I&#39;d prove that Kubernetes was obviously the better choice, but two years later I&#39;ve found the Terraform and Ansible setup works just fine, so that&#39;s what powers my HomeOps.

I use Kubernetes in its own environment where I run experiments.

### Not highly available

One downside to my setup is that it&#39;s not highly available. If a machine breaks then there&#39;s nothing to fill in for it until I replace it. I could fix this by running more machines, but that increases the cost.

For now I can live with the downtime. So far nothing&#39;s broken, although one day something will.

## What this series will cover

In this series I&#39;ll go over each part of the system in more detail, including the hardware, IaC, services that run on top, and how I let people access it from outside my home.

The aim is not to present this as the correct way to run a homelab, but to explain the choices I made, how they fit together, and why I use the apps that I do.

It will be split up so you can dive in and out at any point to read just the parts that interest you, with links to anything written earlier that provides necessary context.

It might be awkward in that the system builds up in layers, and things may only make sense for my particular setup, but I&#39;ll try my best to generalise each part so it&#39;s relevant on its own.

## Next

Coming up first is the hardware I use.

Check back soon for the link, or subscribe to the [feed for this series](/series/homeops-tour/feed.xml) in your feed reader.

Or jump straight into the code, which is now on [GitHub](https://github.com/paultibbetts/homeops).
</source:markdown></item>
  </channel>
</rss>
