Grafana + Loki + Tempo + Mimir + Alloy as a single Dokploy Compose service.
flowchart LR
user([User])
apps[Apps / Clients]
node[node-exporter]
subgraph Ingest
alloy[Alloy]
end
subgraph Storage
loki[(Loki)]
tempo[(Tempo)]
mimir[(Mimir)]
end
grafana[Grafana]
apps --> alloy
node --> alloy
alloy --> loki
alloy --> tempo
alloy --> mimir
loki --> grafana
tempo --> grafana
mimir --> grafana
grafana --> user
-
Create Service → Compose
- Provider: Git
- Repository: this repo (or your fork)
- Branch:
main - Compose path:
docker-compose.yml
-
Domains — open the Domains tab and add each entry below.
Host Path Service Container Port grafana.<your-domain>/grafana3000alloy.<your-domain>/v1alloy4318alloy.<your-domain>/lokialloy3500alloy.<your-domain>/api/v1/metrics/writealloy9090
Default Grafana login:
admin/password -
Protect Alloy with basic auth (Traefik middleware)
a. Generate a hashed credential
htpasswd -nb admin 'password' # → admin:$apr1$G3T3XOqn$6JGifVcvveyWFg7gYWZjH0
b. Create the middleware in Dokploy: go to Dokploy → Settings → Traefik (or the Traefik tab on the server) and open the dynamic config file editor. Add a new file
middlewares.yml(or append to an existing one):http: middlewares: alloy-auth: basicAuth: # admin / password users: - "admin:$apr1$G3T3XOqn$6JGifVcvveyWFg7gYWZjH0"
c. Attach it to each Alloy domain. In the service's Domains tab, edit each
alloy.<your-domain>row:alloy-auth@file
# bash (curl)
./examples/sh/send-test-log.sh "hello from devops"
./examples/sh/send-test-metric.sh 42
./examples/sh/send-test-trace.sh
# node
cd examples/node && pnpm start