Skip to content

Users & Access

Access is role-based:

RoleScope
AdminFull access to everything, including settings and user management
OperatorPer group: view live/archive, export clips and screenshots, control PTZ, manage camera IO triggers, toggle recording, acknowledge events, manage maps, and add or remove Viewers in their groups
ViewerPer group: view live/archive and browse events, clips, and screenshots for their groups’ cameras

Operator and Viewer are granted per group (see Groups), so you can give a user access to just the cameras they need. The UI hides controls a user lacks permission for, so users never see buttons they cannot use.

Under Settings → Users an admin can invite users, assign roles, and activate or deactivate accounts. The first admin account is created automatically at install time with the credentials the installer prints.

Deactivating a user or changing their role signs that user out of all their sessions immediately. Any change to a user’s password — self-service or through a reset link — does the same.

Inviting a user and resetting a password both produce a one-time link for the admin to copy and share with the person directly — Alta VMS does not email credentials. The recipient opens the link to set their own password. Links expire after 7 days, and deactivating an account invalidates its outstanding links. Consuming a link is recorded in the audit log.

Any signed-in user can change their own password from the Profile menu (top of the sidebar) — enter your current password and a new one (minimum 8 characters). No admin involvement is needed. Changing your password signs you out of your other sessions and voids any outstanding reset links for your account.

Locked out of the admin account with no other active admin to send a reset link? Recover it from the server host — a break-glass path that needs shell access to the machine, not a signed-in session.

The database and config are owned by root/altavms, so run it with sudo:

Terminal window
sudo altavms reset-password admin@localhost

It prints a one-time reset link — never a password — and immediately signs that account out of every session:

Password reset link for admin@localhost:
https://your-server/reset-password?token=…
Expires: 2026-07-28T12:00:00Z (7 days)
Existing sessions for this user were signed out.

Open the link in a browser to set a new password. It expires after 7 days. The account must be active — re-activate a deactivated user first. No password is ever typed, generated, or printed, and the action is recorded in the audit log.

Signing in issues a short-lived access token (default 15 minutes) that the UI renews silently in the background. The session itself lasts up to the refresh lifetime (default 7 days) and is kept in an httpOnly cookie; you are sent to the login page only when the session can no longer be refreshed. Logging out invalidates the session durably — a server restart does not resurrect it. Admins can tune the lifetimes with auth.access_ttl and auth.refresh_ttl — see the configuration reference.

Repeated failed sign-ins are throttled and then locked out progressively: by default, after 5 consecutive failures lockouts start at 1 minute and double up to 15 minutes. Attempts are tracked per account email, so failures against one account never lock out another. Counters reset when the service restarts. The behavior is tunable via the auth_rate_limit.* settings — see the configuration reference.

Successful and failed logins, logouts, password changes, reset-link usage, user changes, and other key actions are recorded in the audit log for accountability — see Logs.