This summer, I created my own home server(s).
I got into self-hosting due to a friend I met through the indieweb (hello kliaagu) mentioning it once. My first server was a raspberry pi 4 and an ssd enclosure plugged into it. It was rough, but it's a server! Raspberry pi's are great to use if you have them laying around, otherwise it's not worth the current cost. This model is a pi 4 with 4 gbs of ram, my uncle gave it to me a long time ago. I installed ubuntu server on it and ran mainly jellyfin. The ssd in the m.2 enclosure is a 1 tb ssd nvme. With how the prices of nvme ssd's right now, it felt like a waste to use it like this, but fortunately I checked the drive on crystal disk info when I removed it, and there were no flaws, it still said it was at 100%.
I then upgraded came from a secondhand computer I had laying around. The motherboard is an hp elitedesk sff (small form factor) which means the motherboard came from a small desktop pcs. These guys are perfect because they are built to be power efficient. The CPU is a i7 4th gen, which is miles more powerful than the pi. I put in 32 gb ddr3, two 2 tb hdd, and it runs on a 256 gb sata ssd.
By the way, I was completely new to linux before my pi server, it was over there where I learned how to use debian based unix in the command line with ubuntu server. During my time in taiwan, I brought a thinkpad laptop I had that I installed Kubuntu on. I was having a lot of fun ssh'ing into my pi server and playing around with light docker containers. But now with a way more powerful server, I set up Proxmox and laid out my server like this.
Proxmox
+-- vm100(ubuntu server lts)
| +-- docker
| | +-- ngnix proxy manager (forward 443, dns-01 challenge because isp blocks port 80 lol)
| | +-- Jellyfin
| | +-- plex (amp)
| | +-- authentik
| | +-- crowdsec
| | +-- Nextcloud
| | +-- dashy
| | +-- immich
| | +-- portainer
| | +-- cadvisor
| | +-- borgbackup
| +-- crafty controller (minecraft server)
| +-- notes
| +-- glances
+-- vm1000(lxc tailscale)
+-- vm101(debian12)(off)
+-- vm102(windows11)(off)
I really should use more lxc, but I don't have a need for them right now, besides tailscale, because I only have 1 primary vm which I do everything through. Heres a breakdown of all my services and what they do:
Services:
Jellyfin! One of the best services you can self-host. Downloading my own media like movies, tv shows, anime and streaming it from my own hardware. No need to pay annoying streaming subscription fees. Note: all media I have on my server is acquired legally without tormenting (hehe).
Plexamp is my spotify replacement. I use both plex and jellyfin because Plex is for music, mainly because plex has a mobile app. Plex has been going downhill-ish which is why I stray away from hosting media there. But plexamp has been great so far. If I eventually replace plexamp, it's because I've been using mp3 players to listen to music instead.
Immich is google images replacement. The UI looks just like google images.
Nextcloud is same as Immich, but for general files. Like google drive!
Crafty is my minecraft server dashboard.
Security and reverse proxy:
The only services I have revealed to the public are Jellyfin, Nextcloud, and immich. I run them through Ngnix proxy manager which was trivially easy to use and setup. I only port forward 443 on my router, because my ISP doesn't allow port 80 to be revealed unless you call them up. Because of this, I can't use standard http-01 challenge to get a ssl certificate with let's encrypt. Instead, I use dns-01 which is perfectly fine for me.
My security is: crowdsec for ip-banning and monitoring bots that port scan, http probe, and potentially brute force attacks. Authentik which lets me set up multi factor authentication: password, one time password. And after that, a login page to nextcloud. Authentik mainly protects nextcloud and immich. After that, I use fail2ban for login bans. It's redundant to have both fail2ban and crowdsec but I'm just lazy and don't feel like removing fail2ban yet.
Dashboard and monitoring:
I eventually want to have prometheus and grafana for really nice charts and dashboard monitoring. But something that I don't like is the UI for self-hosted apps is always kinda ugly. I'm not talking about minimalist, creator didn't feel like investing time in GUI ugly. I'm talking about vibe coded claude UI ugly. As of right now I have use dashy as my main dashboard because it has custom CSS, and of course I had to hop on it.
Ignore the errors right now I got lazy and didn't feel like fixing it haha. And the ip is a tailscale ip so you can't do much with it. I also have uptime kuma, which my pi is running and constantly pinging my main server, and if anything goes down, I get a notification on my phone on either discord or an app called ntfy.
Just yesterday, I also added qbittorent and komga (self-hosted ebook reader)! And while a bit silly, my favorite part of this project is the fact I got to learn how to really use the linux terminal. Terminals always have that "hacking into the mainframe" idea stuck to it. What makes it great though, is 1. I am able to control a computer from hundreds of miles away, because text is very easy to send over the internet vs GUI, 2. You are controlling a computer the old fashion way, 3. It looks cool :3

