Docker quickstart

The Compose stack runs the dashboard, MySQL, and OPA. MATA Node is a separate project installed on each monitored host.

Requirements

Install Docker, the Docker Compose plugin, Git, and make.

Development or demo

git clone https://github.com/mata-sh/mata-dashboard.git
cd mata-dashboard
make setup

Choose Docker mode and dev or demo. Setup creates the configuration and, by default, builds and starts the stack, runs migrations, and offers to create a user. If you decline startup, run:

make dev-start

The dashboard defaults to http://localhost:3300. .env controls WEB_PORT. Development binds OPA and MySQL to 127.0.0.1 and uses temporary MySQL storage.

Production

Generate the files without starting services:

make setup MODE=docker ENV=prod START_SERVICES=no CREATE_USER=no

Replace MYSQL_ROOT_PASSWORD in .env and DB_PASSWORD in config/db.config.env, then start:

make prod-fix-perms MODE=docker ENV=prod
make prod-start MODE=docker ENV=prod

prod-start rejects placeholder database passwords, waits for MySQL, and runs migrations unless RUN_MIGRATIONS=no is set. Put the published dashboard port behind an HTTPS reverse proxy. OPA and MySQL remain internal.

Dashboard bind address

The dashboard port binds to 127.0.0.1 by default, so only a proxy on the same host can reach it. Set WEB_BIND=0.0.0.0 in .env only when the proxy runs on another host. Docker publishes ports through its own iptables rules, which bypass host firewalls such as ufw or firewalld, so restrict access at the network or cloud firewall instead.

Users

make users-list MODE=docker ENV=prod
make users-create MODE=docker ENV=prod
make users-passwd MODE=docker ENV=prod

User data lives in the persistent mata_users volume. Production user commands use a short-lived admin container because the web container mounts config/ read-only.

Operations

Set the target explicitly; the environment selects the Compose stack:

ENV_NAME=dev # dev, demo, or prod
make logs MODE=docker ENV="$ENV_NAME"
make ps MODE=docker ENV="$ENV_NAME"
make db-status MODE=docker ENV="$ENV_NAME"
make db-backup MODE=docker ENV="$ENV_NAME"

Cron logs are under logs/cron/. Metrics ingestion health is in logs/health/collect_server_metrics_health.log.

Add a node

Install MATA Node on the monitored host and follow Add your first server.

Stop or reset

ENV_NAME=dev # dev, demo, or prod
make down MODE=docker ENV="$ENV_NAME"
make clean MODE=docker ENV="$ENV_NAME"

make clean removes Compose-managed volumes after confirmation. In production, MySQL uses the bind-mounted DATA_PATH/mysql directory; make clean does not delete that directory.