Generate Docker Compose configurations in the browser — no prior knowledge needed.
Select services · Configure ports & paths · Download a ready-to-use docker-compose.yml
Anyone running self-hosted services knows the problem: for every new service you have to dig through documentation, find the right Docker image, expose ports, configure volumes and set environment variables — before a single line of YAML exists.
compose-wizard solves exactly that. Just click the services you want, adjust ports and paths, and download the finished docker-compose.yml. No installation, no build system, no backend — a single HTML file.
| ✅ 28 pre-configured services | Immich, Nextcloud, WireGuard, Jellyfin, Vaultwarden and many more |
| ✅ Dependencies auto-included | Nextcloud needs MariaDB? Added automatically |
| ✅ Live YAML preview | Syntax highlighting directly in the browser |
| ✅ One-click download | Finished docker-compose.yml ready to deploy |
| ✅ No backend required | A single HTML file — open locally or host on GitHub Pages |
| ✅ Fully configurable | Ports, file paths, passwords — everything adjustable |
📸 Photos & Files — Immich, Nextcloud, PhotoPrism, Filebrowser, Syncthing
| Service | Description |
|---|---|
| Immich | Self-hosted Google Photos alternative with AI recognition |
| Nextcloud | File sync, calendar, contacts & collaboration |
| PhotoPrism | AI-powered photo management with automatic tagging |
| Filebrowser | Web-based file manager |
| Syncthing | P2P file synchronization without a central server |
🌐 Networking — WireGuard, Traefik, Nginx Proxy Manager, Tailscale, AdGuard Home, Pi-hole
| Service | Description |
|---|---|
| WireGuard (wg-easy) | VPN server with a clean web UI |
| Traefik | Modern reverse proxy with automatic SSL via Let's Encrypt |
| Nginx Proxy Manager | Reverse proxy with web UI and SSL management |
| Tailscale | Zero-config mesh VPN |
| AdGuard Home | DNS-based ad & tracker blocker for your entire network |
| Pi-hole | Classic DNS-based ad blocker |
📡 Monitoring — Uptime Kuma, Portainer, Grafana+Prometheus, Dozzle, Netdata, Watchtower
| Service | Description |
|---|---|
| Uptime Kuma | Self-hosted monitoring & alerting |
| Portainer | Docker container management UI |
| Grafana + Prometheus | Metrics collection & visualization |
| Dozzle | Real-time Docker log viewer |
| Netdata | Real-time system performance monitoring |
| Watchtower | Automatic Docker image updates |
🎬 Media — Jellyfin, Plex, Navidrome, Kavita
| Service | Description |
|---|---|
| Jellyfin | Open-source media server for movies, TV & music |
| Plex | Personal media server & streaming |
| Navidrome | Music streaming server (Subsonic-compatible) |
| Kavita | E-book & comic reader |
🛠️ Tools — Gitea, Vaultwarden, Stirling PDF, Linkwarden, Mealie, IT Tools, Homer
| Service | Description |
|---|---|
| Gitea | Self-hosted Git server |
| Vaultwarden | Bitwarden-compatible password manager |
| Stirling PDF | All-in-one PDF tools in the browser |
| Linkwarden | Bookmark & archive manager |
| Mealie | Recipe manager & meal planner |
| IT Tools | Developer toolbox (Base64, JWT, hashing …) |
| Homer | Start page for all your self-hosted services |
# Clone the repository
git clone https://github.com/your-name/compose-wizard
cd compose-wizard
# Open index.html in your browser
open index.html # macOS
xdg-open index.html # Linuxpython3 -m http.server 8080
# → http://localhost:8080git init
git add index.html README.md
git commit -m "initial commit"
git remote add origin https://github.com/bitalchemy-io/compose-wizard
git push -u origin mainThen in GitHub: Settings → Pages → Branch: main → Save
The app will be available at https://bitalchemy-io.github.io/compose-wizard — free, no server needed.
Add a new entry to the SERVICES object in index.html:
my_service: {
name: 'My Service', // Display name
icon: '🚀', // Emoji icon
cat: 'Tools', // Category
desc: 'Short description',
tag: 'image:tag', // Docker image
deps: [],
fields: [
{
key: 'port',
label: 'Port',
default: '8080',
hint: 'Optional hint shown below the input'
},
],
yaml: (c) => `
my-service:
image: my-image:tag
container_name: my_service
restart: unless-stopped
ports:
- "${c.port}:8080"`.trim(),
volumes: (c) => [], // Named volumes declared at the bottom of the file
},- Filter services by category
- Generate a
.envfile alongside the YAML - Configurable Docker networks
- Import an existing
docker-compose.ymlfor editing - More services (Authentik, Bookstack, Immich Albums …)
Pull requests are welcome! Especially looking for: new services, bug fixes, and improvements to existing YAML templates.
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-service - Commit your changes:
git commit -m 'feat: add Authentik' - Push the branch:
git push origin feature/new-service - Open a Pull Request
MIT — free to use, fork, and extend.
Made with ❤️ for the self-hosting community