09 - Aug - 2026

[HomeLab #2] Everything I’ve self-hosted on my homelab, ranked by how much I adore them

It’s been a while since I finally chipped in and built a homelab. You can read all about the specs and setup in my previous writing, but now, let’s talk about what actually makes this home server earn its metal. Because the hardware itself is only half the fun.

Since building it, I’ve experimented with a bunch of tools and services. Some have failed, some have been abandoned, and some are still running but barely get used. This list is about the ones that actually stayed — I use them regularly enough that they’ve justified having a giant workstation humming away in my basement.

6

An adequately-sized LLM

Unlimited grunt work without the token anxiety

Screenshot by Amir Bohlooli for MUO

Yes. Has to be first on the list. This is why the machine has a graphics card to begin with. I’ve talked before about the single biggest perk of local LLMs over frontier cloud models. Not privacy or cost, but stability. No corporation’s going to suddenly change the top-k or temperature or the default thinking level. The models aren’t going to get silent updates. What I set up is what they will remain.

I use the local LLM for data cleanup and analysis. I don’t chat with it, and I don’t use it for coding. Nearly all of the output I get from it is JSON. It’s perfectly fit for this kind of task, where I don’t need much creativity or thought, but there’s lots and lots of work to be done. I’ve tried doing the same thing with Claude and locked myself out for a week. With a local LLM, there’s no token limit.

I’ve benchmarked plenty of the top open-weight local models on this machine. I default to Qwen3.6 27B, which has great performance given its relatively tiny size. But I’m not putting this at the top of the list because I’m completely happy with it.

Unfortunately, even a 24GB card isn’t enough for me to start seriously replacing cloud AI models with my local one. Qwen3.6 27B is great, but I have to run it quantized, and even then, it takes up a good 21GB of my VRAM. That leaves little room for the cache, so I can’t really crank up the context. And what good is AI without context? So, for now, my local LLM really is limited to grunt work. Maybe newer models will get more efficient. Or maybe I just need more VRAM.

5

ComfyUI

The other reason I needed that GPU

I say the local LLM was the reason this machine got a GPU, but maybe ComfyUI is just as much of a reason. This was something I’d never really been able to use properly locally before. My 12GB AMD card wasn’t big enough for most of the useful image models I wanted to run, and, well, it was AMD.

With the RTX 3090’s 24GB of VRAM, I can use some really good models. And all locally! That gives me the same advantage as the LLM: control and stability. I get to control every parameter, and I can lock everything in to get consistent output instead of hoping a cloud service behaves the same way tomorrow.

The output isn’t limited to images, either. Videos (I haven’t tried those yet), 3D models (mind-blowing), background removal, lighting adjustments, and pretty much everything else. It’s especially great because I can build automations around it, and it doesn’t cost money every time something makes a request.

Unfortunately, there’s a catch, and it’s the same one as before: VRAM. It’s not that I want to run larger image models. The problem is that if I want to run a decent image model, I first have to unload the LLM I was using for other tasks. I can’t really have my LLM and image model working at the same time because there just isn’t enough space. And because I have lots of data work that depends on the LLM, that’s made me use ComfyUI less than I’d like.

4

Telegram bots

My bots now

Telegram bot chat sharing a music track and an artistic image
Screenshot by Amir for MUO

Of course, I’ve hosted Telegram bots before, but they always ended up being more of a learning project than something useful. The biggest problem was that I couldn’t really host them. I’d run them on my computer, and then they’d go down whenever my computer was off. Otherwise, I’d need to rent a VPS. Now I have tons of virtual servers sitting in my basement. It’s high time I raised a bot army!

What kind of bots? One of them is one of those popular “downloader” bots. You send it a link from YouTube or somewhere else, and it downloads the video and sends it back to you (thanks to yt-dlp and ffmpeg). Most public bots either make you pay or force you to join their ad channels. Mine is for me only, and it works beautifully.

Another is a bot that integrates Telegram with Obsidian. I can forward a message to my Obsidian bot, and it’ll append it to an “ideas to follow up” note in my vault. Neither of these is particularly complicated. That’s what I like about them. Having an always-on machine means little projects like these can stop being projects and just become tools I use.

3

Jellyfin

Giving the movie hoard somewhere to live

8 Mile movie on Jellyfin
Amir Bohlooli / MUO

This is a no-brainer. I used to host Jellyfin on my computer for a long time, but again, it had the same problem as the bots. Then I moved it to the Dell laptop I used as a home server for a while. Ironically, the Jellyfin server could do more when it was running on that tiny laptop compared to the huge workstation I have now. That’s because it wasn’t running in a VM with no GPU. It had an Intel integrated GPU, and Jellyfin could use that to efficiently encode and decode video files.

With the Proxmox machine, that’s not an option right now, but it doesn’t really need to be. I just use Direct Play and let the client device do the decoding. That’s what I’ve been doing, and it’s been working great. Most of the devices I watch on can handle the files anyway, so why make the server do extra work? I’ve even added another 4TB HDD just to hoard more movies. Jellyfin is awesome.

2

Astro

Obsidian became my CMS

Lighthouse report showing perfect performance and SEO scores
Screenshot by Amir for MUO

I have a personal blog. For the longest time, it was hosted on a cPanel host and ran WordPress. It’s a very personal, private kind of project, so I didn’t need an entire VPS for it. And WordPress is easy! There are tons of plugins and themes. But… WordPress is bloated. I don’t mean that as a general statement, but at least for my use case, it was really, really bloated. I wasn’t running a massive website with multiple writers.

What annoyed me the most, though, was that I couldn’t really customize it the way I wanted. It runs on PHP. Editing a theme is more headache than it’s worth, and unfortunately, I’d built the entire thing around Elementor, the drag-and-drop page builder. That made changing anything outside the boundaries of the theme way more annoying than it needed to be.

When I decided to migrate the site from the cPanel host to my own homelab, I realized I didn’t actually want to migrate WordPress at all. It ate lots of RAM and was slow, all for nothing. That’s when I came across Astro. I exported the posts from WordPress, moved them to a folder in my Obsidian vault, and pointed Astro there. Now my blog is basically just files.

Since it’s good old JavaScript and HTML, I can actually get in there and make whatever customizations I want. Like a cool little WebGL cloud I worked on, which I can finally showcase on the homepage. Oh, and I can just put an Obsidian note in the blog folder in my vault and it’ll publish it as a post. How cool is that? And the Lighthouse scores are just so satisfying.

1

OpenWrt

My most overpowered router yet

OpenWrt router status page showing system and memory info
Screenshot by Amir for MUO

Well, well, well. Here we are. I really admire OpenWrt. I’ve tried to convert as many people as I can by telling everyone to buy a used Linksys router and install OpenWrt on it, or by showcasing all the things I can do with OpenWrt that you normally can’t do on a regular home router. I don’t know if I’ve had much success converting people, but I have had great success converting almost every networking device I could get my hands on to OpenWrt. And every time, I’m surprised by just how wide OpenWrt’s hardware support is.

The problem was that my network eventually outgrew the hardware. I have some fairly resource-heavy VPN, PBR, multi-WAN, and geo-routing rules happening. Unfortunately, as awesome as OpenWrt is, it couldn’t magically give my routers more than the 128MB of RAM they had. I needed something more.

On a friend’s tip, I decided to install OpenWrt as a VM on my Proxmox machine. Now I have a router with 4GB of RAM and 50GB of storage. I can install all the packages I want. I can give it more resources if I need them. I can take snapshots before I inevitably break something. And I’m no longer trying to squeeze increasingly ridiculous networking rules into hardware designed to sit in someone’s living room and broadcast Wi-Fi. It was a bit intimidating to set up, but it’s been bliss ever since.

The server itself might be my favorite part

None of these things, individually, really justified building the homelab. But once the machine is already there, the equation changes. Every little idea becomes, “Why not?” I spin up a container or VM, try it, and see if it earns a permanent place. Plenty of things don’t, but I really adore the ones that do.

Leave a Reply

Your email address will not be published. Required fields are marked *