self-hosted error monitor Open the panel

People

who signs in, with which role open the screen

What it is for

Who signs in to meulog, and with which role.

The role

Each person has one role, and the role answers three questions: which menu sections they see, which of those they edit, and in which accounts it applies. Roles themselves are registered in Roles, next to this screen.

There used to be two roles written in the code — admin and member — and anyone who needed someone who edits dashboards and never touches settings had no answer: either the person touched everything, or nothing. Both still exist, now as records: Administrator sees and edits the nine sections in every account, and Member sees the panel and the dashboards and looks after the errors that are theirs.

No account ticked

In a role, an empty account list means every account — including the ones created later. That is what makes a new account born visible to whoever runs the installation; the opposite — writing out every slug — would make the new account born invisible to the very person who created it.

How you get in

Through meulog own login and password, through a Google account, or through an identity set by a trusted proxy (when meulog sits behind a company SSO). All three doors work at once.

The Google door only shows up when GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are in the environment. It does not create anyone: the address coming back from Google has to match an active user already registered here. Without that, any Google account would walk into a meulog published on the internet.

The second factor

Mandatory, not optional. The password and Google are the first factor; the session is only born after a six-digit code from an authenticator app (Google Authenticator, 1Password, Bitwarden). Anyone without an authenticator yet lands on the enrollment screen at first sign-in — QR code and secret — instead of being turned away.

The recovery sheet

Ten single-use codes, shown once right after you enroll your authenticator. Each one goes in place of the six-digit code, through the same field — one field, because whoever needs it is already having a bad time.

meulog stores only a digest of each code, never the codes: that screen does not come back. Generating a new sheet voids the previous one, otherwise the sheet forgotten in a drawer would keep opening the door. Under My sessions you see how many are left and generate another sheet.

Where you are signed in

My sessions lists every browser signed in with your account that still holds an open session, with its address and last activity. Ending one cuts access immediately — a cookie with no row in the database is worth nothing. "End all the others" keeps the current one alive: whoever is protecting themselves cannot be signed out halfway through.

Only your own. Ending someone else session is an administration action and stays on this screen, next to Zerar 2FA.

Lost the phone

meulog cannot recreate the secret: it belongs to the authenticator. Try a code from your recovery sheet first — that is what it is for. Without one, an administrator resets the second factor in the list above (Zerar 2FA), that person open sessions and recovery sheet drop with it, and they enroll a new authenticator at the next sign-in. With no administrator left, the way back is the console: docker exec -it ms-meulog-web ./bin/rails runner 'User.find_by(email_address: "...").zerar_otp!'.

The one stated exception

The trusted-proxy door does not ask for the second factor: there both factors belong to whoever sits in front (oauth2-proxy, Authelia, Cloudflare Access), which is exactly what that door is for. If you want meulog second factor to hold for everyone, simply do not configure AUTH_PROXY_HEADER — without it, that door does not even open.

The first sign-in

On a fresh install, with no users at all, meulog offers the first-access screen — and whoever signs in through Google on an empty meulog also becomes the administrator. It disappears the moment one person exists: it is not a door left open. Not even the first administrator skips the authenticator.

What each person picks for themselves

  • Screen theme: light, dark, or the system one. Both themes are designed, not one inverted from the other.
  • Language: Portuguese or English. Empty means "the installation one".

Removing

It cuts access immediately. What the person did stays in the error history, with their name: history you can erase is not history.