The State of Homelab Tech

## Document Notes
## Highlights
- **Feed Scans To Vision Models**
- Scan documents into Paperless-NGX and then feed them to vision-enabled LLMs for far better OCR accuracy.
- Use Paperless-GPT or Paperless-AI plus Dockling/PaddleOCR to extract structured metadata and tables into Markdown.
Transcript:
Techno Tim (Tim Stewart)
And that's why I'm so like, yeah, that's why I'm so like gung-ho about it right now. You know, Paperless uses traditional OCR, so optical character recognition. And for the most part, it's okay, right? It's okay. It's way better. It's faster than humans. But it is nowhere near the accuracy of a model that's been trained for vision. And so this is kind of the next evolution in OCR. It's not use optical character recognition. Use a model that's been vision trained or multimodal is what they're saying now, where you can feed it text or feed it image and you get text out. And so I've been playing with this thing called paperless GPT and paperless AI, which hooks into paperless. And now I can scan documents, scanned images, and get high fidelity data out of those images. So for example, I scanned a serial number on one of my devices, you know, took a picture, scanned a serial number. OCR did terrible. It got like made in Japan, right? It's about it. Serial number wrong. Everything was wrong. You feed it to an LLM that, you know, has been trained with vision, like a super small one from Olama. And everything works perfectly. It even was able to figure out that the FCC trademark, their little FCC logo, actually said FCC, even though it was F with circular C's inside of it. So it's really cool. Really cool solution, self-hosted solution. And so, you know, that's where I'm thinking that this year is the year for software, not only because people are making all of these, you know, awesome solutions to self-host, it's that People have a lot of assistance now to get those ideas to make them come to fruition. You know, they have agents to help them. I was just talking to a guy the other day who just built the piece of software he always dreamed of, but never had the ability to do it because he's, he's not, you know, he's, he's not a developer. He's not a developer. And say what you want about, you know, that code and whatever. I'm a developer too. Yeah. Yeah. Good.
Adam Stacoviak
Because I think that's, that's, that's. Does it work? Does it solve a problem? That's good code. Does it solve my problem? Did it exist before this moment?
Techno Tim (Tim Stewart)
That's good code. That's right. And so people who are driven by results or who want, you know, code is just means to an end for a lot of people. You talk to product developers, you talk to people who are in IT, but don't do code, but have these ideas. Those are the people right now who are creating these awesome solutions and finally being able to get those ideas out of their head. So anyways, long story short, I just talked to a guy who built this whole solution on top of like Unify's API. It's actually Chris from Crosstalk Solutions. He built this whole solution on top of Unify's API. And it's like the solution he's wanted for years, but never took the time to do it or paid a developer to do it. So anyways, we're seeing lots of that now. And I'm hopeful. And it's super exhilarating to see these ideas coming out because, you know, when developers, when you have people who are generally software developers, you know, they're, I don't Mean to bucket people up, but, you know, a lot of times they're, you know, deep focused on some super technical solution, looks perfect, runs perfect, you know, structured in a certain Way. But now I'm seeing these solutions by people who, you know, think way outside of the box and they're just trying to solve a problem. And, you know, I get to see how they solve that problem. And it's really cool to see because like, you know, I might not have approached the problem the same way that they did. And so I get to see like a new perspective on, on, on coding. So I don't know, that's the other piece is availability. So I think this year is the year for self-hosting software for open source software or for solutions in general to be able to run on your home lab, because a lot of people are just going To be okay with the hardware that they had for a couple of years. And, you know, people like me who love to self-host stuff are always looking for like the next container app to run on your server.
Adam Stacoviak
Yeah. I feel you on that front there, man. I've been scratching little itches is how I'd say it. Question on paperless is can it handle books? I suppose this is does the OCR and or the vision version of that books are cool too because one thing I'm doing is I'm trying to figure out how to get knowledge out of certain books I only Own in paper that I can't even get in digital. There's a lot of books that are just not like that. And I'm thinking, great. I have this book. It's on my bookshelf over there. I've had it for years. I paid the author. I've paid the publisher. It's my copy. But I'm not going to go pick it up because that's the old way. Not that I don't read books. I still read, okay I still read. But you can read good. I can be good. You know, I was trying to build a little center for people who can read good. But, you know, I'm just not there yet. I'm not Zoolander yet. School for ants. That's a good clip. That was a good clip.
Techno Tim (Tim Stewart)
So can you do books with this paperless world? Yeah. So you can, you can, because you can have multi-page documents. So you could, I mean, you would have just basically had this, you know, this whatever 300 page, you know, document. Right. Uh, and then you could feed that to the LLM, uh, which has vision and yeah, it should be able to parse it all out. Like paperless by itself should do pretty good on books as long as you get a good scan on it. But I'd still feed it to the LLM anyways for it to use its vision. Cause it's going to be, you're going to go from whatever 80% accuracy, probably a lot lower to like 90, high nineties accuracy. OCR in general, you don't realize how bad it is until like you actually try to scan something in the real world. And you're like, oh yeah, this, this used to be amazing, but it's not amazing anymore because we have vision-based LLMs that are amazing. So yeah, you, you absolutely So I'm thinking, okay, you would scan it, you would get it in paperless, it would put it in PDF form. ([Time 0:13:58](https://share.snipd.com/snip/6ee13608-6adb-4129-8a48-fa397f7a75d3))
- **Preserve Raw Scans For Reprocessing**
- Keep raw images as a bronze layer before transforming for RAG so you can reprocess as models improve.
- Build a medallion ETL: raw images, cleaned/augmented silver, then gold production data or Markdown.
Transcript:
Adam Stacoviak
Maybe you'll go here with me, Tim. I've been thinking about ETL pipelines. I feel like the world is an API, the world is a CLI, and the world is an ETL. And that means extract, transform, load. And I feel like that's exactly what you're doing there. So if I were building that pipeline and I were using paperless and I was behind the scenes in your little nerd research lab there or whatever, you know, I would want to keep the original Images. And the reason I would want to keep the original images, I wouldn't, I wouldn't want to extract whatever the purest original copy of it would be, which would be an image, right? Let's not take the transformed version of it. Let's extract literally what we get from it, the raw data. So let's have a raw layer. That's if you went with the, I think it's the medallion process, I believe is what it's called. You got silver, you got gold and you got you got bronze, you got silver, you got gold. And so the bronze layer would be this original raw layer. And so that would be simply images of every page you have. It could be the simple image of your cereal placard, you know, or it could be all the pages of the book, store those in the raw copy as an image. Boom. You got that. That's your, that's your bronze layer. Then the T comes into play. The transform comes into play. You say, okay, let's now take all those images. And this is great as technology or models change or vision models get better is you can go back to that original raw source. It's almost like how they do mastering for films. They go back to an original film that was shot on film, remastered for 4K, but they're going back to those original slides, you know? And so that's kind of the same process. I would want the original image though.
Techno Tim (Tim Stewart)
Oh, I agree. I agree. I like it. This is similar to like meta fields, you know, in, in developers and APIs, when you, when you scrape stuff, you know, it's like, let's, let's pull out the stuff that we can use and put it In our API, but oh, by the way, we're going to have this meta field that has everything we found to begin with, just in case we need to come back and process it a little bit later, a little Bit better. Yeah.
Adam Stacoviak
Well, you leave it on the, on the table. If you don't do that, you put them on the floor, you know, you're not, you're not capturing it So you tend to throw away in that process. To get to the pristine, you throw away what was not really that good to you. But in the ETL world, you want to keep that original raw source. Now, insofar as that it does hold value. But if you go back to that original raw, if you need to ever, as your technology changes in the transform layer, well, then you've got lots of things you could do that goes back and gets More accuracy if you can't get full accuracy now if your score is 50 out of 50 or 100 out of 100 in your quality score and your raw is not really anymore we'll throw it in the reference pile You know but i want the images i want the images so that so that when it comes down to that table, I can actually have the LLM examine the image of the table and then the markdown we get from It and be like, that's good. Let's go. You know?
Techno Tim (Tim Stewart)
Yeah. I like it. Man, ETL has taken on such a different, I guess, a different perspective. You know, last time I was talking about ETL was, you know, it was SQL, like trying to, you know, pull data out of, you know, one database and put it in another, you know, in the perspective Of this. Yeah, it really makes a lot of sense because, you know, LLMs in general are like best effort, best guest every time, you know? And so that best effort, best guest is going to be different every time and it could be better in the future or it could be worse. Who knows? But yeah, saving the source image. Yeah, that's awesome. It sounds like a fantastic way to treat, you know, analyzing images like this.
Adam Stacoviak
Yeah, the pipeline is Medallion. And like I said, it's bronze is the, you know, the base layer, which is your raw, your silver, which is like a, you know, maybe an augmented version of that. That's been kind of cleaned up a little bit. Then you finally transform it in the final layer in your gold layer, which could be your production database, for example, or your production layer. So you've got, you know, that first layer raw, that sort of middle layer where you're sort of evaluating things. Maybe you're doing some joins. Maybe you've got multiple databases. ([Time 0:24:00](https://share.snipd.com/snip/8da019a2-1b60-46b4-980d-c81754ab8d54))
- **AI Fixed My VLAN Mess**
- Adam couldn't get DNS for a guest's Switch and blamed his new DNSHole project before finding the root cause was VLAN rules.
- He used Claude via CLI/API to inspect and fix the UniFi VLAN rules, restoring connectivity in minutes.
Transcript:
Adam Stacoviak
I said, you know, you got to be on my guest network. Well, for some reason, they just couldn't get on. Like the authentication happened to the Wi-Fi network. You know, all things checked out is good. Couldn't get DNS. And so I thought it was my newly homegrown Rust project, which is called DNS Hole. So I rebuilt Pie hole in rust. If you didn't know this, it's not available yet. DNS hole.dev in the future, very soon. I'm waiting for one or two more things to happen before I can do that. But right now, even as we speak, my DNS is being resolved by my own DNS server that has fully replaced what pie hole is. I think you'll love it when I can release it. As a matter of fact, I'll share it with you soon if we can. All that to say is that he couldn't get on via DNS. And I'm like, gosh, DNS hole, maybe you messed up here. It was not DNS hole, okay? DNS hole was perfect. You know what it was? What's that? It was VLANs, man. It was my VLAN rules. Okay, so of course I popped out Cloud and I'm like, what's going on here? I couldn't figure it out on my own and i'm like gosh why didn't you just pull out clod and like let it just log into your unify and just check out some things and so through investigation It turns out i had some jacked up vlan rules and it while it was in i was like you've done this all wrong you know this, this is great work here, Adam. But like, you got old rules. You got these rules that conflict. You got this one rule that does nothing. You got this whole set of rules that doesn't make any sense. Can I fix this for you, please? Sure, Claude. Please, please help me out. Five, ten minutes later, beautiful VLAN scenario again. All the world's great. He's on the Internet. They're playing and having fun. They're playing Mario Kart and life is good. So, I mean, like that's the world we live in, Tim. You know, I can't even get my VLANs right, but Claude can.
Techno Tim (Tim Stewart)
That is awesome. So I haven't used Claude in that way. Like, uh, I, to be honest, I, I haven't used Claude all that much. I, you know, I, I use, uh, co-pilot, you know, with models, you name the models. But no, that's interesting. So did it do it through the CLI? Yes. And the API. Yeah, gotcha.
Adam Stacoviak
Well, it knows the IP address. It has my auth. I've got an SSH key. So I'll SSH into my UDM Pro. Gotcha. So it's me. It's me. Yeah, yeah, yeah. So it logged in. Dude, listen. Okay. Hold your, hold your seat. It reads the Mongo database directly. It will update the Mongo database directly. I know that's, it's not cool in production. Don't read and write the database. But I've done it before. And so I was confident. And then it will trigger whatever it does to like, let the UI catch up essentially. Like the cache layer that's in the UDM Pro or whatever. Like just because you change database doesn't mean that the reads come back quickly. You got to sort of recache the cache kind of stuff. ([Time 0:29:50](https://share.snipd.com/snip/4f375652-f29e-4604-bceb-b80709df7bec))
- **Automate VM Provisioning**
- Automate Proxmox with a CLI or agent to provision VMs in seconds with presets for CPU, RAM, disk, IP, and SSH keys.
- Use templates stored in user-land so you can update VM definitions without recompiling the CLI binary.
Transcript:
Adam Stacoviak
I think that's such a wild world. I think that's what's that's what's making home lab more special to me proxmox has got a little more fun tim if you i'm gonna have to show you some things okay i have a cli i have a cli built Called pxm stands for proxmox and a one-liner in a one-liner tim i can have a brand new ubuntu machine running i can specify the ip address i can specify the cpu the ram and the disk it already Has my ssh key and literally in less than 10 seconds it's reporting the ip address back to me yeah via the cli yeah yeah And moments later that same, I can do PXM info and then whatever the, The VM ID is. So PXM info one Oh four, for example, and it reports back to me SSH user is, you know, Ubuntu at whatever IP address, all that good stuff, whatever the details are of that machine. And moments later, my agents can be building on brand new infrastructure. Yeah.
Techno Tim (Tim Stewart)
Isn't that cool? Yeah, that is awesome. Yeah, no, it is awesome. This is exactly what I'm talking about. This is exactly what I'm talking about. ([Time 0:33:05](https://share.snipd.com/snip/d9575f27-c9af-4112-a6c2-1e2757b8a4fc))
- **Agents Stress Databases**
- Agents and LLMs create new data loads: vectors, conversational history, embeddings, and high-frequency DB access.
- This growth pushes teams to rethink databases and data architecture for agent workloads.
Transcript:
Adam Stacoviak
This is the year we almost break the database. Let me explain. Where do agents actually store their stuff? They've got vectors, relational data, conversational history, embeddings, and they're hammering the database at speeds that humans just never have done before. And most teams are duct taping together a Postgres instance, a vector database, maybe Elasticsearch for search. It's a mess. Our friends at TaggerData looked at this and said, what if the database just understood agents? That's agentic Postgres. It's Postgres built specifically for AI agents, and it combines three things that usually require three separate systems. Native model context, protocol servers, MCP hybrid search, and zero copy forks. The MCP integration is the clever bit. Your agents can actually talk directly to the database. They can query data, introspect schemas, execute SQL without you writing fragile glue code. The database essentially becomes a tool your agent can wield safely. Then there's hybrid search. TaggerData merges vector similarity search with good old keyword search into a SQL query. No separate vector database, no elastic search cluster, semantic and keyword search in one transaction, one engine. Okay, my favorite feature, the forks. Agents can spawn sub-second, zero-copy database clones for isolated testing. This is not a database they can destroy. It's a fork. It's a copy off of your main production database, if you so choose. We're talking a one-terabyte database, fort, in under one second. Your agent can run destructive experiments in a sandbox without touching production, and you only pay for the data that actually changes. That's how Copy on Write works. All your agent data, vectors, relational tables, time series metrics, conversational history, lives in one querible engine. It's the elegant simplification that makes you wonder why we've been doing it the hard way for so long. ([Time 0:36:57](https://share.snipd.com/snip/3f0ec9c6-5d61-4e2a-a26f-7f3186380200))
- **Use Agentic Databases**
- Consider databases that combine SQL and vector search to avoid managing separate vector DBs and Elasticsearch clusters.
- Use MCP-enabled or agent-aware DBs so agents can query and act on data securely without fragile glue code.
Transcript:
Adam Stacoviak
We're talking a one-terabyte database, fort, in under one second. Your agent can run destructive experiments in a sandbox without touching production, and you only pay for the data that actually changes. That's how Copy on Write works. All your agent data, vectors, relational tables, time series metrics, conversational history, lives in one querible engine. It's the elegant simplification that makes you wonder why we've been doing it the hard way for so long. So if you're building with AI agents and you're tired of managing a zoo of data systems, check out our friends at TigerData at TigerData.com. They've got a free trial and a CLI with an MCP server you can download to start experimenting right now. ([Time 0:38:34](https://share.snipd.com/snip/3c0346ee-d346-4cd4-82e3-60ac6d3c04fd))
- **Loop Agents With Clear Specs**
- Use iterative agent loops (Ralph Wiggum/RALF) to let agents attempt tasks repeatedly until they meet spec or budget constraints.
- Define prompt.md with clear specs, iteration limits, and cost caps before unleashing loops on test hardware.
Transcript:
Adam Stacoviak
That I have a pretty clear vision, I would set loose this thing on that machine and just have it build this Proxmox redo, I suppose, potentially, you know, because I'm just trying to get The value out of it, not so much the pristine code. Sometimes that's the value part too, and you enjoy the process. But just for an exercise, because I want to automate Proxmox, why not do it via this Ralph Wiggum loop, which is to just do it until it's done. And you can kind of give it repetitions. You can say, okay, do, you know, you know, one version of it, not a version, but I think like tries, I forget what the terminology is for it. Let me see if I can find it real quick. It's like one iteration, two iterations, and you can specify because you have, you know, only so many dollars to spend. Don't want to spend more than 20 bucks on this feature or 10 bucks on this feature. So either spend 20 bucks in the feature or, you know, 10 or 15 iterations until you get to some result. And then I'll come back and examine it and to run it again. All you do is just run it again. It's like item voting in that way. It'll just go back and do it again. Like that's such a cool world to be in, man. ([Time 0:41:20](https://share.snipd.com/snip/f05a81dd-11fd-4afe-90f7-1fd7d4775dd0))
- **Return To One Big Box**
- Scarcity is pushing homelabbers toward 'one big box' designs combining storage, compute, GPU, and apps.
- Techno Tim already co-locates apps on his TrueNAS using ZFS special vdevs and NVMe to gain NVMe-like performance.
Transcript:
Techno Tim (Tim Stewart)
Is. So this kind of goes into, you know, another one of my predictions for this year too is if we could ever build anything is one big box. I think people are going to return to this one big box idea where, where they're, yeah. Uh, only because things are hard to get ahold of. And, you know, while, while you, you might be able to get hold of lots of little older machines, you know, the, the, the one liter machines, you know, to do, you know, clustering. I feel like now that things are so scarce, people might be going back to one big box, that's your storage, that's your AI, that's your compute, that's your, you know, virtualization, That's your NAS, that's your everything. And it's kind of the way I've been going too. So I do have my true NAS box. It's one big box, you know, has a video card, has RAM, has 10 hard drives, you know, GPU, all that stuff. And so that's, you know, not only my NAS running ZFS, but it's also where I'm running my applications now, too. So I've moved a lot of my applications onto my NAS. Yeah.
Adam Stacoviak
I watched that video of yours where you were doing stuff with containers and you had to do that sort of sidecar load, which I did follow. But I didn't get the same results you did. Maybe, is that the way you're doing it with that whole, you have to create the YAML file and then it knows about it in the app container world? Yep.
Techno Tim (Tim Stewart)
Well, if you're talking about TrueNAS, yeah, yeah. So I, I, I, so you don't have to use YAML and do it that way. I do because I want YAML because I'm a developer, but also it's a lot, I'd much rather edit YAML than fill out a form any day, even if you could give me, you know, you could, yeah. And so, and also because then you get CLIs and you get help from AI, you get all the stuff you get with YAML and I can do it in VS code. So there's that too. So yes. So I'm now running my applications on top of my NAS. So I've always gone back and forth. Like, you know, do I want my NAS to just be a NAS and just be storage? Or do I want my NAS to be an application server too, and then run those applications on top of my NAS? And so I've done both and I'm still kind of doing both. But for the most part, what I'm calling now my home production is on my NAS. And so my home production, you know, I've gotten a little bit wiser over the years and a little bit crazier, but you know, I have a home production now and my home production is where the Services are that need to be up. They need to work or I'm going to hear about it. You know, that's, that's Plex, that's my NAS. That's, you know, whatever else I have running, which is a lot of stuff. And when I say I'll hear about it, I don't just mean my wife because she will say something if Plex is down. Because we record a lot of stuff. And if it doesn't record Survivor on whatever night, I hear about it. So that needs to be up. But also, you know, alerts and stuff I have set up and running too. So, you know, my home production. I'm sure Billy's stuff even. That is right. Yeah. Grafana's on there. Oh, I've been getting so deep. On there. Oh yeah. I've been getting so deep in Grafana and Prometheus now. And it goes back to what you were saying. Like, you know, you know, I, I do a ton of, well, I've done a ton of Grafana and Prometheus in the past, a lot of observability stuff, you know, in the enterprise world or corporate world. But at home, I was always kind of like, man, that's, that's a lot of work. That's a lot of work to get that going. You know, now that I have help from, you know, LLMs, it's, it's work I want to do. Because while I could muddle through it and spend a week getting, you know, scraping, working on one machine, you know, the trade-off just wasn't there. And so now that I can scrape metrics on one machine in about 10 minutes, the trade-off is there. And so it's worth it to me. And so, yeah, tons of tons of, I'm, I'm monitoring everything now. I have metrics on everything now, you, you name it, you name it. And I'm going to show off some of this pretty soon in my home lab tour. I do every year. It's, it's soon, both the hardware and software, everything I host and run. Excited. Yeah. So that's coming soon. But I, you know, I need to make it really good for YouTube. You know, people have certain expectations and for some reason, it's always got to be a little bit better. People will be like, oh, that's what you did last year. So yeah so I'm running my applications on my NAS now. And there is a reason for that, not just because I want one box, but ZFS is a really, really good file system. And when you layer on stuff like, you know, caching and then metadata, special VDEVs and separating out your metadata and putting that on ultra fast storage and then putting, you know, Your app data on fast storage too, you get this really good bulk storage that can perform like NVMe storage. And so that's been my idea, this kind of crazy idea they have. I'm putting 10, 10, 14 terabyte hard drives in an array, you know, I'm doing Stripe V devs, kind of boring. But and then on top of that, I'm, you know, augmenting the things that need to run fast, like metadata lookups and app data and putting that on super fast storage. But anything in that ZFS pool can can also use it. So it's kind of a tiered approach to storage. You have ARC, which is RAM. RAM is going to be the fastest. Then I have this, you know, special VDEV where I can put files on there too, that are below a certain file size. And then I have bulk storage. So my idea is run hybrid ZFS. You know, all of my video editing goes on there, but also all of my databases still go on that pool too. And I still get, you know, NVMe like performance for most of the things that I'm running. So it's pretty cool. And so it's been a challenge for me to get that working. So that's why I'm doing it. And mainly because, you know, I always look at it like this. You know, if Plex is running on one machine, which it used to, and my media collection is on another machine, now I have two chances for it to be down. If I reboot my NAS or I reboot my application server, right? And so now I've doubled the chances of that service being down in my home. And so I co-located everything onto one box. So now it's like, well, you know, if the NAS is down, that means the apps are down too, but my NAS should never be down. And if it's down, we have big problems. So, so yeah, that's, that's kind of what I've done. ([Time 0:44:22](https://share.snipd.com/snip/b9d7b03f-97fd-4e43-8dde-090c908d6b2a))
- **Tier ZFS With Special VDEVs**
- Use ZFS special vdevs and ARC to place metadata and small files on NVMe for much better responsiveness on spinning-disk pools.
- Mirror special vdevs and keep backups because losing them threatens data availability.
Transcript:
Techno Tim (Tim Stewart)
I mean, people in production probably won't do this. I, I, I think it's cool, but you know, to make my hard drives, normal hard drives, you know, be as performant and as responsive as NVMe. So not only the speed that you get, but as responsive. And that's, again, like I've layered in NVMe to handle all of the quick writes, quick files, quick access. And for anything else, it's going into RAM, which is another huge case of like, yeah, I want to store my applications on something that has tons of RAM. And if it's storing, you know, bits and blocks in ARC, which is, you know, ZFS is RAM cache. If it's storing that stuff in RAM, yeah, do it. I want it to. So I'm like getting like the super performant, you know, apps that are mostly reading out of RAM. If they aren't, then they'll read out of NVMe storage. And then worst case scenario, they read from a slow disk, which is worst case scenario because I have all those tiers.
Adam Stacoviak
Can you tease what your RAM, your VDEV is, which is NVMe and then your disks?
Techno Tim (Tim Stewart)
I know you're probably a person some of your future videos bubble but oh no this is no i've done videos on this too so so my um so i have uh striped vdevs so let's back up so for bulk storage I have 10 14 terabyte hard drives okay and of those 10 14 terabyte hard drives i doing striped VDEVs or kind of mirrored pairs where I have two that are in a pair that are mirrored. And so, which means I have 50% loss of my data. So you got seven terabytes, essentially. Yes. Per pair is seven terabytes. Yep. That's exactly right. And so, but I do that for two reasons. One is because you can, in mirrored pairs, you can stripe them across. So you're basically kind of getting like a RAID 10. I don't want to say a RAID 10. Think of it like a RAID 10 where, you know, you have these pairs, but the data is striped across. So you get the performance on reads and you get performance on write, which is good for me when I edit videos because, you know, I have a bunch of sequential reads and writes and I don't Know where they're going to be. But on top of that, you can also expand by pairs. And so traditional ZFS is super complicated on expanding. And I know that they've been adding features to be able to expand VDEVs and do all this stuff. But, you know, when I started my array years ago, I realized that, you know, buying two drives at a time is a lot cheaper than replacing all four drives with four different size drives, Just so I can get a bigger pool. And so in the traditional sense with ZFS, it's kind of what you have to do is you got to plan up front and buy up front, but doing pairs, let me build incrementally and buy incrementally. So anyways, that's my, that's my slow disk array. Then I've done this thing called special V devs, which is basically you say, Hey, all of the metadata about that data, instead of storing it on the pool itself, move it off onto super fast NVMe drives. So if you end up in a folder, like I have some folders that have thousands of files, you know, that can take a really long time for it to parse that metadata and retrieve that metadata because It lives on slow spinning disks. Well, if you have a special VDEV, you move it off of there so it can look it up on NVMe. Then on top of that, another thing you can do with special VDEVs is you can say, oh, by the way, don't just store my metadata there. If you find any files that are, I don't know, below 64K, just put them on there too that's pretty cool so if you think about it like now I'm now any small file which usually takes a little While to find on spinning discs is now stored on there too and so it's like I've just given my my whole entire array a huge boost because now most of the stuff is handling happening on mbme There's one huge caveat to that whole thing if you lose that special vdev you lose all your data but i'm listening yeah yeah yeah so you lose all your definitely cowboy in this i mean yeah But but you know what you're doing yeah but i've done the same thing mirrored vdevs so i have four mbme drives you know and so two would have to die for me to lose all my data. Right. But then on top of that, you should have a backup. Right. And so, you know, I am definitely going cowboy because I want the performance, but I think that's, that's, uh, I, I'm being a careful cowboy. ([Time 1:00:03](https://share.snipd.com/snip/d7c4dec9-a3cf-4401-9ac8-29cbc00bdf1b))
- **Start Small, Build Services**
- Start homelabbing with whatever old PC you have; you don't need cutting-edge compute to self-host many services.
- Focus on baseline services: storage, compute, and a transcoding-capable GPU, then iterate with containers like apps on a phone.
Transcript:
Adam Stacoviak
Yeah.
Techno Tim (Tim Stewart)
Yeah. Non-corruption. Yeah. That's like, you know, a lot of people will go back and forth whether you need it or not. People will say, oh, if you care about your data, you do because you don't, you know, if the memory gets crushed. Well, that's where it writes first. It's the source of truth. Yeah. So in ZFS, it's less important. I'll say that because of how it checks and how it does its CRC checks on the memory and can verify the data. Some people still swear by it. Like they'll say like, if you don't use ECC, you might as well not even do stuff. You know, people go to the extreme. I'm not there, but I'm glad I have it. How about that?
Adam Stacoviak
That's an interesting world. I mean, so when you think about a problem like this, so let's zoom out to, you know, not scare the home labbers away, those curious folks. When you think about this problem, do you get out your big old whiteboard? When you're specking this world out, how do you think about it? Because you're a YouTuber too. So you think about it probably in the story arc. And you also think about as a technologist, how do you map this and plan this and test this world? How do you do that?
Techno Tim (Tim Stewart)
You know, first and foremost, like I've been doing this for a long time, even before YouTube. Like I've had a server in my basement since I don't even know, I'll probably date myself, probably like 2004 or five, you know, going back to like this old piece of junk that when I was in Tech support, I asked my manager if I could take it home so I could learn about Linux and learn about Active Directory. And he looked at me like I was crazy because the thing was, you know, 10 years old already. And he, you know, told me, yeah, you can take it, just take the hard drives out because, you know, I had data on it. And so I've been doing this for a long time. I've had a server in my basement for a long time. So I, I generally think about, you know, what do I want to do? What capabilities do I want to have? You know, generally speaking, I want to provide file services. So I want a NAS to be able to do shares and store my files on. I don't want to store my files, obviously, on my system. I want to store them on my NAS because then that gets backed up. I want to have some compute. And it takes very little compute to do most the things you want to do. A lot of people will say, get server grade, you know, but I could spin up this I3 right over here. That's, I don't know, uh, from five years ago. And this will like destroy any, you know, self-hosted container I throw at it and like laugh at it. Like, so you don't need much compute at all. Ram is great, but again, like you don't need tons of RAM. And so I just try to think of, you know, what services do I want to provide? For me, it's storage. For me, we record a lot of TV and, you know, stream stuff at home. So I think about Plex. Plex then brings in a video card if I want to transcode. Most of the stuff I can direct stream here, but, you know, when we travel or whatever, iPads, you know, phones, they want to transcode. So having a video card in there that can do that transcoding for me on the fly is good. You know, that's a decision point too. You could, you could get by an Intel stuff, but then I start thinking, well, I want to run models at home too. So I kind of want to, you know, have shared infrastructure. So I want my video card to be shared too. So that's what I do now. Share my video card with Plex, with Olama, with the stuff we just talked about, you know, with paperless AI and stuff like that. Technically that's going through Olama. But even some of my, you know, I do some transcoding for some of my, you know, video cameras too. So yeah, I try to find a video card that'll work in all those scenarios. And so, you know, I, I never want people to think like, oh, I, I need to go and buy this big thing before I can start home labbing. It's never like that. Like if you have an old PC in your basement, use that first, figure out what you want to do with it you know use it as is if it had windows on it from 10 years ago wipe it put linux on it and if you're Scared of linux that's fine you can put windows on it but i would say just try linux uh because you're going to find things are a lot more compatible yeah for sure and just just try it i mean You might find it sucks to be a sysadmin at home you know uh i enjoy it i enjoy it when things go wrong my wife says something doesn't work that's when i'm like all right you know it's developing Something broke i have a job my head is on that's right this is this is why i'm backwards if i'm tim oh that's right that's right yeah um but, I, I enjoy doing it. You know, a lot of people joke on a lot of my comments, you know, on my YouTube video are bro has a full-time job at home and it kind of is right, you know, to an extent, but, ([Time 1:09:19](https://share.snipd.com/snip/ca4ef1a6-2a11-449d-8efb-9e633968e61d))
- **Prefer Native OCI Containers**
- Prefer Docker/OCI containers as first-class citizens on homelab hypervisors for faster app deployment and simpler workflows.
- If Proxmox lacks native OCI support, run containers on TrueNAS or via LXC as a practical workaround.
Transcript:
Techno Tim (Tim Stewart)
Then I use a Docker compose file and I'm done. So that's kind of what I'm getting with TrueNAS now. I just wish, you know, Proxmox would just build that into their CLI or UI or whatever, so that people just don't have to do this. Well, I'm going to run an LXC and I'm going to run it as root so then I can install Docker to then run an OCI container inside of this LXC container or pay the virtualization tax and run it Inside of a VM. I just want as bare metal as possible. And I don't know. I'm sure Proxmox has a lot of reasons why they don't do it. Probably, you know, has something to do, again, with their strategy. It doesn't fit in there. But I just don't see how you could ignore OCI containers in general. Like, yeah.
Adam Stacoviak
Yeah, I agree with that. I do agree with that. Well, the closest I've been able to come is the CLI I built, which in this case, it's got the cloud image and Ubuntu or even a Fedora cloud image on the server already. Yeah. Which it uses that as its base, like you would. And so rather than going that whole route of creating the template, including the template to create a new machine, the CLI does a version of that through automation. And, uh, you know, you're able to, you know, through cloud init, you're able to, uh, define the network, right? You've got all that there, the user, the network, the SHK, and then everything else is the Proxmox API, which I really wish Proxmox and TrueNAS did a better job of documenting their API. It's just not, it's not super, I mean, it's good documentation, but I just feel like they, they don't treat it like a first-class citizen. And me, the kind of developer I am is I want to play with your API. I want to build my tools on top of your system, not be forced to go to your web UI, even web UI, like even with TrueNAS, like you're the same. I don't want to fill out a form to spin up a new thing. Well, I would much rather automate through whatever layer it is, whether it's me or an agent, some sort of CLI. And then if the agent's using it, then it can just easily use the CLI I built. ([Time 1:27:56](https://share.snipd.com/snip/534c6669-b04e-4eff-96a6-16cc5dfeed72))
- **Keep Templates In User Land**
- Store VM templates and post-install scripts in user-land repositories so provisioning CLIs can remain stable and users can update templates without recompilation.
- Make templates idempotent and simple so agents or CLIs can reprovision reliably.
Transcript:
Adam Stacoviak
Well, the closest I've been able to come is the CLI I built, which in this case, it's got the cloud image and Ubuntu or even a Fedora cloud image on the server already. Yeah. Which it uses that as its base, like you would. And so rather than going that whole route of creating the template, including the template to create a new machine, the CLI does a version of that through automation. And, uh, you know, you're able to, you know, through cloud init, you're able to, uh, define the network, right? You've got all that there, the user, the network, the SHK, and then everything else is the Proxmox API, which I really wish Proxmox and TrueNAS did a better job of documenting their API. It's just not, it's not super, I mean, it's good documentation, but I just feel like they, they don't treat it like a first-class citizen. And me, the kind of developer I am is I want to play with your API. I want to build my tools on top of your system, not be forced to go to your web UI, even web UI, like even with TrueNAS, like you're the same. I don't want to fill out a form to spin up a new thing. Well, I would much rather automate through whatever layer it is, whether it's me or an agent, some sort of CLI. And then if the agent's using it, then it can just easily use the CLI I built. But I want to be able to automate those things on those kinds of systems. The closest I've come is, is that exactly is like PMX, you know, VM, new, and then specify all these things, send it a template, which is super easy. ([Time 1:28:46](https://share.snipd.com/snip/41f0a1b4-5224-4440-b734-a306e130fe57))
- **Segment Networks By Trust**
- Design VLAN segmentation by trust and required access, not simply by device type, to limit blast radius.
- Use separate VLANs for trusted, kids, IoT, guests, cameras, and networking gear as needed.
Transcript:
Adam Stacoviak
Up my VLANs based on your video and it was upset with me. Just saying.
Techno Tim (Tim Stewart)
It's operator.
Adam Stacoviak
And I really didn't know much about him because I was like, you know, I've been told, Hey, if you run a network, you should have VLANs because you want your kids to be on one thing, which I totally agree. You know, you want your guests to be on another. And I totally agree with that, too. And then everything else is on this trusted network, which I totally agree with. But then all this intermingling, I'm like, well, just because just because it's an NVIDIA Shield, should I put it on my IOT thing? And then the answer is no, the answer should be, it should be entrusted. It just needs access to too much, you know? And there's other things that like, it's the dumb things that you definitely don't want on your trusted network on the IOT VLAN. And so the three VLANs I'm for sure I want is trusted kids and IOT and guests. Yep.
Techno Tim (Tim Stewart)
Yeah. That's, that's kind of where I've settled too. But then I have all of my networking equipment, you know, on a separate one. Like it's, you know, it's, it's on the default one. My trusted is its own VLAN. I do have one more and then cameras, all my cameras go on one VLAN. But yes, I agree. You got to think about like, it's not necessarily what the device is. It's kind of the role that it plays and how much do you trust it? Yeah. And so some people might say, yeah, put my HomePod on IoT. I don't want my HomePod, you know, that's IoT. Well, if you're asking, if you give it access to your schedule and you're telling it to turn on your lights in your home, I think you kind of trust that thing, you know, enough to put it on Your trusted network. And so that's the way I kind of think of it now. It's like, what does it need access to and how hard is it to go to, you know, cross the chasm, you know, like home assistant, like I do trust that thing, but I don't want to write a thousand Firewall rules for it to go talk to everything in IoT. So I put it on the IoT because I don't want to do the opposite. So, yeah, it's even my Xbox for a while. I was like, die hard. Like, no, you are IoT. But I'm just like, you know, I put my password into this thing and I play games. It's going to go on my trusted network because I don't want to cross the network just to do other things, you know?
Adam Stacoviak
I think you just got to worry about if that thing ever gets circumvented. That's the main thing is like if it gets. Yeah, yeah.
Techno Tim (Tim Stewart)
It's all about limiting your blast radius, limiting your blast radius and how comfortable you are with that, you know? Yeah. ([Time 1:49:54](https://share.snipd.com/snip/16a383b1-6761-4407-8472-155a69fff1fb))
- **Ask AI To Write Tests Too**
- Always have AI-generated code produce tests as well, because tests document intent and validate behavior for future re-runs.
- Tell the LLM to create unit/integration tests whenever you accept generated code into your repos.
Transcript:
Techno Tim (Tim Stewart)
Well, kind of related to that. One thing I did learn too is, you know, after having AI write some code is having it write test too is super important. I've noticed. Yes. So I've noticed like anything I want to keep, have it write tests, because not only does it prove that it works, it's a good hint for it to understand how the code works. Just like humans, you know, anytime, like when I review someone's code, I'm like, where are the tests? Not because I'm asking where your tests are, because in your test, I can kind of figure out like what you were thinking when you wrote this and what you're trying to do. So I've noticed that, too, is like anything you care about, you know, that you have AI writing, have it write some tests, too. It's cost you what's some tokens, not really any brainpower, but tell them to do it, too, because it's it's good. ([Time 1:56:13](https://share.snipd.com/snip/089e5382-47b0-4526-b1a0-c8edd9691db9))