Skip to content

Dashboard UI (Docker)

The dashboard frontend is not bundled into pulse-server. Run it as a separate container and connect it to your self-hosted server.

Use one browser origin for both UI and API, then route by path in your reverse proxy:

  • / -> pulse-dashboard container
  • /api/auth/* -> pulse-server
  • /dashboard/api/* -> pulse-server
  • /v1/* -> pulse-server
  • /health -> pulse-server

This avoids most cookie/CORS issues.

Example for https://pulse.example.com:

Terminal window
export BETTER_AUTH_URL='https://pulse.example.com'
export FRONTEND_URL='https://pulse.example.com'
Terminal window
docker run --rm -p 8080:8080 ghcr.io/ek-labs-llc/pulse-dashboard:<tag>

By default the dashboard calls window.location.origin for API requests.

If the dashboard and API are on different origins, set PULSE_API_BASE_URL:

Terminal window
docker run --rm -p 8080:8080 \
-e PULSE_API_BASE_URL='https://api.example.com' \
ghcr.io/ek-labs-llc/pulse-dashboard:<tag>

Then set server env vars accordingly:

Terminal window
export BETTER_AUTH_URL='https://api.example.com'
export FRONTEND_URL='https://app.example.com'
services:
dashboard:
image: ghcr.io/ek-labs-llc/pulse-dashboard:<tag>
ports:
- "8080:8080"
environment:
# Omit for same-origin deployments.
PULSE_API_BASE_URL: "https://api.example.com"

Use matching server and dashboard release tags when possible (vX.Y.Z on both repos).