Skip to content
Menu

Documentation

Deploy the console

Turn it on

The console is off when ENVIRONMENT=prod: every /admin/ path answers 404. Turn it on deliberately:

export ADMIN_CONSOLE_ENABLED=true
docker compose -f deploy/docker-compose.yml up --build

The manifest ships inside your application's image, so the file you committed is what runs. Create the administrator as in Create the first administrator, with --confirm-production added to the command that has --apply.

Restrict access

The console's files are public: they hold no data, and every API they call checks the caller. Blocking the page alone protects little, because the APIs stay reachable. At your proxy, restrict both paths to your operators' network or VPN:

Path What it is
/admin/ the console's files
/api/v1/platform/ the platform views: audit, health, event repair

For more separation, serve the console on its own hostname, so nothing else shares its origin. The page already refuses framing and code from other origins, and access tokens stay in memory, never in cookies.

Separate services

The console needs no service of its own. Put it next to identity:

uv run sandloom add deploy admin --service identity

This adds it to that service and generates the gateway route to /admin/. The console's API calls go through the same gateway, which routes each one to the service that owns it, so nothing in the console knows your topology. Each service reports on itself: choose the source at the top of the platform views.

Use --service admin if you would rather give it a process of its own. Set ADMIN_CONSOLE_ENABLED in the shared environment, as with any setting that must match.

Generate the manifest in an environment that loads every module, then deploy it in the image of each service. See Split into services.

Upgrade

sandloom-admin and the standard modules follow the same release train as sandloom. Upgrade them together, then run uv run sandloom generate. If they drift apart, the page names the mismatch, for example a component this console doesn't include, rather than showing a broken screen.

Use your own build

Point the application at any directory holding a built console:

export ADMIN_CONSOLE_DIST=/srv/my-console

Build it from a fork of admin/ with SANDLOOM_ADMIN_BASE=/admin/ npm run build, which needs Node. From then on the upgrades of that copy are yours. See Develop the console.