Users & Permissions¶
OpsMini uses role-based access control (RBAC) to finely manage panel operation permissions.
User Management¶
- Create / edit / disable / delete users
- View last login time
- Each user can bind an independent MFA (TOTP)
- The personal settings page supports changing nickname, avatar, email, and password
Roles & Permissions¶
Three built-in roles:
| Role | Permission scope |
|---|---|
admin |
All permissions (including users / roles / settings) |
operator |
Daily operations (apps, containers, files, terminal, scheduled tasks, etc.) |
readonly |
Read-only view |
Custom roles are supported, with fine-grained assignment by permission point, for example:
user.create/user.edit/user.deletewebsite.create/website.edit/website.deletecontainer.edit/container.deletesecurity.scan/security.firewall/security.fim/security.threatsettings.view/settings.edit(panel settings)apps.install,cron.create,database.create,file.write,mcp.manage,skill.manage,alert.manage, etc.
Two-Factor Authentication (2FA)¶
- Global toggle: after enabling Panel "Settings → Two-step verification", all accounts with a bound authenticator must enter a 6-digit dynamic code when logging in
- Per-user binding: users generate a QR code in personal security settings and scan it with Google Authenticator / 1Password / various cloud-provider authenticator apps to bind
- Account recovery: when the authenticator is lost, log into the server and run
opsmini -reset-mfa <username>to reset that user's MFA binding
Security Design¶
- Passwords stored as bcrypt hashes
- Short-lived access JWT (15 minutes) + revocable refresh token (7 days)
- The JWT signing secret is automatically generated on first startup and persisted to the database, not written to the configuration file
- Login failure rate limiting and lockout (anti-brute-force)
- Critical operations are written to the audit log
- Forgotten passwords can be reset by logging into the server and running
opsmini -reset-pass <username>