When I first started trying out self-hosted services, I chose to get started on my main Windows PC. This was one of the quickest ways I could get started, especially since I didn't know the ins and outs of self-hosting.
But recently, I decided to fish out my old NAS from storage as I finally had the time to try it out as an alternative platform. Since making the switch, this is what I've learned...
Self-hosting doesn't have to be scary, and I use these 4 tools without any development knowledge
Unlock self-hosting power without learning to code
Using my NAS is way more convenient
I was definitely missing out
The first benefit of self-hosting on my NAS rather than my main PC is convenience. Since I switch off my containers whenever I shut down my PC for the night or when I'm playing games, my services weren't available around the clock. I could have technically left my PC running, but I've been trying to save on electricity costs, so it just wasn't an option.
I hadn't previously used my NAS for self-hosting, since at the time my area was experiencing frequent power outages. I now have a portable power station that can keep my NAS online and safe from power surges. Since we don't experience as many power outages as we used to, I no longer feel the need to choose between powering my TV or PlayStation 5 over my NAS.
With the power backup in place, accessing my services through my NAS means that they're always available. This is great for apps that frequently sync data for backup, but also services that send me notifications. For example, I recently started hosting Vikunja on my NAS, and the container can now send me push notifications on my phone consistently.
Even for services that don't have an Android app, I can save them as a progressive web app on my phone to access them easily when I'm doing things around the house.
There are some performance trade-offs
I've already had to curb my ambitions
My NAS has a lot more storage space than my PC, thanks to its 3.5TB hard drive. But its CPU maxes out at 2.9GHz and is limited to two cores, while it also has only 2GB of RAM. This is in comparison to my PC, which has 16GB of RAM (with 6GB allocated to Docker Desktop containers), an NVMe SSD, and a six-core CPU with 12 threads that maxes out at 4.4Ghz.
This means that my NAS is much more constrained in terms of performance. This isn't noticeable for simple applications, but I noticed the slower performance when using Immich, with the app freezing a few times during syncing.
Even though I've only added a few of my services to my NAS, its resource monitor shows that even when not actively using and syncing services, half of its RAM is already in use. This occurs whenever I start up a new container, and when I added my Homarr dashboard while writing this, it climbed to 67% RAM usage.
As a result, while I'm less constrained when it comes to storage space, I am limited in how many containers and services I can run. I also likely won't be able to run some of the more resource-intensive services I use, since I've often seen my Docker Desktop containers exceed 4GB of RAM.
I can expand my NAS RAM up to 6GB with a 4GB memory module, but the stock is not available locally. So in the meantime, I'll have to be conservative in terms of how many services I run.
6 NAS upgrades I didn’t think I needed until I installed them
Once the storage part is sorted, here’s what comes next
Hosting on my main PC helped me learn the skills I needed for my NAS containers
I'm glad I took my time learning
Despite the convenience that I was missing out on, I'm still glad that I got started with self-hosting services on my main PC. This is because it gave me the time I needed to get to grips with using Docker containers, as well as Docker Compose.
So when I finally started trying out containers on my NAS, I had many of the skills I needed to get them running relatively easily. There has still been troubleshooting involved, especially since I don't have coding experience. But I was able to apply the skills I'd learned through Docker Desktop to work with Container Manager.
For example, Container Manager doesn't automatically hyperlink your containers — you need to enter the NAS IP address with the port assigned to the container. This sounds simple enough if you're familiar with self-hosting, but I only came across this information weeks after I started self-hosting, when I was trying to link another app to one of my containers.
When I first started self-hosting, I was also only familiar with the Docker run command and had no idea how to use or configure Docker Compose commands. When building containers using Container Manager, the guides I followed use Docker Compose to create projects. If I had started using Container Manager first, I wouldn't have had any idea what the YAML file the software wanted me to upload was.
My Home Assistant ambitions will still have to wait
I'll need more robust hardware
I haven't used Home Assistant yet because its add-ons won't work if it is set up in a container. I also knew that I couldn't really benefit from the platform if it was going offline every night. So I was excited at the prospect of setting up a virtual machine on my NAS to host Home Assistant.
This was the next project I was planning to complete, but when revisiting Home Assistant's documentation, I saw that the developers recommend at least 2GB of RAM for a VM running the platform. I thought maybe I could squeeze by on my NAS until I saw its current RAM usage with the few containers I had.
That means I'll have to wait until I upgrade my NAS, or find another cost-effective and power-efficient solution, to run Home Assistant.
Moving my self-hosted services to my NAS has been great, but it has caveats
I'm really excited about the benefits of having my self-hosted services on my NAS, including the fact that my services will remain up overnight. I also plan to finally figure out Tailscale so that I can access my NAS when outside of my home network.
At the same time, I also see that this won't fix all my frustrations with the limits of my current self-hosting setup. For that, I'll still need to invest in more hardware.
