Top Docker Containers in my Home Server

Looking at my Home Server I have about 40 containers running off and on. As a dev and an enthusiast there are a few containers whose extreme levels of use surprise me and one which doesn't surprise me at all. These are not the containers I interact directly with most often and yet, I think they are still among the most important and I'll try to cover why.

  1. Minio (S3 Storage)
  2. PosteIO (Mail Server)
  3. Traefik (Reverse Proxy)
1 - Minio

This is an Amazon S3 compatible file storage. I'm absolutely certain that there are others out there. I haven't used others. To the extent that I do use it, I don't think that there is any reason why an alternative could not be used. With that out of the way; I installed Minio a long time ago and it sat mostly unused for a while. I had a few files uploaded to a public bucket which I would share a link to with friends and family for hosting things like videos of my daughter's plays and the likes.

Then I dabbled with writing a custom extension for Jellyfin and needed a file server. I tried a bunch of things, but it ended up being easiest to integrate an S3 clone into my GitLab pipeline and I already had an S3 compliant storage solution, so it became the answer for those things. 

Speaking of GitLab, later I was looking for a solution for backing up GitLab and, once again, S3 was a solution.

I can have SQL backup directly to S3 as well, and WikiJS can use it as the file storage medium for the whole website.

The point is this; Amazon absolutely dominated file storage in the early cloud, and as a result S3 is the now essentially the standard which almost all things support. If you have other things in your home lab or home server you likely have something which will integrate with an S3 clone like Minio. And, just like something born of the cloud I'm terrified at the notion of trying to migrate that data now. Thankfully, the data is all local and I could certainly make an attempt if I ever wanted to.

2 - PosteIO

This is the second sleeper hit in my server. A lot of home lab and home server solutions like having a way to perform email. I found PosteIO the easiest for me to setup, but once again, this isn't really about a specific mail server, rather about having one in general. I added this to my setup originally because I wanted a way to host some burner accounts. I hate all of the spam I get on my main email accounts and this gave me a quick and dirty way to create an email account per thing I signed up for.

Once I got it setup though, it kept on popping up. This one is probably integrated into more services in my home server, but also probably gets used less than Minio. Reason being? I'm more or less the sole user of the services on my home server. Aside from notification/alert style emails, I rarely need to send myself email. It does surprise me just how many places it does pop up though, and I can certainly see it WAY outpacing Minio for anyone with a Home Lab or server that they share with friends and family. 

3 - Traefik

This is the one which did NOT surprise me, except by living up to the hype/expectations. I added Traefik specifically to be a central point in my home server to manage my sub-domains and Let's Encrypt cert. It took a bit of work to get the certificate output in a format other containers which needed it would accept (my email server for example, needs the cert to behave properly even though Traefik handles the SSL offload).

Also, unlike the others on the list, this is one that I do consider to be a specific recommendation. There are a lot of things out there which can act as a Reverse-Proxy, but very few which are dedicated to the task. If I have a small army of Docker containers which expose web sites, I don't need a web server like Nginx. Those containers are already hosting their own web servers. And despite the popularity and speed of Nginx, I found Traefik to be faster. Noticeably so.

Beyond that, the ability to configure it either via a file or directly in the YML for my Docker Compose  files was another differentiator and then lastly, the ability to configure it to handle the Let's Encrypt cert with the wildcard for the sub-domain was the other big deal for me. 

A lot of things which work with Let's Encrypt just want to configure SSL for a single sub-domain. While I can appreciate that some people might have just a single service they want exposed to the outside world, the problem ultimately lies in how Let's Encrypt gets setup which is that it requires ports 80/443 to do it's validation which means only a single service can have the ports routed to it at a time. Which would be fine if it were a one-time setup, but certs need renewal. 

And so, if you need a single entry point on port 80 or 443 then a Reverse Proxy is the natural thing to have listening there and managing the cert. 

Honorable Mentions
  • GitLab: I use this for source control and also for storing any documents I may want version controlled. If you're a dev self-hosting some form of Git based source control should be considered a must, but I'll add it to this list because I also use it to host my YML files and other projects/docs which aren't code. It can even be used an identity provider for OAuth I believe.
  • Portainer: If you use Docker this is WAY easier than living on the command line. I'm not sure I found it more convenient for Kubernetes. It serves a specific purpose, but is a very low level use case in the context of a home lab/server.
Why No Database?

While DBs also span multiple applications I don't mention any DBs here for 2 specific reasons: 
  1. Many containerized apps bring along a DB for the ride
  2. There is no universally supported DB
Conclusion

I find a lot of videos and articles on the "best containers" focus on very specific use cases; Media Servers, NextCloud, Home Assistant and so on. I get why those are popular videos. People generally want to know about things which bring a direct value to them. And these don't really do that. Mail servers and S3 CAN have direct value, but most people already have email and few people JUST need S3 storage. 

But those more popular containers only apply to specific things. The items above on the other hand have floated to the top due to their frequent, but indirect value. I can see myself changing my Wiki container, which uses both email and S3 storage, but I would have a very hard time changing any of these. They have proven themselves and become deeply integrated into most aspects of my work and home server.

Comments

Popular Posts