DockerComposeMaker (DCM) is a self-hostable website to help you pick and create a docker-compose.yml file for your home server. Discover new containers, discover and share a config in a couple of clicks!
See the codeLive Demo 🚀 • Install 💻 • Contribute 🤝 • Supported Tools 📦 • Screenshots 📸
[!NOTE] 🌟 Community-Driven Project: DCM started as a simple tool but aims to become the go-to resource for Docker Compose configurations, powered by the community. We believe everyone has their favorite self-hosted tools, and we'd love for you to share yours! Whether you're using a popular application or a hidden gem, your contribution helps others discover and easily deploy great software.
DCM (Docker Compose Maker) turns a handful of clicks into a ready-to-use docker-compose.yaml and .env for your self-hosted apps. The catalog merges DCM's own compose definitions with the app catalog of self-host, so you also see apps DCM has no YAML for yet, marked self-host only.
Every selection shows the matching self-host install <apps> command. self-host is the sister project: one Go binary that installs and wires these apps for you, for people and for AI agents. Rather not manage YAML? Use it. Prefer to own the YAML? DCM stays fully usable on its own.
[!TIP] Most containers come pre-configured with best practices and sensible defaults, saving you hours of documentation reading and configuration tweaking.
💡 Share Your Stack: Using a great tool that's not listed here? We'd love to include it! Check out our contribution guide to help others discover and use your favorite containers.
Using Docker Compose Maker is simple and intuitive:
[!IMPORTANT] All containers are configured to use environment variables like
${PUID},${PGID}, and${TZ}. Make sure to set these in your deployment to avoid permission issues.
Once you have your docker-compose configuration, you have several ways to deploy it:
Simply copy the generated docker-compose.yaml and .env content, save them locally, and run docker-compose up -d to start your containers.
Download the generated docker-compose.yaml and .env files directly from the interface, then use them with your preferred Docker management tool.
[!NOTE] The downloaded .env file contains all the environment variables referenced in your docker-compose.yaml. Keep both files in the same directory when deploying.
If you're already using Portainer to manage your Docker environment, you can easily deploy your configuration as a stack:
[!CAUTION] When using Portainer Stacks, you'll need to manually add the environment variables or upload the .env file, as Portainer doesn't automatically read the .env file in all configurations.
Using Portainer provides a user-friendly web interface to manage, update, and monitor your containers without needing command-line tools.
The generated compose file works with any tool that supports docker-compose syntax, such as Docker Desktop, Rancher, Yacht, or command-line tools.
If you want to try DCM for yourself, there are several ways to get started:
Visit compose.ajnart.dev to use the tool immediately without installation.
[!NOTE] The online version includes analytics for usage tracking, while the self-hosted version does not.
Run with a single command:
docker run -p 7576:7576 --name dcm --rm ghcr.io/ajnart/dcm
Then visit http://localhost:7576 in your browser.
The Docker image is available for multiple platforms:
Create a docker-compose.yaml file:
services:
dcm:
image: ghcr.io/ajnart/dcm
container_name: dcm
ports:
- "7576:7576"
restart: unless-stopped
Then run:
docker-compose up -d
Easypanel is a self-hosted Docker deployment platform. It has a one-click Easypanel template for DCM, which runs the image above.
git clone https://github.com/ajnart/dcm.git
cd dcm
First install Bun if you haven't already, then run:
bun install --linker hoisted
[!NOTE] The hoisted linker is required: the default isolated linker breaks Turbopack.
[!WARNING] Using npm instead of Bun may result in longer installation times and potential compatibility issues. We strongly recommend using Bun for development.
bun run build
bun start
DCM includes configuration for many popular self-hosted applications, including:
📺 Media Management:
🔍 Dashboards & Management:
📥 Download Management:
🗄️ Databases:
📊 Monitoring & Automation:
🔐 Security: Vaultwarden
💾 Storage & Files: Nextcloud
Each tool includes a detailed description, GitHub star count, and pre-configured docker-compose settings.
[!NOTE] self-host is in preview: public downloads are not available yet, so the install command only works with access to its repository. The in-browser playground works for everyone.
Skip the YAML. self-host is one Go binary that installs, wires (API keys, Homarr tiles, download clients) and repairs self-hosted apps with Docker Compose. It has a terminal dashboard for people and --json commands for AI agents. DCM links to it from the header, the selection bar and the Copy Compose modal, prefilled with your selected services (https://self-host.fyi/?apps=<ids>&ref=dcm).
The self-host catalog is vendored in lib/selfhost-catalog.json. Refresh it with bun run sync:selfhost.
DCM uses Bun for testing. To run the tests:
# Run all tests
bun test
# Run Docker Compose validation tests
bun test:compose
# Run container schema validation tests
bun test:containers
DCM includes a Template Gallery that allows you to quickly add predefined stacks of containers based on common use cases:
To use the Template Gallery:
You can combine multiple templates to create your perfect self-hosted environment!


We welcome contributions to DCM! Whether you want to add new container definitions, improve documentation, or fix bugs, your help is appreciated.
Please check our CONTRIBUTING.md guide for detailed instructions on:
The easiest way to contribute is by adding new container definitions to our growing collection!
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this tool useful, consider supporting the project by:
Made with ❤️ by ajnart
3,022 followers · starred Apr 2025
56 followers · starred Apr 2025
573 followers · starred Apr 2025
4 followers · starred Apr 2025
DockerComposeMaker (DCM) is a self-hostable website to help you pick and create a docker-compose.yml file for your home server. Discover new containers, discover and share a config in a couple of clicks!
See the codeLive Demo 🚀 • Install 💻 • Contribute 🤝 • Supported Tools 📦 • Screenshots 📸
[!NOTE] 🌟 Community-Driven Project: DCM started as a simple tool but aims to become the go-to resource for Docker Compose configurations, powered by the community. We believe everyone has their favorite self-hosted tools, and we'd love for you to share yours! Whether you're using a popular application or a hidden gem, your contribution helps others discover and easily deploy great software.
DCM (Docker Compose Maker) turns a handful of clicks into a ready-to-use docker-compose.yaml and .env for your self-hosted apps. The catalog merges DCM's own compose definitions with the app catalog of self-host, so you also see apps DCM has no YAML for yet, marked self-host only.
Every selection shows the matching self-host install <apps> command. self-host is the sister project: one Go binary that installs and wires these apps for you, for people and for AI agents. Rather not manage YAML? Use it. Prefer to own the YAML? DCM stays fully usable on its own.
[!TIP] Most containers come pre-configured with best practices and sensible defaults, saving you hours of documentation reading and configuration tweaking.
💡 Share Your Stack: Using a great tool that's not listed here? We'd love to include it! Check out our contribution guide to help others discover and use your favorite containers.
Using Docker Compose Maker is simple and intuitive:
[!IMPORTANT] All containers are configured to use environment variables like
${PUID},${PGID}, and${TZ}. Make sure to set these in your deployment to avoid permission issues.
Once you have your docker-compose configuration, you have several ways to deploy it:
Simply copy the generated docker-compose.yaml and .env content, save them locally, and run docker-compose up -d to start your containers.
Download the generated docker-compose.yaml and .env files directly from the interface, then use them with your preferred Docker management tool.
[!NOTE] The downloaded .env file contains all the environment variables referenced in your docker-compose.yaml. Keep both files in the same directory when deploying.
If you're already using Portainer to manage your Docker environment, you can easily deploy your configuration as a stack:
[!CAUTION] When using Portainer Stacks, you'll need to manually add the environment variables or upload the .env file, as Portainer doesn't automatically read the .env file in all configurations.
Using Portainer provides a user-friendly web interface to manage, update, and monitor your containers without needing command-line tools.
The generated compose file works with any tool that supports docker-compose syntax, such as Docker Desktop, Rancher, Yacht, or command-line tools.
If you want to try DCM for yourself, there are several ways to get started:
Visit compose.ajnart.dev to use the tool immediately without installation.
[!NOTE] The online version includes analytics for usage tracking, while the self-hosted version does not.
Run with a single command:
docker run -p 7576:7576 --name dcm --rm ghcr.io/ajnart/dcm
Then visit http://localhost:7576 in your browser.
The Docker image is available for multiple platforms:
Create a docker-compose.yaml file:
services:
dcm:
image: ghcr.io/ajnart/dcm
container_name: dcm
ports:
- "7576:7576"
restart: unless-stopped
Then run:
docker-compose up -d
Easypanel is a self-hosted Docker deployment platform. It has a one-click Easypanel template for DCM, which runs the image above.
git clone https://github.com/ajnart/dcm.git
cd dcm
First install Bun if you haven't already, then run:
bun install --linker hoisted
[!NOTE] The hoisted linker is required: the default isolated linker breaks Turbopack.
[!WARNING] Using npm instead of Bun may result in longer installation times and potential compatibility issues. We strongly recommend using Bun for development.
bun run build
bun start
DCM includes configuration for many popular self-hosted applications, including:
📺 Media Management:
🔍 Dashboards & Management:
📥 Download Management:
🗄️ Databases:
📊 Monitoring & Automation:
🔐 Security: Vaultwarden
💾 Storage & Files: Nextcloud
Each tool includes a detailed description, GitHub star count, and pre-configured docker-compose settings.
[!NOTE] self-host is in preview: public downloads are not available yet, so the install command only works with access to its repository. The in-browser playground works for everyone.
Skip the YAML. self-host is one Go binary that installs, wires (API keys, Homarr tiles, download clients) and repairs self-hosted apps with Docker Compose. It has a terminal dashboard for people and --json commands for AI agents. DCM links to it from the header, the selection bar and the Copy Compose modal, prefilled with your selected services (https://self-host.fyi/?apps=<ids>&ref=dcm).
The self-host catalog is vendored in lib/selfhost-catalog.json. Refresh it with bun run sync:selfhost.
DCM uses Bun for testing. To run the tests:
# Run all tests
bun test
# Run Docker Compose validation tests
bun test:compose
# Run container schema validation tests
bun test:containers
DCM includes a Template Gallery that allows you to quickly add predefined stacks of containers based on common use cases:
To use the Template Gallery:
You can combine multiple templates to create your perfect self-hosted environment!


We welcome contributions to DCM! Whether you want to add new container definitions, improve documentation, or fix bugs, your help is appreciated.
Please check our CONTRIBUTING.md guide for detailed instructions on:
The easiest way to contribute is by adding new container definitions to our growing collection!
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this tool useful, consider supporting the project by:
Made with ❤️ by ajnart
3,022 followers · starred Apr 2025
56 followers · starred Apr 2025
573 followers · starred Apr 2025
4 followers · starred Apr 2025