# What’s Actually Running in My Homelab? (50+ Self-Hosted Services)

https://www.youtube.com/watch?v=efl2kuPNEpE

[00:00] In my last home lab video, we focused on the hardware, racks, servers, networking, and storage, and a ton of
[00:06] you asked, "Okay, but what the heck are you running on that thing?"
[00:10] So, today, I'm going to break it all down.
[00:11] Everything I'm self-hosting in 2026, from the big bucket items like media, databases, and monitoring, all the way down to the smaller services that solve one specific problem really well.
[00:22] Self-hosting for me just means services I run myself on hardware that I own in a way I can control and move.
[00:30] In my home lab, that ends up being a mix of media, like Plex, photos, and transcoding, docs and real-life ops, like paperless, PDF tools, and workflows, monitoring, so metrics, logs, and uptime, to home automation and security, like home assistant, cameras, and Zigbee, to core infrastructure, DNS, reverse proxy, and certificates.
[00:50] And it all runs on two main platforms for me.
[00:52] Proxmox is the virtualization layer, so VMs, clustering nodes, and backups with PBS, and even
[01:00] some LXCs this year, and then TrueNAS as my storage layer, ZFS, shares, datasets, and also a bunch of containers.
[01:09] On top of that, I run three RKE Kubernetes clusters, all managed through Rancher for the stuff I want orchestrated.
[01:13] That probably seems like a lot, but my plan today is pretty simple, just show you what each piece does, why it exists, and how it all fits together.
[01:24] Now, the backbone of all of this, of course, is my network, so at a high level, I have my ISP that I connect to with my gateway.
[01:31] From my gateway, I have VLANs, and then from my gateway, I connect my switches.
[01:37] And then through there, I connect all my servers.
[01:39] Pretty simple, right?
[01:40] I flattened my network quite a bit this year, too.
[01:42] I'm down to three VLANs, or four if you count the guest, but I've never had a guest here that used it, so technically three.
[01:51] But my three VLANs are IoT, main, and cameras.
[01:54] My management network is where my UniFi devices live.
[01:56] That's where my hypervisors live, so Proxmox or anything
[02:01] that needs access to all VLANs.
[02:04] On main is where all of my trusted devices live,
[02:06] so my workstations, my laptops, and even my mobile phones.
[02:09] I put my Apple TVs and my HomePods on my trusted network, well,
[02:11] because I trust them, and it's a lot easier to put them on that network than to put them on the IoT network and create a bunch of firewall rules that I could get wrong just to be able to communicate with devices like my phone.
[02:26] Then on my IoT network is, you guessed it, IoT devices.
[02:29] So, this is things like lights, thermostats, or anything that doesn't have an operating system that I can update, or anything that I don't really trust to be on the same network with the rest of my devices.
[02:42] This network is pretty locked down, and I don't let these devices communicate with any of the other devices on any other VLAN except for a select few that I have some ACLs for.
[02:50] My last VLAN is cameras, and that's where all of my security cameras and my NVR lives.
[02:53] I also have some servers at a colocation not too far from here, and there are three servers that I own and maintain where some of my
[03:03] services are running.
[03:05] After getting a couple hundred thousand visitors on my documentation site, I realized that I probably shouldn't be hosting it at home anymore.
[03:10] So, I moved that service into the colocation, and again, that's running on hardware I own, running services that I maintain, basically like I'm renting power and network.
[03:21] Then I have a VPN connection set up from here to there, so I can manage those privately, and so I can back things up from here to there.
[03:28] More to come on that, too.
[03:30] The hypervisor that I'm still running is Proxmox, and I don't see that changing anytime soon.
[03:34] I run six Proxmox nodes, so two clusters, three here in my home lab, and then three at my colocation.
[03:43] Here at home, I have three nodes, you could see here, shin one, two, and three, and each of these has virtual machines and LXCs.
[03:50] You could see on my first node, I'm running LXC containers.
[03:54] I'm running some virtual machines that run Kubernetes.
[03:56] I'm even running PBS, so Proxmox backup server.
[03:58] I'm running it as a VM within Proxmox,
[04:03] and then backing up Proxmox to NFS.
[04:07] I know, sounds kind of jank, but it works pretty good.
[04:11] But, you could see I have a whole bunch of VMs spread across all three of these nodes.
[04:14] Now, you might be wondering if I'm running HA LXCs or HA virtual machines, and I'm not.
[04:21] I only have these clustered so I can use a single pane of glass to access all of these, and easy migration and easy backup.
[04:27] Now, you might be wondering, why don't you do HA LXCs or HA VMs?
[04:33] Really, I like to push the high availability down further in the stack, and so I try to build that high availability into the services themselves rather than have Proxmox manage that, cuz I want Proxmox to just kind of be a hypervisor, and then I'll add more nodes as I need to, especially with Kubernetes, and if those goes down, I'll just spin up a new node, and those services will move to new nodes.
[04:56] Anyways, I have lots of virtual machines running in here, some Windows, some Linux, some for Kubernetes, some for just testing, some for Docker only,
[05:05] And some for DNS.
[05:07] And this is kind of like my test or QA area where I test things out, and I decide whether or not I'm going to move them into my other Kubernetes cluster, or run them as containers here at home.
[05:17] Here's my Proxmox cluster for my colocation, kind of looks the same.
[05:21] I have a naming convention, I kind of put all ones in the cluster in an HA cluster on the one node, and on the two node, and on the three node, and that's just really for me to keep my sanity, and when I schedule reboots or schedule rolling restarts with Ansible, I know that if I take down one, all of the one versions of the nodes will be down.
[05:42] So, anyways, you could see here that I'm not running HA LXCs or HA virtual machines.
[05:48] I'm running multiple nodes, and then making those HA.
[05:53] For example, I have Postgres right here, Postgres one in an LXC, Postgres two in an LXC, and Postgres three in an LXC, and these are running in an HA Postgres cluster with Patroni.
[06:03] The same with Redis, the same with MongoDB HAProxy.
[06:05] So, if any one of these
[06:08] goes down, the cluster will continue to run.
[06:13] I could take this node down right here, and all of these services, for the most part, will continue to run.
[06:17] And the same goes with my Kubernetes nodes.
[06:19] I have my etcd and control plane and a worker, along with a Rancher node here, and then I have the same thing on two and three.
[06:28] And again, I can take any one of these down, and my services should, for the most part, stay up.
[06:30] For storage, I'm still using TrueNAS Scale.
[06:35] TrueNAS is kind of the home base for all of my data.
[06:37] And this year, it also became the home base for a lot of my applications, too.
[06:42] You could see I have quite a bit of applications running on TrueNAS, and this year, I decided that TrueNAS is going to be my home prod, or my home production.
[06:53] TrueNAS is not only going to be where all of my data lives, but it's also going to be where my internal applications live as well.
[06:59] As soon as I figured out I could use Docker Compose along with TrueNAS, I decided that this is the way that I wanted to go.
[07:07] And as you could see, I have a lot of applications here that we'll talk about
[07:10] here in a second.
[07:12] And so, in a sense, I really built up my all-in-one box to be TrueNAS with a lot of storage, a lot of RAM, and now a lot of applications, and a video card, and now I have a pretty good all-in-one box.
[07:24] One of the biggest reasons why I moved my applications onto TrueNAS was because I wanted ZFS.
[07:29] So, now I can manage my application data the same way I'm managing the rest of my data, snapshots, quick reverts, replicate those snapshots offsite, and follow the same practice that I'm already doing with my data.
[07:42] Another reason I wanted to move all of my application here is so all of these apps access the data locally, not over the network or over NFS and all the headaches that come along with that.
[07:52] They're accessing it on a dataset on the same machine.
[07:55] Then once here, it's running on my fast machine, I get good caching with ZFS, and it's a lot easier to manage.
[08:02] You could see I have a lot of datasets here, one per application.
[08:07] I think in the future, I'm going to change this and nest these all inside of
[08:11] another dataset, so I can have snapshots at the parent dataset level, and then at the child dataset level.
[08:18] And that will help with replication in the future, too.
[08:20] But as it stands now, I can snapshot all of these applications individually, then I can replicate them offsite.
[08:26] Because I have so many datasets, and they're not set up the way that I want them, I had to create lots of replication tasks.
[08:32] And this is going to change in the future, but as it stands now, I have replication tasks for all of those datasets, and then those get pushed to my other TrueNAS box, which we'll talk about here in the future.
[08:44] So, how do I decide between Docker and Kubernetes?
[08:46] Well, I decided that all of my home services are going to be Docker on Compose running on TrueNAS, and then all of my public services are going to be in Kubernetes running in my colocation.
[09:00] All right, so let's dive into all of these applications.
[09:02] The homepage system that I'm using and still have been using for a long time is homepage, as you could see here.
[09:09] One of the features I love
[09:11] most about homepage is that I can configure this whole thing with YAML.
[09:15] So, if you wanted this same exact dashboard, I could send you my YAML, and you would have that, too.
[09:21] I like to manage most of my stuff in code, you'll see that.
[09:23] But I have made my homepage homepage a lot easier.
[09:25] As you could see, I'm not doing any uptime checking, I'm not doing any service calls, so I'm not going out to see how many machines I'm blocking, or how many VMs are blocking.
[09:38] And really, this just became my link page once again.
[09:40] I do like the idea of these going out and fetching data and lighting up, because every time I open a tab and go here, I know if something's wrong, but I decided I didn't want this to be that chatty.
[09:51] So, you could see I broke it up into specific sections, So, I have hypervisor, DNS, network, containers, monitoring, remote access, storage, media, energy, home automation, AI, documents, tools,
[10:12] database, and then other.
[10:14] There are some others I'd like to check out in the future, but the last couple of years I found homepage to do exactly what I want.
[10:20] Next is quick links and I've kind of lumped this into homepages.
[10:24] Little link server is something that I built quite a while ago and I enjoy it.
[10:28] It's super simple to use.
[10:31] You can get a webpage that looks almost exactly like this just by configuring environment variables.
[10:35] Again, I like the declarative nature and so I wanted to build something that was environment variable only, probably to my demise, to where you can configure this webpage and have it look pretty good.
[10:48] Next is a documentation site and for my documentation site, I'm still using Jekyll, the static site generator.
[10:54] Most of you have probably seen this before, but my blog or my documentation site, technotim.com, is built on top of Jekyll.
[11:01] So, I write all of my content in markdown and Jekyll, along with the Chirpy theme, convert this to markup and it looks like this.
[11:09] Anyways, I've used Hugo, I've used 11ty, I've used Jekyll
[11:14] and so many others, but I just settled on this honestly because I really like the Chirpy theme.
[11:20] Next is a link shortener and I still use Shlink.
[11:22] I actually love Shlink and I have a lot of links that I share where I want to control where that lands and Shlink is the way that I do it.
[11:31] And honestly, the reason I chose Shlink to begin with is because I really like the architecture.
[11:35] He separated front end, back end, created an API, used Postgres, and even used Redis.
[11:41] When I see thoughtful architecture like that, I know that that person's typically in there for the long run and so Shlink ended up being the one that I chose.
[11:51] I honestly think it's the best one out there, too.
[11:52] It's It's really nice.
[11:54] So, if you ever need to shorten links or control where links go, Shlink is definitely the way to go.
[11:58] The next group of applications are applications that are core to my home lab or core to my infrastructure and they're kind of what I consider platform services.
[12:06] First up is Traefik, my reverse proxy.
[12:09] I've been using it for many years.
[12:11] It was one of the first applications I did where I configured a
[12:14] Reverse proxy with certificates.
[12:17] Publicly signed certificates, internal.
[12:19] And I'm still using it today.
[12:23] I have 68 routes here at home and that's quite a lot of routes.
[12:28] So, Traefik is routing all of my applications with a secure certificate to the proper place within TrueNAS.
[12:33] And I'm also using it as an ingress for all of my applications in Kubernetes.
[12:38] For DNS, I'm still using Pi-hole.
[12:40] I'm using it here at home and also in my colocation, too.
[12:45] At home, I run it inside of a Docker container, an LXC, and also on a Raspberry Pi.
[12:51] And then in my colocation, I run it on two LXCs.
[12:53] Now, we use Pi-hole for the obvious, ad blocking, but I also use it for local DNS.
[12:58] Anytime I need to create a CNAME or A record, I create it within Pi-hole.
[13:05] You might be wondering, well, doesn't that create a split brain scenario?
[13:09] You have three Pi-hole instances.
[13:11] The way that I synchronize all of those is through Nebulasync.
[13:17] Nebulasync is pretty cool.
[13:19] It's a container that actually uses the Pi-hole API to sync it across multiple Pi-hole instances.
[13:24] And with Pi-hole, I use Unbound, which is a recursive DNS resolver.
[13:29] Now, you might be wondering, well, why do you have three DNS servers if DHCP can only hand out a primary and a secondary?
[13:36] Well, I use keepalived, which is kind of like a load balancer or a VIP that's able to fail over if one of the servers are down.
[13:45] So, for example, you might have one Pi-hole instance as your primary DNS and then two with a VIP as your secondary DNS.
[13:53] One thing I learned and changed this year was rather than load balance or have a VIP for my secondary DNS, I actually have a VIP for my primary DNS.
[14:04] Why do you do that?
[14:08] Well, I realized most applications are going to use your primary DNS whenever they can.
[14:12] If that fails, there's a timeout before it will actually try the
[14:18] secondary DNS.
[14:22] And so, if my primary DNS goes down, all of those applications are waiting for the primary to timeout before they'll try the second.
[14:31] And so, that slows down DNS resolution for all of those applications, right?
[14:36] Because they're trying to communicate with the first one, even though the first one's down, it has to wait for that timeout before it goes to the second.
[14:43] Now, I know that DNS one or your first DNS is rarely down, but when it is, it's usually because something's wrong and on top of that, now you have, you know, these timeouts that are going to one and then time out and going to two.
[14:56] So, since most applications prefer the primary, I decided to load balance two DNS servers for the primary and then my secondary is just one instance.
[15:06] Next up is monitoring and logging and this year I decided to take it pretty seriously.
[15:08] I decided that if I'm going to spin up an application and depend on it in my home lab, the least I can do is set up monitoring and logging and metrics if I
[15:20] So, that's what I ended up doing.
[15:22] I set up Prometheus, which is metric scraping and a time series database.
[15:27] And then I also set up Grafana as well with lots of dashboards and soon alerting.
[15:32] So, for example, I have dashboard set up for TrueNAS.
[15:34] I even have dashboard set up for my video card.
[15:36] And I just recently set up dashboards for all of my UPSs and their batteries.
[15:43] For logging, I ended up setting up Loki again, which gives me log storage and ways to query that data.
[15:49] Then I set up alloy, which is an agent for scraping those logs and getting them into Grafana.
[15:56] And then I use Grafana to be able to see those logs and actually query those logs.
[16:01] Now, it might seem weird to query logs in Grafana, but that's how it works.
[16:06] And it actually turns out pretty nice because I get log metrics as well.
[16:10] And you can see these are all of the logs from all of the containers that I'm running.
[16:14] The nice part about this is if they're logging to standard out or standard error like most cloud-native applications, you'll actually be able to
[16:21] filter on those errors as well.
[16:23] And you can see some of this here.
[16:25] Home Assistant has a lot of warnings right here and you can see these warnings here as well.
[16:28] If I wanted to drill into an application, say let's drill into Scrutiny really quick, I can see all of the logs from this container and I can search for these logs with a string just like any other application.
[16:39] Say I wanted to search for web, it'll now show me all of the results with web.
[16:43] But if I want to see logs in real time, I usually use Dazzle to do this.
[16:48] Dazzle's a fantastic application.
[16:50] I usually install it on every stack that I run and it just gives me visibility of logs in real time.
[16:55] Say I'm troubleshooting something or a container is flapping or rebooting itself, Dazzle's what I use to check those logs.
[17:05] And if I want to monitor applications or services, I use Uptime Kuma.
[17:10] Now, I stopped using Uptime Kuma in the past because my SQLite database that was included with it would get corrupted all the time.
[17:18] It was just a pain in the butt.
[17:20] But now, with version
[17:22] two, you can actually use a MySQL database on the back end and that's what I'm doing.
[17:30] So, now I think I have, I don't know, 189, almost 200 items in here that it's all tracking and logging and monitoring and it's been running fine.
[17:37] So, it's awesome that they added support for MySQL and MariaDB and I'm actually using it again because of that.
[17:44] One of the downsides of running an uptime monitor on the same machine where your services are running is that if that machine's down, you have no way to get alerted.
[17:52] So, for external checks, I use Uptime Robot and if it looks familiar, Uptime Kuma was heavily inspired by Uptime Robot.
[18:01] Uptime Robot has a free plan, works great.
[18:04] The app is really nice, too.
[18:06] One thing you might have noticed is that I'm running a lot of exporters and an exporter is a way to scrape information to get those metrics, to put them inside of Prometheus to then look at them in Grafana.
[18:17] Some applications don't have metrics built in, so I run exporters, which can scrape and get those metrics and then put those
[18:24] in a way that Prometheus can understand
[18:27] and you can see some of them here.
[18:29] For example, Pi-hole doesn't have metrics built in, so somebody built an exporter,
[18:33] which will scrape metrics from Pi-hole, put them in Prometheus, and then I can see them here in Grafana.
[18:40] Scrutiny is a great application to see disk health and smart trends across all of my hard drives on TrueNAS and really anywhere that you run Scrutiny.
[18:48] Scrutiny is a great way to see the results of smart tests in the past.
[18:54] One other container that I run that might seem kind of silly is I'm actually running nvtop.
[18:58] And so, what this does is give me a way to run nvtop to check my NVIDIA GPU that's running in my TrueNAS server.
[19:04] So, rather than SSHing in and running nvtop, you know, I might not have access to SSH at the time, so I just run a little container of nvtop, then I'll go in here and I'll see how my GPU is doing.
[19:18] And that's helpful for transcoding with Plex or AI with some of the workloads you'll see here.
[19:20] Next is media and this is a
[19:25] huge category, not only for me, but I bet for you, too.
[19:30] Now, we run Plex as my primary media server that houses my movies, it houses live TV and TV that I've recorded along with some of my old music.
[19:40] Now, you might have noticed that I'm also running Jellyfin here, too, and you can do that, too.
[19:44] There's nothing stopping you from running both Plex and Jellyfin if you want to to see how each performs.
[19:49] So, I do run Jellyfin.
[19:53] It's pointed at the same media collection that I have for Plex.
[19:57] So if anything ever happens with Plex and they pull the plug, Jellyfin's ready to go.
[20:00] Next is a couple of companion apps for Plex.
[20:02] Tautulli is the first one.
[20:06] It gives me Plex stats and activity history, you know, who's watching what and what I'm watching.
[20:09] Kometa, which is really awesome but also really complicated, kind of hard to explain to, but I kind of think of it like metadata automation.
[20:18] So say for instance, you use Trakt or follow someone on Trakt and they have a nice list of movies and say you have
[20:25] some of those movies, you can actually
[20:27] use a Trakt list to create a collection
[20:30] that you can then put all of your movies
[20:32] in. I know this kind of complicated, but
[20:34] if you don't like the default lists or
[20:37] recommendations that Plex gives you when
[20:39] you open up Plex, Kometa is a way to
[20:41] customize and create your own.
[20:44] HandBrake's also something that I run
[20:45] here at home, gives me transcoding or
[20:47] re-encoding. If sometimes I need to
[20:49] convert a little video to another
[20:52] format, this is the way that I do it.
[20:54] HDHomeRun is also something that I host,
[20:56] not really hosting it, but it's a device
[20:59] that allows me to stream live TV, it's a
[21:01] tuner and it connects to an antenna. I
[21:04] only mention that because some of the
[21:06] other things I'm going to mention here
[21:07] tie into this. But this ties into Plex,
[21:10] this is how I record a lot of live TV
[21:13] and then store it on my Plex and then
[21:15] watch it later. Now I mentioned
[21:17] HDHomeRun because HDHomeRun gives me
[21:20] live TV and channels within Plex, but
[21:22] something else that can give you
[21:23] channels within Plex is this application
[21:26] called Ersatz. Now Ersatz you can think
[21:29] of like virtual TV channels that can
[21:32] push or hook into say Plex. Now I've
[21:35] seen a lot of tutorials on Ersatz, but
[21:37] the one that really made me try it out
[21:39] was this tutorial I saw on building your
[21:42] own MTV. And so I created these MTV
[21:45] channels from videos, you know, back
[21:47] from the 1900s, where I can see older
[21:49] videos and these stream 24/7. They don't
[21:52] technically stream, but when I go to
[21:54] that channel they start streaming. This
[21:55] kind of gives you that old school
[21:57] feeling of MTV when they used to play
[21:59] videos. Uh but you don't have to do
[22:00] videos. I've heard of people streaming
[22:02] Simpsons 24/7 or other TV shows that
[22:05] they have 24/7. So if you have about a
[22:07] week's worth of spare time, you should
[22:09] check out Ersatz cuz it's really fun to
[22:11] play with. So speaking of channels,
[22:13] Dispatcher is something that kind of
[22:15] aggregates channels. You might be
[22:17] wondering why I'm using Dispatcher.
[22:19] Well, a lot of people use it for a lot
[22:21] of different things, but I'm actually
[22:23] consuming my live TV channels from my
[22:27] HDHomeRun and then presenting them to
[22:30] Plex. Now, why do I do that? I only do
[22:33] this because Plex only allows you to
[22:35] have one source or another
[22:38] for live TV. So you got to choose XML or
[22:41] you got to choose I think M3U and you
[22:44] can't have different sources. Well,
[22:47] Ersatz uses XML and my HDHomeRun uses
[22:51] M3U and Plex won't let you have
[22:53] different sources. So really all I'm
[22:55] using Dispatcher for is XML so I can
[22:58] have two XML sources to present to Plex.
[23:01] I really wish Plex would spend more time
[23:03] on the live TV and the channel section
[23:05] because we have people doing really cool
[23:07] things like this, like Ersatz and
[23:09] Dispatcher, which are kind of emulating
[23:11] this HDHomeRun to bring more live
[23:15] content into Plex. And I think that's
[23:17] really cool. There are lots of things
[23:19] you can do with Dispatcher. I recommend
[23:20] checking them out, but for me all I'm
[23:22] doing is converting my M3U playlist to
[23:25] XML to feed it into Plex. The next
[23:28] section is documents and real life ops.
[23:30] I kind of bundled these together.
[23:32] Paperless is pretty cool, kind of does
[23:34] exactly what it says. If you have some
[23:36] paper and you want to go digital, you
[23:38] need a document management system and
[23:41] you also need some kind of OCR to be
[23:43] able to index that document to make it
[23:46] searchable. And that's what Paperless
[23:48] does among other things. So you can
[23:50] upload documents, tag documents, and
[23:53] then index those documents so you can
[23:54] search them. Now the OCR on there
[23:56] doesn't work the greatest and that's
[23:58] where something like Paperless AI comes
[24:00] in. Paperless AI is kind of an add-on
[24:02] for Paperless, but what it gives you is
[24:04] a local AI engine along with a vision
[24:07] model to actually extract data from the
[24:10] documents a lot better than OCR. And
[24:13] then a couple other things that I bundle
[24:15] in with Paperless that Paperless
[24:16] recommends is Tika, which does text
[24:19] extraction for documents. And then
[24:21] Gutenberg is another one which helps you
[24:23] convert office and HTML to PDFs to get
[24:27] them then inside of Paperless, which
[24:29] Paperless likes PDFs. The next section
[24:32] is docs and diagrams and that's where a
[24:34] lot of my visual tools are that I use. I
[24:37] use Excalidraw a lot, especially like on
[24:40] Zoom meetings when I try to explain
[24:41] something, but I do it visually because
[24:43] I'm a visual learner. This is what I use
[24:46] to do that. Draw.io actually lets you
[24:48] host a diagramming tool and this is
[24:50] another one that I self-host. And this
[24:52] is a diagramming tool, a little more
[24:54] structured than Excalidraw. You know, if
[24:56] I need to show a lot of relationships
[24:59] and less squigglies, I'll end up using
[25:01] Diagram. It's great for network diagrams
[25:03] for sure. Next is Rackula and Rackula is
[25:06] a pretty cool diagramming tool. It
[25:07] actually lets you diagram your rack. So
[25:10] if you want to take inventory of your
[25:12] rack or know exactly what fits where or
[25:14] how much space you have left, Rackula is
[25:17] a great way to do that. Next is kind of
[25:19] real life automation stuff, so kind of
[25:21] workflows I guess and content. The first
[25:23] one is n8n. n8n is an awesome workflow
[25:27] automation. There's tons of
[25:28] integrations. Think of it like if this
[25:31] then that like on steroids and add-on AI
[25:34] and multi-point, you know, conditional
[25:36] checks. n8n is that. So think of
[25:38] anything you want to automate across
[25:40] services without writing code, n8n is
[25:43] the tool for that. And because it's a
[25:45] low-code, no-code tool, me being a
[25:47] developer, I actually enjoy writing the
[25:50] code to automate a lot of this. So I
[25:51] haven't found a great fit for this yet.
[25:53] If you have an automation you run in n8n
[25:56] you want to share, let me know in the
[25:58] comments because I would love to see it.
[25:59] Next is Postieus, which is social
[26:01] scheduling or posting automation. So
[26:04] think of it like a scheduler for posting
[26:07] things on social media. If you're a
[26:08] content creator, you end up
[26:10] cross-posting a lot of your posts across
[26:12] the different social network platforms.
[26:14] Postieus can actually help you with
[26:16] that. You can create one post in
[26:18] Postieus and then it will go out and
[26:20] post that to all of your social media
[26:22] sites. Or if you just want to schedule
[26:24] one in the future and the platform
[26:26] doesn't allow scheduling, this is a way
[26:28] to do it, too. Now I've only used this
[26:30] once to kind of test it out, but I
[26:32] realize it's not that hard for me to
[26:34] cross-post to four or five different
[26:36] social media platforms. If I was a
[26:38] marketer or let's say I was going to be
[26:41] out of town and didn't have access to my
[26:43] phone for whatever reason and I
[26:45] scheduled a video and want to schedule,
[26:47] you know, the social media post around
[26:49] that, this would be a way to do it. But
[26:51] it seems like a great platform for
[26:52] marketers or social media team, but not
[26:55] really for me the individual creator.
[26:57] Next is home automation and security.
[27:00] The home automation platform that I
[27:02] still use is Home Assistant. It's
[27:04] awesome, most people have heard about
[27:05] it, but it's really, really complex and
[27:09] it can be complex to set up. I will
[27:11] admit that it takes a long time to get
[27:13] things set up and running the way that
[27:14] you want, almost be a full-time job if
[27:17] you wanted. But on the flip side, it
[27:19] allows you to control and automate
[27:20] things within your own home that you
[27:22] might not have been to otherwise. So
[27:24] along with Home Assistant I'm running
[27:26] MQTT, which is a message bus for IoT
[27:29] devices. I'm also running Zigbee to
[27:31] MQTT, which allows me to use Zigbee
[27:34] devices that communicate over MQTT back
[27:37] to Home Assistant. And then lots of
[27:39] Zigbee devices, lots of IP devices, all
[27:42] that I tie into here in Home Assistant.
[27:45] Scripted is a really cool application.
[27:47] You can kind of think of it like either
[27:49] a camera bridge or a full-on NVR for
[27:52] your home security system. Now I use it
[27:54] for a camera bridge and this allows me
[27:56] to bridge my UniFi cameras into HomeKit
[28:01] so that I can use them as if they're
[28:03] HomeKit certified. Nothing in Protect is
[28:05] compatible with HomeKit and so Scripted
[28:08] is the bridge that allows me to do that.
[28:10] Such a great application if you need to
[28:12] tie in unsupported devices into HomeKit
[28:15] or Google Home or Alexa. That goes
[28:18] without saying I'm using UniFi Protect
[28:20] for my camera NVR and my home security.
[28:22] Databases is its own topic because I use
[28:25] quite a few databases across all of my
[28:27] applications. One of the databases I use
[28:30] most is Postgres. Postgres is an awesome
[28:33] open-source relational database and I
[28:35] use it whenever I can with any
[28:37] application that I can. MariaDB is
[28:39] another database that I use. It's a
[28:41] MySQL-compatible relational database and
[28:44] I use that anywhere I can that supports
[28:47] that type of database when Postgres
[28:49] isn't supported. Valkey is something
[28:51] that I use. So if you know Redis, Redis
[28:53] is a cache or key-value store, it's an
[28:55] in-memory database that's super duper
[28:58] fast cuz it's all in RAM. Well, Valkey
[29:00] is a Redis-compatible version of that
[29:02] with better licensing. And with all of
[29:05] those databases comes a lot of ways to
[29:07] manage them. I like to manage them from
[29:09] the web when I can. First is Adminer,
[29:11] which is a lightweight database web UI.
[29:13] I actually like this one the most. Super
[29:16] basic, super fast, but it does exactly
[29:19] what I need. So if you need to manage a
[29:21] MySQL or MariaDB database, Adminer is
[29:24] super awesome and the way to go.
[29:27] a good product, some people might
[29:28] recommend it, but I like Adminer because
[29:30] it's lightweight and it actually works
[29:32] all the time. Having some problems
[29:34] getting PHPMyAdmin configured in a
[29:36] container, I'm sure it's something I'm
[29:38] doing, but because of that I found
[29:40] Adminer and I'm running that instead.
[29:42] DBgate is another one that I tried out.
[29:44] I actually like DBgate. It kind of feels
[29:46] like VS Code but for SQL, but it's
[29:48] missing a ton of features, like even
[29:50] users. So, if you need to connect to a
[29:52] database and just run some SQL, DBgate
[29:55] will work. But, if you're going to do
[29:56] that, you might as well use Adminer.
[29:58] Databases or databasis, I'm not sure how
[30:00] you pronounce it, but a really cool web
[30:02] UI to back up and restore your
[30:04] databases, and it works with Postgres,
[30:07] MySQL-like databases, and even
[30:09] and probably one more. Next is AI and
[30:12] local LLMs, because it's 2026 and you
[30:15] have to talk about AI. Jokes aside, I
[30:17] run Ollama, which helps me manage all of
[30:20] my local LLMs and all of my models.
[30:22] Then, I use Open Web UI to connect to
[30:25] Ollama for chatting with local LLMs.
[30:28] Next is Kubernetes and platform
[30:29] operations. I run three Kubernetes
[30:32] clusters here, and I manage all three of
[30:34] them with Rancher. Think of Rancher like
[30:36] a Kubernetes management UI that can also
[30:38] provision more Kubernetes clusters. And
[30:41] so, I run a Rancher cluster, which
[30:43] manages two other clusters, so three
[30:45] total. But, I treat the Rancher UI as
[30:48] read-only, because I use GitOps. GitOps
[30:50] is a way to define my infrastructure as
[30:54] code, and then have that deployed. And
[30:56] Flux is what helps me do that. Another
[30:58] GitOps tool that helps me is Renovate.
[31:01] And Renovate will help me keep my
[31:03] cluster dependencies up to date. It will
[31:05] open pull requests against my Git repo,
[31:08] where I approve them, and then once
[31:10] merged, they get deployed with Flux. So,
[31:13] pretty cool. Something that's more
[31:14] DevOps that I run within my cluster is
[31:17] GitLab Runners. I use GitLab for a lot
[31:19] of my personal code, and when I commit
[31:21] that code and push it up, I have CI that
[31:23] runs, so continuous integration and
[31:26] continuous delivery or deployment, some
[31:28] people say. So, all automatic. I am
[31:30] using storage beyond the NAS, and I use
[31:32] MinIO for S3-compatible object storage.
[31:35] A lot of my applications that run use
[31:37] object storage either for backing things
[31:39] up or caching things. And so, MinIO is
[31:42] what I've been using to do that. Now,
[31:44] MinIO has stopped developing the
[31:46] open-source version of MinIO, and so I'm
[31:48] looking for an alternative. Right now,
[31:50] it's probably going to be Rust FS,
[31:53] because it has better licensing and it's
[31:55] more active in being developed. Being a
[31:57] developer, I also run some developer
[31:59] utilities here in my home lab. Code
[32:02] Server's a big one, which gives me VS
[32:04] Code in the browser. Now, I'm running
[32:06] Code Server in TrueNAS, and I have all
[32:08] of my data sets mapped, so I can create
[32:10] my compose files for all the
[32:12] applications that run. This makes it
[32:14] super easy to edit all of my compose
[32:16] files without using SSH or anything like
[32:18] that. If you've ever used VS Code
[32:20] before, it's the same thing, but on the
[32:23] web. IT Tools is kind of like a junk
[32:25] drawer, in a good way, of DevOps and
[32:27] developer utilities. Have you ever
[32:29] needed to parse a JWT token, and then
[32:32] you paste it in the web somewhere just
[32:34] to parse it? Or have you used a base64
[32:37] encoder or decoder in the browser?
[32:40] Probably not the best idea. IT Tools
[32:42] does that and a lot more. And the best
[32:44] thing is, self-hosted, so you don't have
[32:46] to worry about anyone grabbing those
[32:48] values from those secrets that you
[32:50] shouldn't be uploading anyways, right?
[32:52] OpenSpeedTest kind of speaks for itself,
[32:54] but it's a local bandwidth speed test.
[32:56] Now, you might be wondering, why don't
[32:58] you use one of those public speed tests,
[32:59] like fast.com or something like that?
[33:01] Well, besides privacy, it's nice to be
[33:03] able to test this across different links
[33:06] in my house. Say I wanted to test 2.5
[33:08] gigabit or test my tablet with this
[33:11] specific access point, that lets me do
[33:13] it really easily.
[33:15] And privacy. The next section is a mix
[33:17] bag of booting and power. I didn't know
[33:19] how to lump these together. But, the
[33:21] first one is netboot.xyz. You might have
[33:23] seen it, but netboot.xyz is a way to
[33:26] network boot to a different operating
[33:29] system using the web, if you want. This
[33:32] is really handy if you can't plug in a
[33:34] Ventoy USB disk. Booting to the network
[33:36] and then installing the operating system
[33:39] is super easy with netboot.xyz. The nice
[33:42] thing about netboot being open-source is
[33:44] that you can customize that menu and
[33:46] boot from images within your network
[33:48] without using the internet. NUT Server
[33:50] or Network UPS Tools is something I'm
[33:53] still using to monitor my UPSs. I
[33:56] monitor all three of my UPSs, and I can
[33:58] schedule shutdowns, say if the battery
[34:01] gets below a certain point, so I don't
[34:03] corrupt any data. Kind of hard to
[34:04] configure, but really awesome once you
[34:06] do. Peanut is something that I started
[34:09] running last year, but it's a web UI for
[34:12] NUT Server. Think of it like a modern
[34:14] way to look at NUT Server and data. One
[34:17] of the things that I wished for last
[34:18] year was that Peanut would actually
[34:20] persist its data. Well, that's what I
[34:22] got this year. Peanut can now write to
[34:25] InfluxDB or Prometheus, and I run
[34:28] Prometheus here, so I can scrape that
[34:30] data and then pull it up in Grafana. I
[34:33] think that was a great architecture
[34:34] decision by the developer Peanut to use
[34:37] InfluxDB or use Prometheus, rather than
[34:39] trying to develop your own database
[34:41] solution. Nice work. So, what are you
[34:43] self-hosting right now? And what's the
[34:46] one service you can't live without? And
[34:48] if you're not self-hosting, why? If I
[34:50] missed something awesome, please leave
[34:51] it in the comments. I'm always looking
[34:53] to add more applications to my home lab.
[34:55] Well, I hope you enjoyed this video. I'm
[34:57] Tim. Thanks for watching.
