Just Dashboard / Docs
Reference & help

Configuration reference

Environment variables and defaults for Just Dashboard.

The installer writes the settings needed for your chosen access path into a private .env in the repository. This page covers Just Dashboard 0.8.4. Administrators can change the address, certificate mode, network allowlist, ports, two-factor requirement, session policy, the web terminal, and update checks through Settings → Configuration; that page checks a restart and rolls back if the new stack does not come up. For other .env changes, run docker compose up -d to recreate affected containers; add --build when the code or images changed. A plain docker compose restart does not apply changed environment variables.

The dashboard controls the host. Keep it behind Tailscale, another private VPN with an explicit allowlist, or an SSH tunnel. Preserve the original .env and JD_MASTER_KEY when upgrading or reinstalling. If install.sh finds an earlier installation's data without its .env, it asks for the earlier key.

Required secret

VariableValue
JD_MASTER_KEYA fixed 64-character hex key. Generate one with openssl rand -hex 32. It seals stored TOTP seeds, database passwords, deployment secrets and credentials, notification channel credentials, backup credentials and the backup encryption key, the database certificate authority's key, and the SQL assistant's API key. Keep a separate copy for recovery; changing or losing it makes those stored secrets unreadable.

Network and TLS

VariableDefaultPurpose
JD_SITElocalhostBrowser address and certificate name. A Tailscale install uses the machine's MagicDNS name. Keep it private; never set it to 0.0.0.0.
JD_BINDemptyProxy listening address when it differs from JD_SITE. The Tailscale installer puts the tailnet IP here while JD_SITE remains the MagicDNS name.
JD_TLSinternaltailscale uses a certificate issued for the MagicDNS name; internal uses Caddy's private CA and prompts a browser warning; off is HTTP and is allowed only on loopback for an SSH tunnel.
JD_ALLOWED_CIDRS127.0.0.1/32,::1/128Comma-separated networks permitted to reach the API, checked before authentication. For Tailscale, use 100.64.0.0/10,127.0.0.1/32,::1/128. Keep loopback for tunnel recovery.
JD_TRUSTED_PROXIESnone in a standalone API; 127.0.0.1/32 in ComposeProxies allowed to supply X-Forwarded-For. The bundled Caddy sets the client address. Do not trust arbitrary clients.
JD_PORT8443Port you open in the browser. The installer chooses another if it is occupied.
JD_BACKEND_PORT8080 before installer selectionAPI loopback port behind Caddy. The installer selects a free high port on a new installation.
JD_FRONTEND_PORT3000 before installer selectionUI loopback port behind Caddy. The installer selects a free high port on a new installation.
JD_ALLOWED_ORIGINSemptyFull origins permitted to open WebSockets if UI and API use separate origins. Include scheme, host, and port. The normal single-origin stack does not need it.
JD_ADDR127.0.0.1:8080 in a standalone APIDirect API bind. The bundled Compose file sets it to loopback using JD_BACKEND_PORT; setting JD_ADDR in .env alone does not replace that Compose value.

The backend refuses a non-loopback JD_ADDR without an explicit JD_ALLOWED_CIDRS. Plain HTTP is only for loopback. For browser access instructions, see Reach your dashboard.

Authentication and behavior

VariableDefaultPurpose
JD_REQUIRE_2FAfalseIf true, accounts without an authenticator must enroll before using the dashboard. An account already enrolled is asked for a code regardless of this setting. Shown as Require two-factor in Settings.
JD_TERMINAL_ENABLEDtrueEnables the web terminal, which opens a real shell on the host. Off removes the terminal's routes. Shown as Web terminal in Settings.
JD_TERMINAL_USERLowest regular host accountAccount used by terminal sessions. Empty chooses the lowest regular account.
JD_TERMINAL_SHELLAccount's login shellShell for the web terminal. Empty honors the account's chsh setting. The installer normally sets the host's zsh.
JD_REMOTE_DESKTOP_BRIDGEemptyA Moonlight Web stream bridge on another tailnet machine, as host:port, used by Remote Desktop's Stream mode instead of the bridge container this server runs. Empty is the normal case. Such a bridge must listen on its tailnet address only and accept requests from this server alone. See Remote Desktop.
JD_SESSION_TTL12hAbsolute sign-in lifetime.
JD_SESSION_IDLE_TTL60mIdle sign-in timeout.
JD_DOCKER_HOSTunix:///var/run/docker.sockDocker endpoint read by a standalone API. The bundled Compose stack fixes this to the local socket.
JD_AGENT_MODEfalseHub-managed agent mode with mutual TLS and no local login. It is not useful as a standalone panel.
JD_DEVfalseDevelopment-only HTTP cookie behavior. The bundled Compose file does not pass this setting from .env; do not use it on a real host.
JD_LOG_LEVELinfoSet debug for verbose backend logs.

Deployments, databases, and monitoring

VariableDefaultPurpose
JD_DEPLOY_HEAVY_SLOTS1Concurrent deployment build or activation workers; range 1–8.
JD_DEPLOY_LIGHT_SLOTS2Concurrent validation or metadata workers; range 1–8.
JD_DEPLOY_LEASE_TTL30sTime before a silent worker claim can be reconciled after a crash; range 5 seconds to 5 minutes.
JD_DB_UPLOAD_MAX_MB2048Largest file one database import or one uploaded database dump may be, in MiB; range 1 to 1048576. Uploads are streamed, so this bounds disk use and time rather than memory.
JD_METRICS_INTERVAL15sHost and container sample interval. The runtime clamps it between 5 seconds and 5 minutes.
JD_METRICS_RETENTION7dHow long the recorded metric history is kept. 0 disables recording while the live feed remains available.

Files and host tools

These are comma-separated paths. A path must also be mounted into the backend container at the same host path for the bundled stack to see it.

VariableDefaultPurpose
JD_FILE_ROOTS/Paths the file manager may access. A readonly dashboard account can read files within these roots.
JD_LOG_ROOTS/var/logPaths the log viewer may read.
JD_COMPOSE_ROOTS/opt,/srv,/homeDirectories scanned for Compose stacks.
JD_GIT_ROOTS/opt,/srv,/home,/rootDirectories scanned for Git repositories.
JD_DEPLOY_ROOTS/opt,/srv,/home,/rootAllowed local repository locations for deployment projects. A path outside them is refused.
JD_NGINX_DIR/etc/nginxnginx configuration root for the Proxy page.
JD_CADDYFILE/etc/caddy/CaddyfileCaddy configuration file for the Proxy page.
JD_BACKUP_DIR/var/backups/just-dashboardLocal backup destination and staging area. The bundled Compose stack mounts the default host directory; a different path also needs a matching mount.
JD_DATA_DIR/var/lib/just-dashboardDashboard state directory, including its SQLite database. Back it up. The bundled Compose stack fixes this path inside its container; editing .env alone does not move the volume.

Updates and certificates

VariableDefaultPurpose
JD_UPDATE_CHECKtrueCheck GitHub for a newer dashboard release. Turning it off leaves locally compiled release notes readable. Shown as Check for new versions in Settings.
JD_UPDATE_REPOJustDashboard/Just-DashboardRepository used for release discovery and in-app updates; change for a fork.
JD_UPDATE_BRANCHmainBranch followed for release discovery and in-app update pulls. 0.8.4 is released on main; change it to follow a fork or a branch of your own.
JD_UPDATE_DIRdiscoveredCheckout directory used by in-app updates. Leave empty unless Settings → Version says discovery failed.
JD_ACME_DIRECTORYLet's EncryptOptional ACME directory for deployment certificates.
JD_ACME_CA_ROOTsystem certificate rootsAbsolute path to a PEM bundle for a private ACME authority.

The 0.8.4 bundled Compose file does not forward JD_ACME_DIRECTORY or JD_ACME_CA_ROOT from .env into the backend container. They apply when the backend is launched with those variables directly, or when a custom Compose configuration passes them through.

Account linking

Both arrive in the release after 0.8.2. See Linked servers.

VariableDefaultPurpose
JD_ACCOUNT_LINKtrueWhether this server may be linked to a just-dashboard.com account at all. false removes the installer question, Settings → just-dashboard.com and the link command, and ends a link already in place.
JD_ACCOUNT_URLhttps://just-dashboard.comThe site a link goes to: an origin with no path. Plain http:// is accepted only for a loopback address, for development.

First run only

VariableDefaultPurpose
JD_BOOTSTRAP_USERadminUsername created only when the database has no users.
JD_BOOTSTRAP_PASSWORDemptyIf empty, the backend generates a password, prints it once in its log, and requires a change at first sign-in. The guided installer sets a chosen or generated value here, so its password is not automatically forced to change.

Durations require units such as 12h or 60m. Monitoring windows also accept days such as 7d. Boolean values use true or false. Invalid booleans, durations, numbers outside their range, allowlist entries, or a malformed JD_REMOTE_DESKTOP_BRIDGE stop startup with an error rather than silently using a default.

On this page