SIEMLite

Users and security

People sign in with a username and password. Manage them on the Users page or from the command line. There are two roles:

There must always be at least one admin, and admins can't delete themselves.

./siemlite users create -username alice -role standard  # prompts for a password (min 12 characters)
./siemlite users list
./siemlite users passwd -username alice                 # also signs alice out everywhere
./siemlite users delete -username alice

Accounts that sign in with Microsoft (see Sign in with Microsoft) are marked Microsoft on the Users page. They have no password, so Change password isn't offered for them. An admin can still change their role and which sources they see.

Anyone with a local account can change their own password on the Account page (it asks for the current one, and signs them out on every other browser). Wrong guesses there are limited separately from signing in, so someone using an unlocked session can't lock the owner out of signing in. Admins can set anyone's password on the Users page.

Passwords are stored as bcrypt hashes. Sessions last 12 hours, use an HttpOnly, Secure, SameSite=Strict cookie, and end on sign-out. After 10 failed sign-ins in 15 minutes a client address is locked out for the rest of the window.

Sign-in restrictions

Two switches tighten who can sign in with a password. Both take effect at once, for new sign-ins and for sessions already open.

"On the server itself" means the request came in on the local port, not that it came from a particular address: behind Docker or a proxy on the same machine, visitors from anywhere can arrive from a local-looking address. The local port is set with -local-addr (default localhost:8444; outside a container, keep it on localhost). The Docker setup publishes it on the server's 127.0.0.1 only (SIEMLITE_LOCAL_PORT in .env). The port also checks who is connecting: it answers loopback and, in a container, only the container's gateway, which is where the server's own connections come from. Other containers on the network, and other machines that route to the container's address, are refused.

If no one can sign in to lift the restrictions, run this on the server (a running SIEMLite applies it within a minute):

./siemlite signin show
./siemlite signin reset            # Docker: docker compose exec siemlite siemlite signin reset

Changes are in the audit log (system.signin), and so are refused sign-ins (signin.refused).

Transport and tokens