I find mini PCs very affordable for building a cozy home lab. My best bet was to look for refurbished or used mini (or micro) PCs at online marketplaces. Since I wanted to start small, I preferred to look for Docker containers for self-hosted services rather than a complicated direct deployment.

From media streaming to managing a smart home, I experimented with and juggled several containers before narrowing down to the ones I really need most often. Here are some of the amazing Docker containers that run 24/7 on my $100 mini PC.

Jellyfin

Hosting a local media streamer

To reduce my streaming service usage, I have set up a Jellyfin server that hosts some of my favorite and most popular movies and shows. To make this container resource-efficient, I disabled hardware transcoding and used Direct Play whenever possible. Such a configuration helps Jellyfin run smoothly, rarely ever crashes, and doesn’t buffer while playing files locally. To my surprise, it’s quickly becoming a Netflix alternative for my family.

Jellyfin
iOS compatible
Yes
Android compatible
Yes

Jellyfin is one of the best Plex alternatives you can get, and that's thanks to its open-source nature and powerful set of features. There are apps for basically every platform and it's completely free to run your very own server.

Desktop compatible
Yes

Immich

Self-hosted photo management

Deploying the Immich containers with a Docker Compose file is quite convenient. Setting the proper volumes was what I focused on when installing it. As one of the early containers when I started with Docker, I barely tweaked the configuration. So now it manages photos without hiccups. Besides paying for cloud storage, I happily keep copies of photo backups on my Immich server for offline viewing. ​

Immich
Key highlights
Self-hosted
iOS compatible
Yes

Immich an open-source, self-hostable solution to backup photos and videos.

Android compatible
Yes

Syncthing

Sharing files becomes easy

To share files, like screenshots, locally between a MacBook and Windows is now easy, all thanks to Syncthing. After setting up the local shared folders, file transfers proceed smoothly. Its lightweight profile makes it highly reliable for sharing photos or documents between phones and computers. Most importantly, I get to set up two-way or send-only sync between folders. Its web interface allows managing the syncs and other admin controls.

Syncthing
OS
Windows, macOS, Linux

Syncthing is an open source, peer-to-peer file synchronization tool.

ownCloud

Web-based file management

Though Syncthing feels good enough for sharing files, I needed a proper browser-like interface to access and manage files. Along with Syncthing, ownCloud helps me share files directly via links. More importantly, this Docker’s web interface is reminiscent of other cloud services. That helps me teach my family to share important files and documents easily, while maintaining full control over the data.

ownCloud
OS
Windows, macOS, Linux
iOS compatible
Yes

ownCloud is an open-source option to create your own private, file-sharing server on the hardware in your home network or VPS.

Android compatible
Yes

Home Assistant

Local smart home shenanigans

After using Home Assistant OS for a while, I switched my approach to deploying the smart home platform as a Docker container. The initial setup felt a little tedious, especially when populating the Docker Compose file to include add-ons. That was worth it because the overall system overhead is way less, especially since I don’t use Frigate for cameras. The entire HA setup boots quickly. However, running Home Assistant as a container brings along multiple containers, and managing them becomes easier over time.

Home Assistant
OS
Windows, macOS, Linux
iOS compatible
Yes

Home Assistant is an open-source smart home automation platform for control, monitoring, and automating smart home devices.

Android compatible
Yes

Vaultwarden

Managing passwords effectively

As one of the few resource-intensive open-source options, Vaultwarden serves well to manage my family members’ passwords efficiently. Whether it’s for accessing other locally self-hosted services or online streaming accounts, the passwords are easily available to everyone. In the past, I tried Passbolt, but giving Vaultwarden a second chance turned out to be convenient for my family.

Vaultwarden
Key highlights
Self-hosted Bitwarden alternative

Vaulwarden is an open-source password manager that's self-hostable and is resource-efficient.

Uptime Kuma

Monitor the health of services and apps

While experimenting with new containers along with the regular ones, it’s important to know when something breaks. This simple, light-weight monitoring container lets me keep an eye on the health of other Docker containers. Also, I set up HTTP(S), DNS, TCP, and Ping devices to form a real-time monitoring system that alerts me when something stops working. The real-time alerts help me fix those broken apps quickly, and their uptime history helps further troubleshoot if a serious deep-dive is required. Its simple setup and friendly interface lets me enjoy full control over the monitoring data.

Uptime Kuma
Key highlights
Open-source monitor

Uptime Kuma is an open-source monitoring tool meant for tracking the uptime of services, apps, and websites.

Portainer (CE)

Managing the containers

Installing containers and experimenting is so convenient with a clean web UI that also offers management settings. Mapping volumes and setting up the container network becomes straightforward. Thanks to Portainer's web interface, troubleshooting crashing containers or other issues takes only a few clicks. It’s become one of the essential control panels to manage various Docker environments. ​

Portainer

Portainer is a lightweight, easy-to-use management interface for Docker, Kubernetes, and other container platforms. It simplifies the deployment, management, and monitoring of containers through a visual, web-based dashboard. With Portainer, users can manage container stacks, networks, volumes, and images without relying solely on command-line tools.

Pi-hole

For observing IoT behavior and ad-blocks​

Experimenting with various containers and IoT devices started attracting unknown traffic to my home network. I use Pi-hole to handle that with Unbound DNS. After auditing the outgoing traffic from smart devices, I tuned all of them to work locally, without cloud services support.

Pi-hole
OS
Linux
Price model
Free

Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole, preventing unwanted ads, trackers, and malicious domains from loading on any device connected to your network. It runs on lightweight hardware, such as a Raspberry Pi or in a virtual machine. By intercepting DNS queries, Pi-hole blocks ads before they ever reach your browser or apps, improving speed and privacy. It also provides an easy-to-use web interface for monitoring and managing network traffic.

Besides that, Pi-hole helps curb trackers and suspicious domains from exploiting my family members' devices, while also blocking spammy and phishing sites. ​

A roster of containers is now a daily essential

The majority of these containers host services that my family and I use daily. The only exception is Portainer. I only check it every couple of days to ensure my high-availability containers don't experience any configuration issues. In case anything goes wrong, I simply use the master Docker Compose file to make changes and re-spin the container.​

A combination of an affordable mini PC and Docker containers is excellent for running a handful of high-availability, essential services locally on a home network. As I continue to learn from my homelab building mistakes, I now prefer using most services locally and rely less on cloud services.