This directory contains the Docker Compose configuration for the Tanilytics local infrastructure stack, including Redpanda, Redis, ClickHouse, ClickStack, Prometheus, Jaeger, ingestion, and processing.
-
Copy the environment file:
cp .env.example .env
-
Start the full local stack:
docker compose up -d
Use Helmfile for the current multi-release workflow:
helmfile -f helm/helmfile.yaml -e dev applyUse the umbrella chart via Helmfile (single release, same values):
helmfile -f helm/helmfile-umbrella.yaml -e dev applyDirect Helm install requires a combined values file that nests values under each subchart alias (see helm/helmfile-umbrella.yaml for the exact mapping), then run:
helm dependency update helm/charts/tanilytics
helm install tanilytics helm/charts/tanilytics -f <combined-values.yaml>docker-compose.dev.yml mirrors the main compose stack, but replaces the three-node Redpanda cluster with a single redpanda-0 broker.
The pipeline profile enables only the data pipeline services:
redpanda-0consolecreatetopicredisclickhouseingestionprocessing
Start only the pipeline with:
docker compose -f docker-compose.dev.yml --profile pipeline up -dThe remaining app services are grouped under the app profile:
postgresredisclickhouseauth-servicequery-serviceprometheusjaeger
Start only those app services with:
docker compose -f docker-compose.dev.yml --profile app up -dStart the full dev stack with:
docker compose -f docker-compose.dev.yml --profile app --profile pipeline up -dClickHouse migrations live in migrations/ and are managed manually with golang-migrate via mise.
-
Install the local tools:
mise trust mise install
-
Make sure
CLICKHOUSE_MIGRATIONS_URLin.envpoints at the ClickHouse instance you want to migrate and uses the sameCLICKHOUSE_DATABASE,CLICKHOUSE_USERNAME, andCLICKHOUSE_PASSWORDvalues as Docker Compose. -
Run the migration tasks:
mise run migrate-up mise run migrate-version
Create a new sequential migration with:
mise run migrate-create -- add_some_changeThe default superuser is defined in .env as REDPANDA_SUPERUSER=superuser. If you change this value, you must also update the superusers list in bootstrap.yml to match:
# bootstrap.yml
superusers:
- <your-new-username>This is required because Docker Compose does not substitute environment variables in mounted configuration files.