Containerize all the things

It’s been a while since I had time to write something on my blog. Time is sparse, especially with a little kid roaming around the place. Besides, i’ve been busy finally converting the homeserver setup to containers for all the services I’m running. This website, for example, is now completely run from a docker container.

Self hosting less painfull with containers

Everything nowadays is moving to containers, a process that already started years ago (I’m a little late to the party, but I only have so much time to invest on these little project). So naturally, all the awesome self hosted FOSS projects are also available as containers.

Once you get the hang of setting up a few containers, things are pretty easy to configure.
The main advantage for my setup is that maintenance is more manageable. Watchtower daily updates my Docker images, so it’s always running the latest, greatest and most secure versions of the docker images.
Backing up the data of those containers is also pretty straightforward when you use named volumes. Just setup a cron job on the host with a little script to query all volumes and push them for safe storage somewhere.

Finally, having segregation with containers when it comes to dependancies, makes things more manageable. Need a specific package for service A and another for service B is not a problem with containers.

Still some work to do

Almost everything except a few of my services are now running in containers.
The biggest one that still needs to be containerized, is my own project Chell.
That will be a nice little project to learn how to create my own Docker images, moving forward.

It comes with a cost

Running everything in containers is not without any costs though. The memory consumption of the setup went up considerably (now running tens of containers) compared to running everything on bare metal. Depending on the image, spinning up a container usually has a footprint of a 100 megs in RAM or more.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *