Skip to main content
Prerequisites: Docker and Docker Compose must be installed. A reachable salt-api (rest_cherrypy) endpoint is optional for first boot — the UI starts without Salt configured and degrades gracefully until you wire it up in Settings.
1

Clone the repo and copy the env template

2

Generate a cookie secret

Run the helper script and paste its output as the value of COOKIE_SECRET in your .env file.
3

Choose a database profile and bring it up

Open .env and swap DATABASE_URL to the commented-out SQLite line:
Then start the stack:
The SQLite profile runs a single container with no external database dependency — ideal for a homelab or personal use.
docker compose automatically loads values from .env in the project directory — no shell exports are needed.
4

Sign in

Browse to http://localhost:8080/ and sign in with the bootstrap credentials:
  • Username: admin
  • Password: changeme
These credentials are built into the app (bootstrap.py) and are created on first boot when no users exist in the database. On first login you are required to set a new password. The BOOTSTRAP_ADMIN_* entries in .env.example are stale — they are not read by the application.

Verify without the browser

You can confirm the stack is healthy with three curl calls:
Before exposing Halite to a network, change the bootstrap admin password and set COOKIE_SECURE=true in your .env file. COOKIE_SECURE=true is required for HTTPS-fronted deployments; with it set, the session cookie will not be sent over plain HTTP.

Next steps

Configuration

Full reference for every environment variable.

Settings

Configure the Salt-API connection and pollers from inside the app.