Files
Stanislav Rossovskii d6f9335398
Some checks failed
ci / openapi (push) Failing after 7s
ci / agent (push) Failing after 5s
ci / server (push) Failing after 6s
ci / stack-smoke (push) Has been skipped
ci / web (push) Failing after 5s
Add cron schedules and sync docs
2026-06-23 19:18:01 +04:00
..
2026-06-23 19:18:01 +04:00
2026-06-23 15:12:29 +04:00

Deploy

Local stack and example operator configs.

Quick start

cd deploy
MONLET_AUTH_TOKEN=$(openssl rand -hex 16) docker compose up --build

Brings up: PostgreSQL 16, Monlet server (with Alembic upgrade on start), Web UI. Web timestamps use MONLET_WEB_TIME_ZONE (UTC by default); notification text/annotations use MONLET_NOTIFICATION_TIME_ZONE (UTC by default). PostgreSQL and server containers run with TZ=UTC; local presentation timezones are configured separately.

Add Prometheus + Alertmanager + Grafana:

MONLET_AUTH_TOKEN=$(openssl rand -hex 16) docker compose --profile observability up

Smoke test

bash deploy/smoke.sh

Boots the stack, hits /health, /ready, /metrics, ingests example payloads from examples/, and verifies the API exposes resulting agent/check/incident/outbox state.

SMOKE_KEEP=1 bash deploy/smoke.sh leaves the stack up after the run.

Showcase / E2E stand (Stage 6.1)

Full-fat demo stack with several dockerized agents driving the system through every witness state: agent alive/stale/dead, check ok/warning/critical/unknown, incident open/resolved, outbox sent/retry/failed, anti-double-alerting with notifications_enabled=false, and agent spool replay after a controlled server outage.

bash deploy/e2e-showcase.sh

Internally:

MONLET_AUTH_TOKEN=monlet-ui-dev-token docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.showcase.yml up -d --build

SHOWCASE_KEEP=1 bash deploy/e2e-showcase.sh leaves the stack up so you can inspect the web UI at http://127.0.0.1:3000.

Dockerized agents (deploy/docker/agent.Dockerfile, deploy/showcase/) exist for demo/e2e only — production deploys the Go binary under systemd.

Files

  • docker-compose.yml — full local stack (server / postgres / web / optional observability profile).
  • prometheus/prometheus.yml — example scrape config (Monlet server + agent target).
  • alertmanager/alertmanager.yml — example route + receiver.
  • grafana/provisioning/ — datasource + dashboard providers.
  • grafana/dashboards/monlet-overview.json — starter dashboard.
  • smoke.sh — local stack smoke entry point.
  • docker-compose.showcase.yml — override that adds demo agents + mock webhook.
  • docker/agent.Dockerfile — demo/e2e agent image (not for production).
  • showcase/ — demo agent configs, check scripts, and mock webhook.
  • e2e-showcase.sh — full showcase runner.

Docker images install Python/Node project dependencies inside the image; host venvs are never mounted.