Usage
First login
- Use
ADMIN_EMAILandADMIN_PASSWORDfrom API env config. - For bootstrap only, set
CREATE_ADMIN=true, log in once, then setCREATE_ADMIN=false. - Password policy requires 12+ chars with upper/lower/number/symbol.
- Secret bootstrap/rotation guidance: Secrets Operations Runbook.
Machine integrations
- For non-human automation, use scoped service accounts instead of user passwords.
- Service account setup and rotation guidance: Service Accounts Runbook.
Core workflow
- Create dashboard
- Add datasources
- Add widgets
- Save dashboard
- Configure visibility/collaborators in Share dialog
Visibility model
private: owner/collaborators onlylink: accessible via share token URLpublic: accessible via public route
In private -> external (link/public) transitions, share tokens are rotated.
Publish behavior
- Non-admins can publish only when policy
nonAdminCanPublish=true. - Admins can always publish.
- If publishing is disabled for editors, create/save paths force private visibility.
Default dashboard visibility
The Default Dashboard Visibility policy (Admin Console → Auth Policy; until it is saved there, the DASHBOARD_DEFAULT_VISIBILITY API setting) sets the visibility of every new dashboard whose creator did not choose one:
- Dashboards created in the UI. Save on a new dashboard sends no visibility, so the default applies. This includes a dashboard imported from a file and then saved.
- Dashboards created through the API (
createDashboard) without avisibilityfield. A create that names a visibility keeps it.
With a link or public default, a new dashboard is shared the moment it is first saved: a link dashboard is reachable by anyone holding its share URL, and a public one through its public route. The Share dialog shows the visibility the dashboard got; change it there.
The publish rule still applies. For a non-admin creator when nonAdminCanPublish=false, a link or public default falls back to private and the create succeeds. An explicit link or public visibility from that creator through the API is rejected with FORBIDDEN.
Runtime execution modes
safe(default): trusted script/resource capabilities are blocked.trusted: advanced script/resource features enabled for trusted environments.
Mobile (sm) layout behavior
- Dashboard width preset
smrenders panes as a forced single-column stack. - Use the width toolbar in edit mode to switch
md -> smfor mobile-oriented layouts. - On mobile-size viewports,
smdefaults to view-only mode. - Advanced override: enable
Allow Mobile Edit (Advanced)in dashboard settings when in-device editing is required. - If mobile editing is not required, keep
Allow Mobile Edit (Advanced)disabled.
Theme packs
- Dashboard settings include:
auto,light,paper,dark,slate,high-contrast,colorblind,amber-night. autofollows the browser/system color scheme and resolves tolightordark.- Theme preview updates immediately when selected in Settings.
Cancelreverts preview changes;Applykeeps the selection in the dashboard draft.- Theme persistence still occurs on dashboard
Save/Update.
Common commands
- Full dev stack:
npm run dev - Services only:
npm run dev:services - Postgres only:
npm run dev:postgres:up - Docker deploy (default):
docker compose -f docker-compose.yml -f docker-compose.postgres.yml up -d - Quality gate:
npm run ci
Container image pinning
- Compose defaults to
latesttags for UI/API/Gateway images. - To pin a release, set:
FREEBOARD_UI_IMAGE_TAG=v<version>FREEBOARD_API_IMAGE_TAG=v<version>FREEBOARD_GATEWAY_IMAGE_TAG=v<version>
- To pin an immutable build, use
sha-<short-commit>tags from the publish workflow. - Rollback is tag-based: set prior known-good tags and redeploy with compose.
Dashboard maintenance
- Legacy one-off dashboard migration/enforcement scripts were removed from active runtime operations.
- Use standard admin flows (dashboard settings, sharing, and account controls) for ongoing maintenance.