Task-based shortcuts to run local Docker Compose stacks from the repo root.
From repo root:
task --list
task ensure-network
task up:core
task up -- redis
task interactiveensure-network auto-creates my_shared_network if missing.
Generic commands — pass stack name after --:
task up -- redis
task down -- monitoring
task restart -- elk
task logs -- postgres
task logs:follow -- kafka
task status -- nginxAvailable operations:
task up -- <stack>task down -- <stack>task restart -- <stack>task logs -- <stack>task logs:follow -- <stack>task status -- <stack>task status:all(all stacks at once)
Current stack names:
redispostgresstarrocksminiometabasepgadminredis_insightmailpitmariadbphpmyadminrabbitmqkafkaelkmeilisearchmonitoringopenprojectnginxnginx_proxy_managermattermostvalkeyrustfsauthentikautheliakeycloakharboropenbaoopentelemetryjaegersignozoutlinentfyopenfeatureapache2wordpressmongodbmongo_expressclickhouseuptime_kumaplaywrightpyroscopetemponatsmosquittopgvectorchromadbqdrantlangfusemlflowlitellm
metabasedepends onpostgres(the task already boots postgres first).pgadminshould run afterpostgres.redis_insightshould run afterredis.- All new stacks are self-contained (bundle their own DB/cache where needed).
mongo_expressshould run aftermongodb.
| Stack | Port(s) | Description |
|---|---|---|
| Redis | 6379 | Redis server |
| Postgres | 5432 | PostgreSQL |
| StarRocks | 9030, 8030, 8040 | StarRocks FE/BE |
| MinIO | 9000, 9001 | S3 API + Console |
| Metabase | 3000 | BI Dashboard |
| PGAdmin | 5050 | Postgres admin |
| Redis Insight | 5540 | Redis GUI |
| Mailpit | 8025, 1025 | Web UI + SMTP |
| MariaDB | 3307 | MySQL-compatible |
| phpMyAdmin | 8080 | MySQL admin |
| RabbitMQ | 5672, 15672 | AMQP + Management UI |
| Kafka | 9092, 29092 | Broker + Internal |
| Kafka UI | 8081 | Kafka dashboard |
| Elasticsearch | 9200 | Search/analytics |
| Logstash | 5044, 5000 | Beats + TCP input |
| Kibana | 5601 | ES dashboard |
| Meilisearch | 7700 | Search engine |
| Grafana | 3001 | Dashboards |
| Prometheus | 9090 | Metrics |
| Loki | 3100 | Log aggregation |
| Alertmanager | 9093 | Alert routing |
| Alerta | 8082 | Alert management |
| Blackbox Exporter | 9115 | Probe exporter |
| Fluentbit | 24224 | Log forwarder |
| OpenProject | 8083 | Project management |
| Nginx | 8088, 8443 | Web server |
| Nginx Proxy Manager | 80, 443, 81 | Reverse proxy + Admin |
| Mattermost | 8065 | Team chat |
| Valkey | 6380 | Redis-compatible KV |
| RustFS | 9002 | S3-compatible storage |
| Authentik | 9080, 9443 | Identity provider |
| Authelia | 9091 | Auth proxy |
| Keycloak | 8084 | Identity provider |
| Harbor | 8085 | Container registry |
| OpenBao | 8200 | Secrets management |
| OpenTelemetry | 4317, 4318, 8888 | gRPC + HTTP + metrics |
| Jaeger | 16686, 14268, 4319, 4320 | UI + Collector + OTLP |
| SigNoz | 3301, 4321, 4322 | Frontend + OTLP |
| Outline | 3002 | Wiki |
| ntfy | 8086 | Push notifications |
| OpenFeature (flagd) | 8013 | Feature flags |
| Apache2 | 8087 | Web server |
| WordPress | 8089 | CMS |
| MongoDB | 27017 | Document database |
| Mongo Express | 8091 | MongoDB web UI |
| ClickHouse | 8123, 9009 | HTTP + Native client |
| Uptime Kuma | 3003 | Monitoring dashboard |
| Playwright | 3004 | Browser testing |
| Pyroscope | 4040 | Continuous profiling |
| Tempo | 3200, 4327 | Tracing + OTLP gRPC |
| NATS | 4222, 8222, 6222 | Client + Monitor + Cluster |
| Mosquitto | 1883, 9001 | MQTT + WebSockets |
| pgvector | 5433 | pgvector-enabled Postgres |
| Qdrant | 6333, 6334 | HTTP + gRPC vector DB |
| ChromaDB | 8000 | Vector DB |
| Langfuse Web | 3005 | LLM observability UI |
| Langfuse Worker | 3030 | Async ingestion worker |
| Langfuse Postgres | 5434 | Langfuse relational store |
| Langfuse ClickHouse | 8125, 9010 | Langfuse trace/analytics store |
| Langfuse Redis | 6381 | Langfuse cache/queue |
| Langfuse MinIO | 9003, 9004 | Langfuse S3 event storage (API + console) |
| MLflow | 5002 | Experiment tracking UI |
| LiteLLM | 4000 | OpenAI-compatible LLM gateway/proxy |
Elasticsearch requires increased virtual memory. Run on the host:
sudo sysctl -w vm.max_map_count=262144To persist across reboots, add to /etc/sysctl.conf:
vm.max_map_count=262144
Stacks that need configuration files store them in a config/ subdirectory:
| Stack | Config Files |
|---|---|
| elk | pipeline/logstash.conf |
| monitoring | config/prometheus.yml, config/loki.yml, config/promtail.yml, config/fluent-bit.conf, config/parsers.conf, config/blackbox.yml, config/alertmanager.yml, config/alertad.conf |
| nginx | config/nginx.conf, config/conf.d/default.conf |
| authelia | config/configuration.yml, config/users_database.yml |
| harbor | config/harbor.yml |
| openbao | config/config.hcl |
| opentelemetry | config/otel-collector-config.yaml |
| signoz | config/otel-collector-config.yaml |
| openfeature | config/flags.json |
| apache2 | config/httpd-vhosts.conf |
| tempo | config/tempo.yaml |
| mosquitto | config/mosquitto.conf |
| litellm | config/config.yaml |
task ps-docker pstask images-docker imagestask volumes-docker volume lstask networks-docker network lstask status:all-docker compose psacross all configured stackstask status:<stack>- per-stack compose statustask prune:images- interactive dangling image prunetask prune:images:force- non-interactive prune
Run:
task interactiveFlow:
- pick stack
- pick action (
up,down,logs,restart,status) - if action is
logs, pick mode (logsorlogs:follow)
Picker backend priority:
gum choosefzf- shell
selectfallback (no extra dependency)
task up:corestarts:redis,postgres,miniotask down:corestops them in reverse order
Adjust these if your usual stack set changes.
- Create stack directory, e.g.
newstack/. - Add
newstack/docker-compose.yml. - Add
newstack/.env.example(if env vars needed). - Add
newstack/config/directory (if config files needed). - Add the stack name to the
STACKSvariable inTaskfile.yml.
That's it. The generic tasks (up, down, restart, logs, logs:follow, status) work automatically for any directory with a docker-compose.yml.
Usage: task up -- newstack
- Existing
script.shcan still be used, butTaskfile.ymlis now the primary entry point. - For stack-specific env config, keep each stack's
.envlocal to its directory. - Copy
.env.exampleto.envand customize before starting a stack.