MikroTik Manager is a fully self-hosted network management application distributed as a Docker container. It runs entirely within the customer's own infrastructure.
| Aspect | Detail |
|---|---|
| Data storage | Local SQLite database inside Docker volume |
| Data location | Customer's server only — no cloud, no external storage |
| Telemetry | NONE — no usage data, analytics, or crash reports |
| Phone-home | NONE — no fleet, device, configuration, or usage data ever leaves your server |
| License activation | Offline — validated locally, no external server contact |
| Device connections | Managed MikroTik devices within the customer's network |
| Optional outbound | Read-only, GET-only fetches of public feeds — never carry any of your data. (1) RouterOS CVE feed from NVD; (2) latest RouterOS version from MikroTik; (3) Manager update check from GitHub Releases. Each can be disabled; all degrade gracefully with no internet (last known data is kept). |
| AI assistant access | OFF by default — the read-only MCP endpoint (v1.73.0+) exists only once you switch it on. While it is off, nothing about it runs and the path answers 404. Once you connect an assistant, what that assistant reads reaches whoever operates it — that is the point of connecting one, and it is bounded by the API key you authorise it with. Nothing is sent unless an assistant asks. |
| Config backups | Stored in the local database |
JWT_SECRET and ENCRYPTION_KEY are auto-generated and persisted to data/.secrets.json (file mode 0600) when not supplied via environment, eliminating the public-default riskadmin/admin user is created once on first install; deleting it does not re-seed on the next restartX-API-Key header or Authorization: Bearer mikr_…apikey:<name>)| Role | Capabilities |
|---|---|
| Super Admin | Full access plus user management and per-site access grants — the only role that can manage users and assign sites |
| Admin | Device CRUD, commands, upgrades, service toggles |
| Operator | Device management, command execution, upgrades, backups |
| Viewer | Read-only: dashboard, device status, interface views |
Each non–Super Admin role can additionally be scoped to specific sites (per-site RBAC, v1.33.0+): the role decides what a user can do, the assigned site list decides where. A scoped user only ever sees and acts on their sites — across the dashboard, device list, sites, logs, backups, live status updates, and bulk commands/upgrades — enforced server-side at the data and WebSocket layers, not just in the UI. Users with no scope restriction retain full-fleet access.
Recommended: create a dedicated MikroTik user group with minimal policies:
/user/group/add name=manager-group policy=ssh,reboot,read,write,sensitive,rest-api,policy,!local,!telnet,!ftp,!test,!winbox,!password,!web,!sniff,api,!romon
/mcp exists only after an admin enables it. While it is off the path returns 404 to authenticated and anonymous callers alike, so an install that has not enabled it does not advertise it/mcp and is refused anywhere else, including the rest of the REST API| Method | Protocol | Encryption | Use Case |
|---|---|---|---|
| SSH | TCP/22 | Encrypted | Default, best compatibility |
| REST API | HTTPS/443 | TLS | RouterOS 7.1+ |
| SNMP | UDP/161 | SNMPv2c | Monitoring only, no write ops |
| Data | Protection |
|---|---|
| Device passwords | AES-256-GCM with unique IV per value |
| User passwords | bcrypt hash (irreversible) |
| TOTP secrets | AES-256-GCM (same key as device passwords) |
| 2FA backup codes | bcrypt hash (irreversible), single-use |
| Device configs | Local SQLite — OS-level file permissions |
| JWT & encryption secrets | Auto-generated on fresh install, persisted to data/.secrets.json (mode 0600); env vars take priority when set |
| Channel | Protection |
|---|---|
| Browser ↔ Manager | HTTPS/TLS (recommended for production) |
| Manager ↔ MikroTik (SSH) | SSH protocol encryption |
| Manager ↔ MikroTik (REST) | HTTPS/TLS |
| WebSocket | WSS when TLS enabled |
node:22-alpine — minimal attack surfacepackage-lock.jsonexpress, better-sqlite3, node-ssh, net-snmp, jsonwebtoken, bcrypt, wsMikroTik Manager minimizes supply chain risk through controlled dependencies, reproducible builds, and a fully self-contained distribution model.
node:22-alpine from Docker Hub official libraryv1.17.0), never overwrittenghcr.io), tied to the official repositorypackage-lock.json ensures reproducible installs with exact versions and integrity hashesadmin/admin password immediately after first login. Delete the admin account once a named admin exists — it will not be re-created.data/.secrets.json alongside the database — secrets are auto-generated on fresh installs and losing this file invalidates all sessions and makes encrypted device passwords unrecoverable. To override or rotate, set JWT_SECRET / ENCRYPTION_KEY via environment (openssl rand -hex 48 / -hex 32).data/mikr.db per your backup policy| Requirement | Status |
|---|---|
| Data sovereignty | Full — all data stored locally, no cloud |
| GDPR | No personal data processed beyond user account names |
| Network isolation | Supported — core management runs fully in air-gapped environments; the optional public-feed checks (CVE / version / update) simply stay idle with no errors |
| Audit trail | Command history with user attribution and timestamps |
| Access control | Role-based (four roles) with per-site scoping; API keys for machine-to-machine access; AI assistants read under an API key's role and scope, and only when the endpoint is enabled |
To report a security vulnerability, contact: ihor@hreskiv.pl
We take security reports seriously and will respond within 48 hours.