Skip to content

Install the Control Plane

The control plane is the AlienGiraffe Connector API plus its Next.js dashboard, backed by Postgres. Installation is the same as the rest of the Alien Giraffe platform — this guide focuses on getting it running so endpoints can report to it. For the full configuration surface, see Control Plane Configuration.

  • Docker (or Podman) for the Compose path, or a Kubernetes cluster + Helm for the cluster path.
  • A Postgres database (the Compose file provisions one for you).
  • A reachable URL for the API — this is the LANDER_ENV_MANAGER_URL you’ll give to endpoints.
Section titled “Option A — Docker Compose (recommended to start)”

This is the fastest prod-like deployment with no Kubernetes.

Terminal window
# from the env-manager repo
docker compose up --build

This brings up:

  • API at http://localhost:8080/v1
  • Dashboard at http://localhost:3000
  • Postgres (in-cluster, for the stack)

Configuration comes from config/a10e.compose.toml (API) and config/dashboard.compose.env (dashboard). Edit config/a10e.compose.toml to set your database DSN, auth provider, and allowed CORS origins before starting.

For a real fleet, deploy to a cluster with the provided Helm chart.

Terminal window
# build/push images, then:
helm upgrade --install a10e ./helm/env-manager \
--namespace a10e --create-namespace \
-f ./helm/env-manager/values.yaml
# run database migrations
task db:k8s:migrate:up NAMESPACE=a10e

The chart deploys the API, the dashboard, Postgres (or wire your own), and supporting jobs. Override values.yaml with your environment’s settings (image registry, ingress host, auth provider, secrets). The dashboard is then served at your ingress host.

At minimum, set these in a10e.toml (or the Compose/Helm equivalents):

env = "local"
port = 8080
[db]
dsn = "postgres://a10e_user:a10e_password@localhost:5432/a10e_db?sslmode=disable"
[cors]
allowed_origins = ["http://localhost:3000"]
[auth]
provider = "local" # or "auth0"
jwt_secret = "change-me-32-bytes-minimum"
  • [db].dsn — your Postgres connection.
  • [cors].allowed_origins — must include the dashboard’s URL.
  • [auth]local for username/password, or auth0 for OIDC (set auth0_domain and auth0_audience). See Control Plane Configuration.
  1. Open the dashboard (http://localhost:3000).
  2. With provider = "local", complete the setup wizard to create the first administrator, then sign in.
  3. With provider = "auth0", sign in through Auth0; your user is synced on first login.
  • GET /v1/healthcheck returns a healthy status.
  • The dashboard loads, and the Fleet views under /admin/fleet render (empty until devices check in).
  • Note the API base URL — you’ll pass it to Lander as LANDER_ENV_MANAGER_URL.