{"id":27261213,"url":"https://github.com/ajnart/dcm","last_synced_at":"2025-05-15T12:02:32.920Z","repository":{"id":285591195,"uuid":"950728976","full_name":"ajnart/dcm","owner":"ajnart","description":"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!","archived":false,"fork":false,"pushed_at":"2025-05-05T07:53:29.000Z","size":2735,"stargazers_count":869,"open_issues_count":12,"forks_count":30,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-15T12:02:28.830Z","etag":null,"topics":["docker","docker-compose","homeserver","managment","self-hosted","selfhosted"],"latest_commit_sha":null,"homepage":"https://compose.ajnart.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajnart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"ajnart","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2025-03-18T15:45:55.000Z","updated_at":"2025-05-14T16:07:58.000Z","dependencies_parsed_at":"2025-04-23T23:48:04.816Z","dependency_job_id":"955cab4b-0ac0-482e-97b5-5273028c8b0e","html_url":"https://github.com/ajnart/dcm","commit_stats":null,"previous_names":["ajnart/docker-compose-maker","ajnart/dcm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajnart%2Fdcm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajnart%2Fdcm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajnart%2Fdcm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajnart%2Fdcm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajnart","download_url":"https://codeload.github.com/ajnart/dcm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337612,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","homeserver","managment","self-hosted","selfhosted"],"created_at":"2025-04-11T05:01:21.723Z","updated_at":"2025-05-15T12:02:32.847Z","avatar_url":"https://github.com/ajnart.png","language":"TypeScript","funding_links":["https://ko-fi.com/ajnart"],"categories":["TypeScript","docker"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./public/favicon.png\" height=\"80\" alt=\"DCM Logo\" /\u003e\n  \u003ch3\u003eDCM - Docker Compose Maker\u003c/h3\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/ajnart/dcm?label=%E2%AD%90%20Stars\u0026style=flat-square?branch=main\u0026kill_cache=1%22\"\u003e\n\u003ca href=\"https://github.com/ajnart/dcm/actions\"\u003e\n  \u003cimg title=\"CI Status\" src=\"https://github.com/ajnart/dcm/actions/workflows/build_image.yml/badge.svg\" alt=\"CI Status\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/ajnart/dcm/pkgs/container/dcm\"\u003e\n  \u003cimg alt=\"Docker Image\" src=\"https://img.shields.io/badge/🐳_Docker_Image-ghcr.io/ajnart/dcm-blue\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- Links --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://compose.ajnart.dev\"\u003e\n    \u003cstrong\u003eLive Demo 🚀\u003c/strong\u003e\n  \u003c/a\u003e\n  •\n  \u003ca href=\"#-quick-start\"\u003e\n    \u003cstrong\u003eInstall 💻\u003c/strong\u003e\n  \u003c/a\u003e\n  •\n  \u003ca href=\"#-contributing\"\u003e\n    \u003cstrong\u003eContribute 🤝\u003c/strong\u003e\n  \u003c/a\u003e\n  •\n  \u003ca href=\"#-supported-tools\"\u003e\n    \u003cstrong\u003eSupported Tools 📦\u003c/strong\u003e\n  \u003c/a\u003e\n  •\n  \u003ca href=\"#-screenshots\"\u003e\n    \u003cstrong\u003eScreenshots 📸\u003c/strong\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 📋 About\n\n\u003e [!NOTE]\n\u003e 🌟 **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.\n\nDCM (Docker Compose Maker) is a simple yet powerful tool that helps you create `docker-compose.yaml` files for your self-hosted applications. Select from a curated list of popular containers and generate a ready-to-use configuration file with just a few clicks.\n\nNo more copy-pasting from documentation or trying to remember the correct configuration options - this tool makes it easy to set up your Docker environment.\n\n\u003e [!TIP]\n\u003e Most containers come pre-configured with best practices and sensible defaults, saving you hours of documentation reading and configuration tweaking.\n\n\u003e 💡 **Share Your Stack**: Using a great tool that's not listed here? We'd love to include it! Check out our [contribution guide](CONTRIBUTING.md) to help others discover and use your favorite containers.\n\n## 🔧 How to Use DCM\n\nUsing Docker Compose Maker is simple and intuitive:\n\n1. **Select containers** - Browse the curated list of self-hosted applications and click to select the ones you want to include\n2. **Use templates** - Choose from predefined templates in the Template Gallery for common stacks like media servers\n3. **Configure settings** - Adjust environment variables, paths, and other common settings\n4. **Generate your configuration** - Click \"Copy Compose\" to view and customize your docker-compose.yaml\n5. **Deploy your stack** - Use one of the following methods to deploy your containers:\n\n\u003e [!IMPORTANT]\n\u003e 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.\n\n### Deployment Options\n\nOnce you have your docker-compose configuration, you have several ways to deploy it:\n\n#### Copy \u0026 Paste\nSimply copy the generated docker-compose.yaml and .env content, save them locally, and run `docker-compose up -d` to start your containers.\n\n#### Download Files\nDownload the generated docker-compose.yaml and .env files directly from the interface, then use them with your preferred Docker management tool.\n\n\u003e [!NOTE]\n\u003e The downloaded .env file contains all the environment variables referenced in your docker-compose.yaml. Keep both files in the same directory when deploying.\n\n#### Portainer Stacks\nIf you're already using [Portainer](https://github.com/portainer/portainer) to manage your Docker environment, you can easily deploy your configuration as a stack:\n\n1. Navigate to your Portainer dashboard and select **Stacks** from the sidebar\n2. Click **Add stack**\n3. Give your stack a name\n4. Select **Web editor** and paste the generated docker-compose content\n5. (Optional) Add the environment variables from the .env file\n6. Click **Deploy the stack**\n\n\u003e [!CAUTION]\n\u003e 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.\n\nUsing Portainer provides a user-friendly web interface to manage, update, and monitor your containers without needing command-line tools.\n\n#### Other Docker Management Tools\nThe generated compose file works with any tool that supports docker-compose syntax, such as Docker Desktop, Rancher, Yacht, or command-line tools.\n\n## 🚀 Quick Start\n\nIf you want to try DCM for yourself, there are several ways to get started:\n\n### 🌐 Use the Online Version\n\nVisit [compose.ajnart.dev](https://compose.ajnart.dev) to use the tool immediately without installation.\n\n\u003e [!NOTE]\n\u003e The online version includes analytics for usage tracking, while the self-hosted version does not.\n\n### 🐳 Run with Docker\n\nRun with a single command:\n\n```bash\ndocker run -p 7576:7576 --name dcm --rm ghcr.io/ajnart/dcm\n```\n\nThen visit `http://localhost:7576` in your browser.\n\nThe Docker image is available for multiple platforms:\n- linux/amd64\n- linux/arm64\n- linux/arm/v7\n\n### 📦 Using Docker Compose\n\nCreate a `docker-compose.yaml` file:\n\n```yaml\nservices:\n  dcm:\n    image: ghcr.io/ajnart/dcm\n    container_name: dcm\n    ports:\n      - \"7576:7576\"\n    restart: unless-stopped\n```\n\nThen run:\n\n```bash\ndocker-compose up -d\n```\n\n### 🛠️ Build from Source\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/ajnart/dcm.git\ncd dcm\n```\n\n2. Install dependencies:\n\nFirst install [Bun](https://bun.sh/) if you haven't already, then run:\n```bash\nbun install\n```\n\n\u003e [!WARNING]\n\u003e Using npm instead of Bun may result in longer installation times and potential compatibility issues. We strongly recommend using Bun for development.\n\n3. Build and start:\n```bash\nbun run build\nbun start\n```\n\n## 🧰 Supported Tools\n\nDCM includes configuration for many popular self-hosted applications, including:\n\n📺 **Media Management**: \n  - **Media Servers**: [Jellyfin](https://github.com/jellyfin/jellyfin), [Plex](https://github.com/plexinc/pms-docker), [Emby](https://github.com/MediaBrowser/Emby)\n  - **Media Automation**: [Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [Lidarr](https://github.com/lidarr/Lidarr), [Readarr](https://github.com/Readarr/Readarr), [Prowlarr](https://github.com/Prowlarr/Prowlarr), [Bazarr](https://github.com/morpheus65535/bazarr), [Whisparr](https://github.com/whisparr/whisparr)\n  - **Media Requests**: [Jellyseerr](https://github.com/Fallenbagel/jellyseerr), [Overseerr](https://github.com/sct/overseerr), [Doplarr](https://github.com/kiranshila/Doplarr), [Requestrr](https://github.com/darkalfx/requestrr)\n\n🔍 **Dashboards \u0026 Management**: \n  - **Dashboards**: [Homarr](https://github.com/homarr-labs/homarr), [Heimdall](https://github.com/linuxserver/Heimdall)\n  - **Container Management**: [Portainer](https://github.com/portainer/portainer)\n  - **Media Analytics**: [Tautulli](https://github.com/Tautulli/Tautulli)\n\n📥 **Download Management**:\n  - **Torrent**: [qBittorrent](https://github.com/qbittorrent/qBittorrent)\n  - **Usenet**: [NZBGet](https://github.com/nzbget/nzbget), [NZBHydra 2](https://github.com/theotherp/nzbhydra2)\n  - **Indexers**: [Jackett](https://github.com/Jackett/Jackett), [Prowlarr](https://github.com/Prowlarr/Prowlarr)\n\n🗄️ **Databases**: \n  - **SQL**: [MariaDB](https://github.com/MariaDB/server), [MySQL](https://github.com/mysql/mysql-server), [PostgreSQL](https://github.com/postgres/postgres)\n  - **NoSQL**: [MongoDB](https://github.com/mongodb/mongo), [Redis](https://github.com/redis/redis)\n\n📊 **Monitoring \u0026 Automation**: \n  - **Monitoring**: [Grafana](https://github.com/grafana/grafana), [Prometheus](https://github.com/prometheus/prometheus)\n  - **Updates**: [Watchtower](https://github.com/containrrr/watchtower)\n  - **Home Automation**: [Home Assistant](https://github.com/home-assistant/core)\n\n🔐 **Security**: [Vaultwarden](https://github.com/dani-garcia/vaultwarden)\n\n💾 **Storage \u0026 Files**: [Nextcloud](https://github.com/nextcloud/server)\n\nEach tool includes a detailed description, GitHub star count, and pre-configured docker-compose settings.\n\n## 🧪 Testing\n\nDCM uses [Bun](https://bun.sh/) for testing. To run the tests:\n\n```bash\n# Run all tests\nbun test\n\n# Run Docker Compose validation tests\nbun test:compose\n\n# Run container schema validation tests\nbun test:containers\n```\n\n## 🔄 Template Gallery\n\nDCM includes a Template Gallery that allows you to quickly add predefined stacks of containers based on common use cases:\n\n- **Media Server Stacks**: Complete media server setups with Jellyfin/Plex and related tools\n- **Development Environments**: Web development stacks with databases and web servers\n- **Monitoring Solutions**: Grafana, Prometheus, and other monitoring tools\n- **Database Clusters**: Various database engines with management tools\n- **Security Tools**: Password managers and security-related containers\n- **And more!**: Smart home hubs, personal cloud solutions, and other useful templates\n\nTo use the Template Gallery:\n1. Click the \"Template Gallery\" button at the top of the main page\n2. Browse or search for templates that match your needs\n3. Click \"Use Template\" to add all containers from that template to your selection\n4. Return to the main page to customize your selected containers\n\nYou can combine multiple templates to create your perfect self-hosted environment!\n\n## 🖼️ Screenshots\n\n### User Interface\n![UI Screenshot](/public/ui-demo.png)\n\n### Generated docker compose file\n![Generated docker-compose file](/public/compose-output.png)\n\n## 🤝 Contributing\n\nWe welcome contributions to DCM! Whether you want to add new container definitions, improve documentation, or fix bugs, your help is appreciated.\n\nPlease check our [CONTRIBUTING.md](CONTRIBUTING.md) guide for detailed instructions on:\n- How to add new container definitions\n- Code style guidelines\n- Testing requirements\n- Pull request process\n\nThe easiest way to contribute is by adding new container definitions to our growing collection!\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## 💖 Support\n\nIf you find this tool useful, consider supporting the project by:\n\n- ⭐ Starring the repository on GitHub\n- 🐦 Sharing it on social media\n- ☕ [Buying me a coffee](https://ko-fi.com/ajnart)\n\n## 📞 Contact\n\n- GitHub: [@ajnart](https://github.com/ajnart)\n\n---\n\nMade with ❤️ by [ajnart](https://github.com/ajnart) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajnart%2Fdcm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajnart%2Fdcm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajnart%2Fdcm/lists"}