Containers and binary archives
The release image includes the Linux server and production console. It runs as a non-root user and needs no Node runtime or package registry credentials.
docker pull ghcr.io/backplane-labs/backplane:0.6.59
Both Linux amd64 and arm64 are published. For reproducible deployments, use the immutable digest from the release's image-digest.txt instead of the moving latest tag.
Connect existing infrastructure
Create a deployment-owned environment file, with restricted permissions, replacing the example hosts and secret placeholders:
BACKPLANE_PG_DSN=postgres://backplane:REPLACE@postgres:5432/backplane?sslmode=require
BACKPLANE_CONSUL_ADDR=consul:8500
BACKPLANE_ADMIN_TOKEN=REPLACE_WITH_OPERATOR_SECRET
BACKPLANE_INTERNAL_SECRET=REPLACE_WITH_INSTALLATION_SECRET
Run on a network that resolves those hosts:
docker run --name backplane --restart unless-stopped \
--network platform --env-file ./backplane.env \
-p 127.0.0.1:8081:8081 \
ghcr.io/backplane-labs/backplane:0.6.59
platform must be your existing Docker network. Terminate HTTPS in front of the loopback-published console. Secure cookies are the default. Enable BACKPLANE_CONSOLE_INSECURE_COOKIE=true only for deliberate plain-HTTP local development.
The image defaults to /app/console and /backplane. Platform port 9400 should only be reachable by appropriate internal peers. Add NATS/Temporal/observability variables only for enabled capabilities.
Healthchecks
The images are distroless: no shell, curl or wget. Every binary built on the SDK — the backplane server and every service — probes itself instead:
/app/bin/<binary> probe [readiness|liveness|startup] # readiness by default
It asks its own platform port (BACKPLANE_INTERNAL_PORT, from the same
file and environment the service reads) for /healthz/<kind> on
127.0.0.1 and exits 0 when the probe passes, 1 when it does not.
services:
backplane-kratos:
image: ghcr.io/backplane-labs/backplane-kratos:<version>
healthcheck:
test: ["CMD", "/app/bin/kratos", "probe"]
interval: 5s
timeout: 6s
retries: 30
kratos:
depends_on:
backplane-kratos: {condition: service_healthy} # the overlay is written
In Kubernetes use the HTTP probes on the platform port directly.
Binary archive
Download the architecture-specific archive and SHA256SUMS from the same release:
sha256sum --ignore-missing -c SHA256SUMS
tar -xzf backplane_0.6.59_linux_amd64.tar.gz
From the extracted directory set BACKPLANE_CONSOLE_ASSETS_DIR to the absolute console path, configure the same infrastructure variables and run ./bin/backplane. The archive includes launch instructions. Keep binary and console from the same version.
Build from source
docker build --secret id=github_token,env=NODE_AUTH_TOKEN \
-f deployments/Dockerfile -t backplane:local .
The BuildKit secret is used for GitHub Packages reads during installation. It is not a build argument and is not included in the runtime image. The release workflow instead assembles the image from its already built archive trees.
For a complete local fixture, use quickstart; it provisions the development infrastructure and examples rather than expecting your external endpoints.