My Homelab: A Brief History
I've been a tech enthusiast for as long as I can remember. One of my favorite things to do as a kid was to read the Nat Geo Kids magazine, which often featured an article or two about some cool development in the tech world, like a medical breakthrough or research into clean energy. It really excited me - for years I would tell people that I wanted to be an inventor when I grew up. That's not really a job title, per se, but I'm on track to be an engineer, which is as close to an inventor as you can get.
As the years have gone by, this interest has only grown. [1] I've learned more about technology, kept up-to-date with the tech world, and even built a couple of computers. In the last year or so, I've become really into what people online call self-hosting, which is exactly what it sounds like. I've been slowly switching to running and using my own services instead of ones from third parties. This blog is one of those things! I wanted to write about how I got here and the things that I've set up, because I think it's pretty cool. [2]
The NAS
The first thing I wanted to try to do on my own was cloud storage. Technically, the 'cloud' is just another computer. Why not have this 'other computer' be my computer? Faster access, more control, nobody else peeking in at my files. A computer like this is called a network-attached storage (NAS).
I started by installing openmediavault on an old laptop of mine. It worked fine, though the system ran pretty slow because I was running the software off of a USB so I could use the laptop's internal drive for storage. After some tinkering with a VPN (virtual private network, allows me to connect to my WiFi network remotely) to access it when I wasn't home, the setup was ready! It was pretty cool once I got it working - being able to drag and drop files off of it like it was a full-fledged cloud service was fun.
After using this for a couple of months, I decided it was time for an upgrade. The idea of building a full homelab (computer lab at home) in my apartment had been floating around in my head for a while, and I wanted to get it rolling. I bought a Raspberry Pi and some storage drives off of eBay and built a tiny computer to run as a dedicated NAS.[3]
After some setup and time in online help forums, I got it running. This version runs much faster than the one on my old laptop and has lots more storage space. I've been using it as a replacement for iCloud Drive and it's been great! No complaints.
The Homeserver
I wasn't letting my old laptop off the hook after retiring it from NAS duty. Next was turning it into a homeserver, a computer that would run services for me to use. I installed Linux [4] on it and started putting different apps on it. Integrating it with my NAS would bring my apartment up to full homelab status.
I started simple with a Minecraft server that me and my roommates could play on, and then I stepped it up and installed JellyFin, a app that lets you run a streaming service on your home network to watch/listen to media you own. This took some more configuration, since it had to play nice with my NAS, where the media was stored.
Next up was this blog! I used Ghost, a self-hosted service very similar to Substack. However, a problem then presented itself. The blog was working, but you could only access it if you were on my WiFi network. That, for obvious reasons, would not work for me to share posts with friends and family around the world. It was time to get a domain.
danyull.com
This is the website where this blog lives. I bought the domain from Cloudflare for a pretty cheap $10/year, and then told Cloudflare to route traffic from this website to the service running on my laptop. [5]
I've since used similar routing to allow me to access all of the services I've been using from anywhere, just by going to a link on my website. It's pretty cool! It's allowed me to let friends and family use some of these services too, which is awesome.
A lot of the work I did in setting everything up was done while on a call with my brothers, since they're also interested in this kind of stuff. To let them use my NAS, I set up a fun little service called copyparty on the machine. It's a lightweight file server software that facilitates remote uploads/downloads from the machine with less hassle than using a VPN.
Photo Backup
The most recent endeavor of mine was setting up Immich, a photo-backup service. It has a clean UI reminiscent of Google Photos, and can back my photos up to my NAS. Again, not strictly necessary, I already have my photos backed up to two different services, but it's cool to have it local.
Why?
The main reason I did all of this was just because I think it's interesting. I've had a lot of fun getting this all setup, and it's been satisfying to use these apps and services knowing that I was the one that got them working. It's also been a good way to bond with my brothers while I'm at school - we've spent ample time in calls trying to iron out headaches together and rejoicing when everything finally works. There's also something to be said about privacy and avoiding the subscription-riddled landscape that is the internet these days.
I've also learned a lot about computers and networking through the process of getting this all running, which has been really rewarding. [6] I've put a lot more time and money into this than I care to admit, but, hey, everyone needs a hobby, right?
Seeing how some tech is used, some of the secrets tech companies hide, and the recent 'all in' attitude towards AI certaintly isn't amazing, but I'm trying to stay positive about it. ↩︎
Also because the blue-haired Berkeley student in me likes sticking it to the man that is big tech companies making everything subscription-based while harvesting your data to train their next AI model. ↩︎
This was expensive, but I'm rationalizing it by telling myself there's no monthly fee to use it (it'll pay itself off eventually, right?). ↩︎
This isn't helping my nerd status. If you're curious, it's running Ubuntu Server 24.04. ↩︎
This is an oversimplification - this took a decent amount of troubleshooting with cloudflare tunnels, email services, and other stuff I won't bore you with. It was frustrating at times but super satisfying to get working. Also, as you could probably guess, the real spelling of my name was not available. ↩︎
It's even inspired me to take a class about Linux at school, which has been really interesting. ↩︎