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.
Prerequisites
Section titled “Prerequisites”- 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_URLyou’ll give to endpoints.
Option A — Docker Compose (recommended to start)
Section titled “Option A — Docker Compose (recommended to start)”This is the fastest prod-like deployment with no Kubernetes.
# from the env-manager repodocker compose up --buildThis 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.
Option B — Kubernetes (Helm)
Section titled “Option B — Kubernetes (Helm)”For a real fleet, deploy to a cluster with the provided Helm chart.
# build/push images, then:helm upgrade --install a10e ./helm/env-manager \ --namespace a10e --create-namespace \ -f ./helm/env-manager/values.yaml
# run database migrationstask db:k8s:migrate:up NAMESPACE=a10eThe 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.
Minimal configuration
Section titled “Minimal configuration”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]—localfor username/password, orauth0for OIDC (setauth0_domainandauth0_audience). See Control Plane Configuration.
First login and setup
Section titled “First login and setup”- Open the dashboard (
http://localhost:3000). - With
provider = "local", complete the setup wizard to create the first administrator, then sign in. - With
provider = "auth0", sign in through Auth0; your user is synced on first login.
Verify it’s ready for endpoints
Section titled “Verify it’s ready for endpoints”GET /v1/healthcheckreturns a healthy status.- The dashboard loads, and the Fleet views under
/admin/fleetrender (empty until devices check in). - Note the API base URL — you’ll pass it to Lander as
LANDER_ENV_MANAGER_URL.
Next steps
Section titled “Next steps”- Install the endpoint agent on one machine: Install Lander on an Endpoint.
- Roll it out to a fleet with Intune, Jamf Pro, or Kandji.