This is an automated archive made by the Lemmit Bot.
The original was posted on /r/selfhosted by /u/xXSorakaXx on 2025-01-27 21:23:21+00:00.
Hi Reddit,
Just wanted to share how I started my selfhost/homelab journey. Hopefully this post serves as inspiration for your own homelab or maybe you even have suggestions how I can improve my own. I’ll also include some of the lessons I learned so hopefully you won’t have to make the same mistakes. I work in a hospital as cloud engineer, so I have quite a bit of experience with IT and Linux systems, which really helped me get everything up and running.
I started a few years ago with a Synology NAS (DS220+), with two 4TB HDDs in RAID1 configuration and upgraded RAM (+16 GB). I could install Docker Compose on it and start playing around with containers. In a short amount of time, I gathered quite a long list of containers (~35). Unfortunately, I did notice quite quickly that it was slow, this mainly had to do with the disk speed. I didn’t want to already replace my disks since they were brand new, my NAS did however come with 2 USB ports, so I bought a fast USB stick for the databases. It is not the most reliable type of storage, so I did try to make sure to at least regularly take backups. I must say that it worked quite well, there were some cases where the stick entered read-only mode which were easily fixed by re-mounting it. Ain’t stupid if it works right?
Quite recently, friends also started getting interested in my setup since streaming services kept increasing their prices and cracking down on account sharing. I also started running into the limitations of my current setup, I mainly didn’t have enough storage. My NAS only has two bays, so if I wanted to upgrade my storage, it would mean replacing disks, while they were still working fine. I also kinda wanted to get more performance and started looking into building my own homeserver.
For this I watched a bunch of videos on recommendations from tech youtubers. I came to the following build, which was around 1.100 EUR in total:
- Fractal Design Node 304 Mini ITX Tower Case
- Gigabyte B550I AORUS PRO AX Mini ITX AM4 Motherboard
- AMD Ryzen 5 5600G
- Kingston NV3 1 TB M.2 NVME SSD (For OS, databases and application data)
- 2x Crucial CT16G4DFRA32A 16GB DDR4 RAM
- 2x Seagate Ironwolf Pro 16 TB (Factory refurbished)
- GIGABYTE UD750GM 750W PSU
- Intel Arc A380 ELF 6GB
I was happy with the refurbished deal that I found for the two HDDs, which only cost me 178 EUR, which normally cost around 320 EUR. I did look at the SMART values and runtime metrics. These were still very low, so it looks like I got new drives, or they were able to reset this at the factory?
You might ask, why did you get a CPU with integrated graphics AND a dedicated graphics card? Well, I started reading up on how to do the hardware transcoding, and it turns out that AMD doesn’t work well, it was highly discouraged by the Jellyfin docs, so I decided to get a cheap Intel card. I’ve heard it was quite energy efficient; it supports the AV1 which might be nice in the future. In hindsight it might also have been better to get a PSU with lower capacity since these are a lot more efficient.
It took me about a day to assemble the server, I installed Ubuntu Server 24.04 LTS and started installing all packages I needed. For the HDD filesystem, I used MergerFS to stitch together the HDDs into one large volume. I mostly use this for storing large media files, so I don’t really care about redundancy. It sucks if one of the drives dies, but then I’ll just have to download the media again which will take a few days.
Recently I also implemented backup strategy for my important data (appdata/databases), since I’m not using RAID to store data across multiple disks. For this I’m using the docker-volume-backup container. Every week it runs the backup process; it stops a bunch of containers during the backup, makes a copy and compresses the data. After that it stores the archive in a specified local location and uploads a copy via SMTP to my NAS.
Some useful services that I’m selfhosting and would like to highlight:
- Nginx Proxy Manager: Makes it very easy to run a reverse proxy, also handles all the SSL certificates for you
- Jellyfin: Media streaming system, open source and free.
- Spotweb: A free decentralized usenet indexer
- Tdarr: Especially nice if you don’t have a beefy server to transcode media while streaming. I used this on my Synology to get all my media into the H.264 format which is very well supported so no transcoding would be necessary. It can offload jobs to nodes (my gaming PC with an RTX 2070 GPU) for transcoding. Currently using a flow that can transcode all media into H.265 (better compression) using both my Intel GPU and Nvidia GPU, using the One Flow to Rule Them All by u/SamSausages.
- AdGuardHome: Self hosted DNS server, which blocks ads and trackers. The amount of traffic that is blocked is insane!
- Dockergc / watchtower: Deleting dangling containers and automatically installing updated containers
- Ddclient: I have a dynamic IP, so this will automatically update my DNS records
- Crowdsec: Crowdsourced security, bans abusive IPs that have been attacking other severs on my server too
- Redlib: Private Reddit frontend which I now use almost exclusively. In the past I was an Apollo user. I didn’t like the Reddit app with all of its tracking so switched over to Redlib after they killed third party apps. Only disadvantage is that you cannot post using Redlib.
- Firefly: Great for tracking how your finances are doing. I’m also using the auto import function which can pull my banking data through GoCardless. I have a bunch of classification rules setup which give me great insights on how I’m spending my money, without much effort.
- Karaoke Eternal: This is a fun project that is quite unknown, you can use it to host a karaoke server. Had tons of fun with friends with this service.
So far, I’m very pleased with the performance. It now takes less than 10 seconds to start my docker compose stack. On my Synology this would take more than 5 minutes. It can also handle multiple media streaming sessions with ease and doesn’t break the bank in terms of power consumption. I didn’t notice a significant increase in monthly power bill. I unfortunately don’t have the tools to measure how much power it consumes.
Work in progress... Was still missing the drives and the GPU. Getting all the cables in was quite difficult with such a small case. Getting it tidy was impossible.
Finally done...