Back to Tutorials
Deploy from Compose Templates
Launch pre-built multi-service stacks from the Compose template library.
Prerequisites
- Docker is running
- Docker Compose is installed
- For the full template library, a Pro subscription is required
Scenario 1: Deploy WordPress + MySQL + phpMyAdmin
- Click Compose in the sidebar
- Click Templates in the toolbar
- Browse the Web category
- Select WordPress + MySQL + phpMyAdmin
- The template details show:
- Services: wordpress, mysql, phpmyadmin
- Required Ports: 8080, 8081
- Estimated Memory: 1GB
- Customize environment variables:
MYSQL_DATABASE:wordpress(default)MYSQL_USER:wordpress(default)MYSQL_PASSWORD: change fromwordpress_passto a strong passwordMYSQL_ROOT_PASSWORD: change fromroot_passto a strong password
- Click Deploy
- All three services start — WordPress at
http://localhost:8080, phpMyAdmin athttp://localhost:8081
Scenario 2: Deploy ELK Stack
- Compose → Templates → Monitoring category
- Select ELK Stack
- Services: elasticsearch, logstash, kibana
- Required Ports: 9200, 9300, 5044, 5000, 9600, 5601
- Estimated Memory: 4GB
- No customizable env vars for this template
- Click Deploy
- Access Kibana at
http://localhost:5601, Elasticsearch athttp://localhost:9200
Scenario 3: Deploy Node.js + MongoDB + Redis
- Compose → Templates → Development category
- Select Node.js + MongoDB + Redis
- Services: node-app, mongodb, redis, mongo-express
- Required Ports: 3000, 27017, 6379, 8081
- Estimated Memory: 1GB
- Customize:
MONGO_DATABASE:myapp(default)MONGO_EXPRESS_USER:admin(default)MONGO_EXPRESS_PASSWORD: change fromadmin_pass
- Click Deploy
- Access:
- Node.js app:
http://localhost:3000 - Mongo Express:
http://localhost:8081
- Node.js app:
Available Compose Templates
| Category | Templates |
|---|---|
| Web | WordPress+MySQL+phpMyAdmin, Ghost+MySQL, Nginx Reverse Proxy, Plausible Analytics, Supabase, Keycloak+PostgreSQL, Mattermost+PostgreSQL |
| Development | Node.js+MongoDB+Redis, Python+PostgreSQL+Celery, Go+MySQL+RabbitMQ, MERN Stack, Laravel+MySQL+Redis, Django+PostgreSQL+Celery, Rust+PostgreSQL+Redis, Spring Boot+PostgreSQL+RabbitMQ |
| Monitoring | Prometheus+Grafana, ELK Stack, Uptime Kuma+Grafana, Loki+Grafana+Promtail |
| Databases | PostgreSQL+pgAdmin, MongoDB+Mongo Express, Redis+Redis Commander, ClickHouse+Tabix |
| Messaging | RabbitMQ, Kafka Redpanda+UI |
| Storage | MinIO S3, Gitea+PostgreSQL, Ollama+Open WebUI |
What You'll See
- The template picker shows categories with icons and service counts
- Each template card displays the service list, required ports, and estimated memory
- Customizable env vars are pre-filled with sensible defaults — secret fields show a lock icon
- After deploying, the project appears in the Compose sidebar with all services listed
Tips
- Check that the required ports are not already in use before deploying — Zenithal shows a warning if ports conflict
- Secret passwords in templates use default values (e.g.,
wordpress_pass) — always change these before deploying - Templates deploy to a new directory under your chosen save location
- The
.envfile is created automatically with your customized values - You can modify the generated
docker-compose.ymlafter deployment by opening it in the Compose Builder