All posts

Why I started homelab?

·4 min read
Why I started homelab?

Homelabs are pretty cool, but why did I actually start mine? Honestly, what I used it for in the beginning is completely different from what I use it for today. And I'm sure it will change again in a few years.

The Start

I've always loved looking at my friend's home automation setup. He had a bunch of smart lights, fans, and plugs all connected to Home Assistant, running on an old Mac Mini. I was a bit jealous and wanted something just like it.

So, when my brother gave me an old server from his office, which was a Dell Precision 3630 with an i7 CPU and 16GB of RAM, I thought, this is it. I knew it was way too powerful for just running Home Assistant, but I went ahead and installed Linux Mint on it anyway. That turned out to be a bad choice.

Why Home Assistant wasn't the right fit

It wasn't that Home Assistant was bad, it was just the way I had it set up. Plus, I realized I didn't actually own that many smart bulbs or sensors in my house. Running a loud, power-hungry office server 24/7 just to turn off two lamps at night felt pretty silly. I realized it didn't really fit what I needed a homelab for.

So the machine sat under my desk for a bit, doing nothing. Until I ran into a real problem.

The Google Photos worry

I've always used Google Photos and had close to a terabyte of travel pictures on it. I didn't mind paying Google for the storage. But as the storage kept growing, I started worrying: What if I want to leave Google Photos in five or ten years? Moving a massive, exploded library out of there is going to be a nightmare. Is there an easier way?

I wanted to actually own my files and make sure they were easy to move if I ever needed to. I started looking for alternatives and found Immich. It looked clean, fast, and was exactly what I needed to justify having a home server.

Building a safe home for my data

I started hosting Immich on the old Dell server. It worked fine, but as I loaded years of memories onto it, I started worrying about data safety. I wanted to make sure my hard drives wouldn't just fail one day and erase everything.

So, I decided to separate my storage from my main server. I set up a dedicated storage system running TrueNAS on a Mini PC. I put 40GB of RAM in it and two 4TB hard drives. Right now, it's running in RAID 0 (which is risky because it's only one backup), but I plan to upgrade to RAID 5 with 3 or 4 drives soon.

I also set up automated backups of my Immich library to Cloudflare R2 as an offsite copy just in case. To make sure the servers talk to each other fast and reliably, I hardwired my entire home, running Ethernet cables through the walls.

What else do I use it for?

Today, the lab does a few other things:

  • Jellyfin: I use this to stream my movies and music to my devices.
  • Development environment: I host my dev environment on the server now. That way, my local Mac doesn't run out of storage from heavy builds and massive node_modules folders.
  • Uptime: Power cuts aren't an issue either, since I have a home inverter that keeps the servers running for up to 6 hours during an outage.

How it's set up (Networking)

I use Tailscale to connect to my servers privately when I'm away from home. If I need to make a service public, I use Cloudflare Tunnels, which means I don't have to open any ports on my home router.

My advice if you want to start

If you're on the fence about starting a homelab, here is my advice:

  1. Set up backups early: Don't wait. Make sure your critical data is backed up somewhere else (like the cloud or an external drive) right from the start.
  2. Grow slowly: Don't go out and buy a massive rack of servers on day one. Start with whatever old PC you have, figure out what you actually need, and build from there.
[ system_help_v1.0 ]

Execute command sequence to navigate system

DirectoriesCMD
/root1
/about2
/blog3
/uses4
/books5
FunctionsCMD
tech_manifeststk
press_kit_hdpk
view_projectspr
ext_skcriptsc
GamesCMD
snake_gamesnake
tetris_gametris
breakoutbrk
dino_rundino
pongpong
memory_matchmem
tic_tac_toettt
typing_testwpm
game_of_lifelife
UtilitiesCMD
fortunefrtn
list_pagesls
navigatecd ___
pixel_drawdraw
Press [ESC] to Exit