Self-hosting tools on local hardware may seem complicated when you’re a newcomer to the home lab space, but it’s fairly easy with the right set of tools. Docker, for example, is the simplest containerization environment for beginners, with the Compose feature letting you deploy services using YAML-based config files.

You’ve also got Komodo, Cockpit, Dozzle, and a handful of other FOSS utilities that help you manage your container toolkit from intuitive web UIs instead of relying on long terminal commands. Speaking of beginner-friendly apps, Docker Compose Maker is another must-have tool that can make your early Docker days a lot less painful.

👁 Accessing a Docker folder
5 Docker Compose tricks that made my home server more reliable

A collection of tips and tricks that leveled up my Docker Compose game

Docker Compose Maker includes YAML configs of popular utilities

And you’re free to modify the Compose settings

At first glance, DCM might seem like a local template repository containing pre-built YAML files for essential Docker containers, but it’s a lot more than that. While you can use the default templates without any issues, DCM lets you create custom Compose documents on the fly – and this includes the .env file that many containers require for app-specific variables.

Let’s say you want to deploy a Nextcloud instance with different persistent volumes, custom port numbers, and tweaked environment variables. Once you’ve selected Nextcloud inside DCM’s web UI, the latter will generate compose.yml and .env files with the right code for a new container, and you’re free to modify their parameters to your heart’s content. Better yet, DCM lets you change the volume paths, PUID/PGID, network mode, and other container settings. Apps-wise, DCM has a well-rounded collection of services most beginners would ever need for their Docker stacks, and you even get a couple of advanced automation, network, and coding tools thrown in for good measure.

Not to mention, DCM itself isn’t all that complicated to run. As long as you have a working Docker instance, you can execute the docker run -p 7576:7576 --name dcm --rm ghcr.io/ajnart/dcm command in the terminal to spin it up as a container. Since this app works on both x86 and ARM architectures, you can use it for your Docker escapades, regardless of whether you’re repurposing an old PC as a server or building a container-hosting hub on your Raspberry Pi. The only caveat is that you’ll need to enable HTTPS (and consequently, set up the right certificates) if you want to share your Compose documents with other home labbers, though you can accomplish this by downloading the code generated by DCM and sending it the old-fashioned way.

The real fun begins when you create multi-container configurations

DCM is loaded with templates for different container combos

So far, I’ve only discussed Docker Compose Maker’s utility when creating the YAML file for a single app. However, DCM becomes even more handy if you try to combine multiple tools into the same compose.yml and .env files. If you select two or more tools on DCM’s home page, the application automatically creates the Compose configurations with the necessary code for every tool. That’s a killer feature when you’re looking to replicate a container stack on multiple Docker instances or just want all your favorite services aggregated into a single Compose (and .env) file. Heck, DCM already includes pre-defined multi-container templates for different use cases, with some incorporating as many as ten services!

For example, if you’re planning to deploy a network stack comprising NetAlertX, Pi-hole, and Nginx, DCM lets you combine all their deployment configurations into the same Compose documents. Likewise, you can create dedicated YAML templates by combining the Docker configs for Jellyfin, Calibre-Web, Navidrome, Kavita, RomM, and other archive organization tools. Better yet, since you can tweak the volume paths and network settings, you can create ready-to-deploy container stack code that’s fine-tuned for your specific hardware.

You don’t need to worry about conflicting ports, either

If you’ve ever attempted to run too many containers on the same machine, you may have encountered failed deployments because multiple services tried accessing the same port. Fortunately, DCM sidesteps that issue by checking for port conflicts in your multi-container Compose files. Going back to our network stack example, Nginx and Pi-hole both use ports 80 and 443 on the host. If you try to deploy these services with the same Compose files, DCM detects the port conflicts and assigns different numbers to the second container.

It’s useful for home labbers, and even better for beginners

Having started my self-hosting journey with Docker commands, DCM would’ve been a game-changer in my early project-building days. Sure, it may not have all the obscure, wacky, and downright weird container images I run in my home lab after years of messing around with server tools, but being able to chain multiple services together in properly configured compose.yml and .env files makes DCM really useful for fledgling tinkerers.