Repository navigation
Releases
v0.17.1
Changed
-
DumbMonit moves to the
selfhostrorganization. The repository is now
github.com/selfhostr/dumbmonit, the images areghcr.io/selfhostr/dumbmonitand
ghcr.io/selfhostr/dumbmonit-agent, and the website and documentation live at
dumbmonit.selfhostr.io. The oldghcr.io/laupernoeimages receive no more updates:
change the image name in yourdocker-compose.yml(an upgrade note in Settings shows the line). -
Docs: refreshed screenshots, no more public demo links.
Fixed
- Synology package behind a changed port or a reverse proxy. The certificate pin shown for the
package is now the one the address you opened actually serves (a trusted certificate needs no pin). - The Synology agent updates itself. The package runs a writable copy of the agent, so a new server
version brings the agent up to date without reinstalling the package. Modules that make no sense on
DSM are no longer offered. - Add monitor: no more relay checkbox or "several machines" option in the package flow, and the
Active Directory deployment is its own choice in the picker.
v0.17.0
Added
- Remove an agent from the UI. Deleting the monitor of a machine whose agent is
online and accepts commands offers to remove the agent automatically: it stops
and removes its service, binary and configuration (as--uninstalldoes), then
the monitor is deleted. Administrator session only, recorded in the audit log
(POST /api/targets/{id}/agent/uninstall). An agent in a container, or not
installed by the install scripts, refuses; the manual commands stay available. - Synology package, deeper. The DSM 7 package is attached to every release
(x86_64 and aarch64) and the agent reads RAID and volume health, disks (model,
temperature, wear, unreadable sectors), installed packages, SMB/NFS/SSH and the
UPS, with alert rules for a degraded array, a read-only volume, a hot disk, growing
bad sectors, SSD wear and a stopped package. The add-monitor page offers the package
or the credentials, with the pin ready to copy. - Pre-releases from dev. A tag
vX.Y.Zon a commit that is not on main publishes
a pre-release (images, agent binaries,.spk), neverlatest. - Deeper integrations and more alert rules for Proxmox VE, Proxmox Backup Server,
TrueNAS, UniFi, OPNsense, Tailscale, Pi-hole, AdGuard Home, Home Assistant, Jellyfin,
Plex, Immich, Nextcloud, PostgreSQL and Synology (API): about 100 new default rules
and many new metrics (certificates, backups, replication, DHCP, quotas, jobs, safety
sensors, tasks and more). Field names come from the vendors' public APIs. - Motion and feedback. Shared motion tokens, softer menus, toasts and panels, and a
green confirmation on the action buttons when the action succeeded.
Changed
- Cleaner monitor pages. Icon-only header actions with a gear for the settings, a
lighter title line, and the agent settings (relay, logs, sentinel, services to watch,
re-enrolment) moved to the monitor's settings. The "Allow re-enrolment" button acts
in one click. - Simpler settings. Six tabs (the former General tab is now in System), a password
form behind a button, empty blocks collapsed, and no on-call contacts or hours in My
account. - No default site. A device without a site stays "No site"; only devices with a site
appear on the map, and there is no map until a site exists. The NAS fleet view is
gone: filter the monitors list instead. - The documentation lives on the website. The app no longer carries help texts: each
screen has a link to its page on dumbmonit.app/docs, rewritten step by step. - Home banner. The pigeon is the one of the logo, sitting in the sky.
Fixed
- The agent troubleshooting commands, the Docker Compose block and a one-click
re-enrolment on the agent install page. - The Synology installer's fields are readable, and its pin comes from the add-monitor page.
v0.16.1
Pre-release 0.16.1, for testing: not the latest release, not offered as an update to stable installs.
Added
- Remove an agent from the UI. Deleting the monitor of a machine whose agent is
online and accepts commands offers to remove the agent automatically: it stops
and removes its service, binary and configuration (as--uninstalldoes), then
the monitor is deleted. Administrator session only, recorded in the audit log
(POST /api/targets/{id}/agent/uninstall). An agent in a container, or not
installed by the install scripts, refuses; the manual commands stay available.
Synology package 0.16.0 (test)
Test build of the DumbMonit agent package for Synology DSM 7.x (x86_64 and aarch64). Not signed: DSM warns that the publisher is unknown. Install through Package Center > Manual Install, then enter the server URL (https), the enrolment token and the server certificate pin. See https://dumbmonit.readthedocs.io/en/latest/devices/synology-agent/
v0.15.0
Removed
- Custom dashboards. The Dashboards page, its API (
/api/dashboards,
templates and previews), the dashboard section of backups and the demo's two
sample dashboards are gone; the metrics explorer stays, without its "Add to a
dashboard" action. Existing dashboards stay in the database but are no longer
read, shown or exported. Backups made before still restore everything else.
Added
-
Wall music is back (Spotify Connect, a shared link, Settings › Wall display
› Wall music,/api/music/*, kept settings read again), with a small "Now
playing" dock on the wall and play / pause (POST /api/music/spotify/playback);
the security policy opens only Spotify's player, script and covers and the
three embedded players, never on status pages. -
Configuration changes after an update. Some versions need a change in the
docker-compose.ymlthat an update never makes for you (the first one: publish
port8443, the encrypted agent channel, introduced in 0.14.0). The server now
keeps a catalogue of these changes per version, with the explanation, the
block to copy and, when it can, an automatic check (does the agent port answer
from the server?). The first time an administrator opens DumbMonit after an
update that leaves changes pending, a window lists them. Done closes a
change (checking again first), I'll do it later leaves a reminder in the
corner of every page until it is dismissed, and a closed change never comes
back for its version. A change a check finds missing is listed even for an
instance updated long ago. The full list is in Settings → About; closed
changes are part of the backup. New routesGET /api/upgrade-notes,
POST /api/upgrade-notes/closeandPOST /api/upgrade-notes/announce
(administrator session). -
Machine health on Windows. The agent now fills the machine health card on
Windows too: top processes by CPU and memory, processor queue length, memory
pages per second and disk queue length (agent_windows_*, shown among the
current values), and the clock offset and synchronisation read from
w32tm /query /status /verbose(sameagent_clock_*series as on Linux). -
Switch panel for Omada and Aruba Central. Switches managed by an Omada
controller or by Aruba Central show their ports (state, speed, PoE) in the
switch panel, like SNMP switches. -
ENTITY-SENSOR-MIB sensors in SNMP profiles. A new
entity-sensorsprofile
reads temperatures, voltages, currents, fan speeds and power from ENTITY-SENSOR-MIB, with
the scale and precision each sensor reports. -
Restart markers on device charts. Host reboots (uptime going back) and
container restarts are marked on the charts of the device page. -
Expiries in deadlines. OVH services report their expiry date and are listed
in deadlines; the Veeam support contract has an expiry rule and a deadline. -
Region map. Azure and Infomaniak resources carry a region label and are
placed on the region map. -
Hyper Backup in the backup matrix. Synology Hyper Backup tasks appear in the
backup history and matrix.
Security
- HTTPS on the web port itself. Port 8080 now speaks HTTP and HTTPS at once
(told apart by the first byte), so nothing new needs publishing. TLS 1.3 and
TLS 1.2 with ECDHE + AEAD suites only, hybrid post-quantum key exchange
(X25519MLKEM768) first. Bring your own certificate with
DUMBMONIT_TLS_CERT/DUMBMONIT_TLS_KEY(re-read when the files change or on
SIGHUP), or use the self-signed one created at first start (its key stored
encrypted, its fingerprint in the log and in Settings › System › HTTPS and
encryption).DUMBMONIT_TLS=offrestores plain HTTP only. - Redirect to HTTPS on new installations. A browser opening the interface
over plain HTTP, straight to the server, is sent to HTTPS on the same address
and port. Upgraded instances keep plain HTTP until an administrator turns the
redirect on (orDUMBMONIT_HTTPS_REDIRECT); a banner says when a session
travels in clear. The API, install scripts, agent downloads, metrics, status
pages, the loopback and anything behind a reverse proxy (X-Forwarded-*) are
never redirected. - Stricter headers and cookies. HSTS on HTTPS responses;
Cross-Origin-Opener-Policy,Cross-Origin-Resource-Policy,
Permissions-Policy,X-Permitted-Cross-Domain-Policies,
Origin-Agent-Cluster, andCache-Control: no-storeon API answers. The
session cookie isSameSite=Strict, and over HTTPS__Host-dumbmonit_session
withSecure. - What still travels in clear, listed. Settings › System › HTTPS and
encryption lists every connection in clear or without certificate checks:
external VictoriaMetrics, OIDC, LDAP, SAML, monitors (insecure_tls, SNMP
v1/v2c or v3 without privacy, credentials tohttp://), notification
channels (plain SMTP,http://URLs), log destinations, agents still allowed
on the plain channel, unsigned agent updates. - The SAML sign-in URL must now be
https://(loopback excepted). - Password hashes use explicit OWASP Argon2id parameters (19 MiB, 2 passes).
- A restored backup no longer brings back a status page website link that the
API would refuse.
Agents
- The add-an-agent screen checks the encrypted channel first. The server
dials its own agent port at the address the install command carries; when it
is not published, filtered or leads elsewhere, the screen shows the exact
ports:line ("<public port>:<listen port>") and the firewall commands
instead of a command that would fail. Through a relay, it waits until the
relay's gateway listens and reminds which port to open on the relay. The
install scripts print the same diagnosis instead of a bare "server
unreachable". - Over self-signed HTTPS, the Linux/macOS install command pins the server's
public key (curl --pinnedpubkey), and the script downloads over HTTPS
checked by it (--pinned-key=). - Updates blocked by unsigned builds are said up front. Settings › Agents ›
Agent updates shows Updates blocked: unsigned builds and how to unblock;
agents show Blocked: unsigned build instead of a refusal after the fact.
scripts/agent-signing-key.shcreates the Ed25519 signing key (see
docs/development/agent-signing.md).
Changed
-
Left menu. It stays in place while the page scrolls; hovering the logo
turns it into the expand button (the collapse button sits next to the name
once open), Ctrl+B (⌘B on a Mac) toggles it. Settings moved to the bottom
with Wall mode, Docs and GitHub; wall mode is no longer in the top bar. The
logo and the app icons have a night-sky background instead of plain black. -
Needs attention. "Silence 1 h" became a small cross that mutes the monitor
for 1 h, 8 h, 24 h or until a date you pick, with Unmute on the row. -
First-run guide. The step list no longer runs over the form, and the
pigeon says a word at each step (and on the add-a-monitor page). -
Section tabs. One tab strip (in the address as
?tab=, keyboard, sticky on
phones) now groups the secondary pages. Monitors: List, Map, Logs and Security;
Alerts: Now, History, Rules, Automation (log, runbooks, actions, policies) and
On-call, with the maintenance windows folded under Now; Status: Pages and
Reports. The old/map,/logs,/security,/actionsand/reportspages
forward to their tab, and/alerts#scheduled,#oncall,#history,#rules
still land on the right one. -
Calmer screens. A monitor's page shows five alert lines and a link to the
full history (Alerts › History is paged, fifty lines at a time, and opens
filtered to that monitor). A disabled monitor shows one notice instead of
empty panels. The twenty-odd switches of a monitor type sit in one compact
panel, and long option lists get three sub-headings. -
Words. "Monitor" everywhere for the watched thing, "Snooze" for a quick
pause, "Maintenance" for a planned window, "Hide resolved" instead of "Clear all
resolved". -
Faster first load. The interface loads the messages of the language in use
instead of the nine (about 4 MB of JavaScript less), identical reads started at
the same moment share one request, and the overview's figures are no longer
fetched three times on arrival. -
The wall is a picture again.
/wallopens on Paris by default (the
rooftop, the Eiffel Tower, the pigeons: Gaston holding a sign with the number
of problems, Mimi and her croissant, Jules on the lamp post) instead of a
black board. The sky follows the real hour; the weather follows the network
(clear, clouds, rain, then a thunderstorm in a real outage). The verdict,
the clock and the date are huge, the problems come as tiles, then every
monitor as a small tile; the five fleet figures and the health river move to
a quiet strip along the foot of the screen. Night (default) and Day themes;
New York, Tokyo and Dubai stay night scenes. The default city and theme are
set in Settings › Wall display (remembered per browser), overridden by?city=
and?theme=and by the Backdrop and Theme buttons on the wall;noneis
still a choice. The scenes are loaded on demand, still on a phone or in a
hidden tab, and a still picture under reduced motion. -
Status pages show their scene by default. A page whose scene list is empty
now draws Paris unless Simple mode is on. -
A complete public demo. The demo (
DUMBMONIT_DEMO=1) now fills every
page but log search. Two clients in MSP mode: the homelab, now with UniFi, Kopia,
DNS checks and an iSCSI LUN on the Synology NAS, and a small architecture
office in Geneva with a Windows domain controller (machine health card),
Veeam Backup & Replication 13, an Omada network, Microsoft 365 and Entra ID,
polled through a relay agent placed in the office. The Linux agent reports
the full machine health card (top processes, ...
v0.14.2
Added
Device pages
- Device pages show only the charts that matter. Every integration now
declares its metrics (unit, counter or gauge) and its views in the catalogue
(GET /api/collectors, newmetricsandviewsfields): a row of current
values, then at most four charts, with busiest-entity rankings where one curve
per guest, mailbox or port would be unreadable. Everything else stays one click
away under All measurements. SNMP profiles can declarelabel,unit,
entity,viewandview_titleper metric. - Catalogue rankings and heatmaps use the shared chart kit: a
topnview is a
ranked list, aheatmapview spreads its busiest entities over the period. - Richer charts on a device page: alert-rule threshold lines, markers for the
device's alerts and resolutions, one cursor shared by all its charts, a
"Compare to last week" switch (dashed overlay) and a mirrored in/out view for
interface traffic. - Switch panel on the page of an SNMP switch, a UniFi console and a MikroTik
router: the faceplate of every port (link, speed, PoE, errors, shape and word
for each state), the selected port's traffic in/out, errors of the day, LLDP/CDP
neighbour and native VLAN, and a heatmap of every port's traffic over 24 hours.
Theethernet-switchSNMP profile reads every physical port, the native VLAN
(Q-BRIDGE-MIB) and PoE (POWER-ETHERNET-MIB); UniFi publishes the ports of its
switches and gateways (port_table,lldp_table). - Machine health card at the top of an agent host's page: CPU, memory and disk
gauges with one-hour curves, a per-core heatmap, the ten heaviest processes by
CPU and memory, kernel pressure (PSI), OOM kills, inode usage and clock drift,
each with a short explanation. The Linux agent now reports these causes of a
slow machine (process names only, never command lines).
Capacity and alerting
- Fill-up forecasts for every integration. A new built-in rule, Storage
filling up, watches every capacity metric DumbMonit collects (agent
filesystems and ZFS pools, SNMP storage, Proxmox storages and pools, backup
datastores, TrueNAS, Synology, QNAP, Unraid, Ceph, vSphere and Nutanix
storage, appliance disks, Microsoft 365 licences, UPS battery runtime…) and
alerts when one will be full within 30 days at its current growth rate: info
first, warning under 14 days, critical under 7, speaking again at each step.
The growth is a robust fit over the last week that ignores gaps and restarts
after a cleanup, an expansion or a quota reset.GET /api/targets/{id}/forecasts
returns the per-entity forecast (used, size, growth per day, days to full,
confidence). - Capacity bars say when they will be full: each agent disk ("Full in about 23
days at this pace") and each NAS volume, from the same forecasts. Filesystem
inodes reported by the Linux agent are a forecast family too
(filesystem_inodes). - Drift alerts. Two built-in rules compare probe response times and the
share of 5xx answers (reverse proxies, Cloudflare) with the usual value for
the same hour over the previous four weeks, and alert at three times the
usual, with a minimum value, a minimum gap and a minimum duration so that
small or short-lived wobbles stay quiet. New rule typesforecastanddrift
are available to custom rules. - iSCSI-aware storage. A Synology volume that hosts a thick-provisioned
iSCSI LUN no longer alerts as "almost full": the volume fill alert and the
fill-up forecast now use the effective usage (without thick reservations),
identical to the raw usage when there is no LUN. New built-in rules warn
about thin LUN over-allocation (more space promised than the volume has
free) and thin LUNs almost full. The Synology panel shows the volume as
reserved space plus data and lists each LUN with its type, size, real usage
and the monitor that uses it — matched by name and size, or linked by hand
(PUT /api/targets/{id}/luns/{lun}/consumer, saved in backups). TrueNAS
zvols are listed the same way.GET /api/targets/{id}/lunsreturns it all. - Deadlines timeline on the Reports page: domains, certificates, Entra
application secrets, Infomaniak products, Tailscale keys and licenses (FortiGate,
Meraki, Palo Alto, Veeam, GitLab) on one 90-day axis, with the soonest as a
list on phones. Each monitor page shows its own expiry dates. Served by the new
GET /api/deadlines(soonest first,targetandmax_daysfilters). - Domain changes: the domain monitor now reads the name servers and
fingerprints them and the registrar. New default rules alert on a change of
name servers, a change of registrar, and DNSSEC lost.
Maps
- Weathermap on the topology map. Links between switches show their load: the
width and tint follow the port utilization (rate over port speed), the label
spells412 Mb/s · 41 %(always from 50 %, on hover or focus otherwise), a port
that loses frames is dashed, dots move along the link in the direction of the
busiest flow (still with reduced motion), and a link behind a down device is
greyed out. Clicking a link opens its rates each way, errors and the last hour.
A Traffic toggle sits next to Group by subnet; the list view shows the
load of each link; on a phone the map falls back to a list of the busiest links.
GET /api/topologylinks carry an optionaltrafficobject, and
GET /api/targets/{id}/port-trafficreturns the one-hour curve of a link's ports. - Threat map. The Security page opens with a world map of the attacks your
defences stopped, shaded by country: CrowdSec alerts of the last 24 hours, the
inbound connections blocked by an OPNsense firewall's live map, and Cloudflare
threats by country. Countries only: no address leaves the server or is stored.
The CrowdSec panel shows its own share. New routeGET /api/security/threats. - CrowdSec machine login. Besides the bouncer key, a CrowdSec monitor accepts
a machine login (cscli machines add): DumbMonit then reads the local alerts and
keeps their country of origin (dumbmonit_crowdsec_alerts_by_country). - Cloudflare threats by country (
dumbmonit_cloudflare_country_threats), read
with the traffic analytics already collected. - One world map for every page. Sites, cloud regions, threats and a
firewall's live traffic share the same map: country shading, sized discs and
links, a legend and the same data as a text list under it. The World view of
the Map page links each relay agent's site to the main site, in the relay's
state. AWS, Hetzner and OVHcloud panels map their regions and datacenters from a
built-in table (AWS, Azure, Hetzner, OVHcloud, Infomaniak), with no request out.
Agents and relays
- Agents behind a relay. At a site behind a firewall, where only the relay
agent goes out, servers can now run the full agent: they connect to the
relay's gateway (TCP 8443 by default, on the site's network), which
carries their connection to the server. The agent's TLS 1.3 session, client
certificate, pinned authority, token and binding secret stay end to end
between agent and server: the relay only copies ciphertext, through a tunnel
it opens under its own client certificate, and cannot read, alter or
impersonate anything. Enrolment, the install script and the binary (checked
against the SHA-256 in the command) go through the relay too. Bounded
connections and rate per tunnel, no open proxy, and a relay only carries
machines of its own client (MSP). - The server records the relay each agent connects through: shown on the
agent's page, drawn as its parent on the topology map, and used for alert
suppression (agents behind a relay that is down aresuppressed, not down). - Install commands through a relay: choose Directly or Through
<relay> (site) when adding a server with the agent, in the Active
Directory kit (Route), from a site in Add by site, or from the relay's
page (Install an agent through it).POST /api/agent/tokens,
GET /api/agent/installandPOST /api/agent/ad-kittakerelay_idand
relay_host; the relay's Relay panel sets its gateway (port, address) and
shows the agents connected through it. - The add-an-agent flow does everything in place: token, Linux/macOS, Windows
and Docker commands, an option for several machines, the wait for the first
connection (GET /api/agent/tokens/{id}/machines), then naming, folder and
site. The Active Directory kit is offered there too. - Imports (Uptime Kuma, UptimeRobot, Gatus) can send the imported monitors
through a relay (via_agent), and monitors added from a relay's network scan
are probed through that relay.GET /api/relays/kindslists the kinds a
relay can probe; forms only offer Reached through for those.
Docker
- Docker consumption: the agent now reads each running container's
statistics (one-shotstats, a bounded number in parallel, with a time
budget) and reports CPU (% of a core), memory (cache excluded) against its
limit, network and block I/O, and process count;system/dfgives the disk
taken by images, containers, volumes and build cache, and what a prune would
free (read every ten minutes). The Docker panel shows CPU and memory meters
on every row, a top-5 by CPU and by memory, and a "restart loop" badge for a
container that restarted three times or more in fifteen minutes. Linux only,
as the rest of the Docker module.GET /api/targets/{id}/containersgains
cpu_percent,memory_bytes,memory_limit_bytesandrestarts_15m. - Docker bulk actions: tick containers (or use "select all" and the quick
filters "no auto-update" / "no auto-restart") to enable or disable
auto-update and auto-restart for all of them, or update them now. A failure
is reported per container. NewPUT /api/targets/{id}/containers/policy. - Co...
v0.14.1
Added
- Deploy with Active Directory takes the name (FQDN) or address of the
DumbMonit server the agents contact and, optionally, a DNS server that resolves
it. Both are validated, written into the kit (servers that cannot resolve the
name get it from that DNS server) and shown in the summary. - The setup wizard offers Deploy with Active Directory directly in the first
monitors step. - Every agent install page (install command, relay, Active Directory) now states
that agents talk to the server over the encrypted channel with an agent
certificate (mTLS, TLS 1.3), and which port to open (the agent port, TCP 8443 by
default, agent to server, also from another site). - Add a monitor by site. Add a monitor (and the setup wizard's monitors
step) now asks where it is first: a location of the world map, or no site.
The page then proposes what to add there, namely devices a network scan found
through the site's relay agent that nobody monitors yet (one click creates them)
and the monitor types that fit the site, all pre-filled with the site's relay
agent, location and folder. The full list of types stays below. In MSP mode
only the current client's sites are offered. - Dashboard templates. New from a template on the Dashboards page offers ten
ready-made dashboards that fill themselves with your own devices: homelab overview,
Linux and Windows servers, network, Proxmox and virtualization, storage and backups,
websites and TLS, Active Directory, Kubernetes, Docker hosts, and SLA. Narrow one to a
device type, folder, site or client, check the live preview, and create it. A template
with no device to feed it is dimmed, with the reason. Templates are served by the server
(GET /api/dashboards/templatesand…/{id}/preview), limited to the devices the
account can see. - Enterprise wall mode. With the instance in Enterprise mode,
/wallshows a very dark board in Geist: the verdict and the clock, the five fleet figures, the health river, open alerts and who is on call.
Changed
- Security page, compact. CVEs now show as a dense gallery of short cards
instead of long per-device lists, with a one-line counter strip and foldable
group headers. A switch picks the pivot: by CVE (each CVE once, with the
machines it touches, severity, exploited or not, fix available or not) or
by machine (each machine once, with its CVEs). Click a CVE to filter the
machines, or a machine to filter its CVEs. Quick filters: severity, state,
exploited, fix available, ignored, folder, client (MSP mode) and a search
box (CVE ID, package, machine). Pivot, filters and focus live in the URL. - Active Directory findings use two columns on wide screens and fold long
descriptions behind "Show more". - Fewer, better themes. Status pages keep four banner scenes (Paris, Tokyo, New York, the Matterhorn) and the Homelab wall four backdrops (Paris, New York, Tokyo, Zermatt). The others were retired and fold onto the nearest one: existing pages (migration 0200), backups, API calls and saved or linked
?city=choices all land on a kept scene. The wall's OLED theme is gone (a savedoledreads as Night). - Enterprise rail. The account button (your initials) moved to the foot of the rail, just above Settings, and the documentation and GitHub buttons are back at the bottom.
- Status pages leave Settings. They are a destination of their own, Status pages (
/status, editor at/status/<id>) on the Enterprise rail and under More in Homelab./settings/statusand its anchors forward there. - A Reports page. The SLA export of a period (with the client in MSP mode), the scheduled reports and a sending history are together on Reports (
/reports, Enterprise rail and More); they left Settings, and/settings/reportsforwards. The Settings tab is now just Notifications. - The status page scene picker shows its four scenes at once, without search
or paging; the retired OLED wall palettes are gone.
Fixed
- A monitor's page no longer prints a whole certificate (the Active Directory
ca_certoption) over its header: option chips show one line, cut with an
ellipsis and the value on hover, a PEM as "PEM".credential_publicalso drops
any long, multi-line or PEM value. - Restricted (MSP client) accounts: the dashboard template preview no longer
names a site where they have no device, and is now open to them (it only
reads the devices they see). - The agent channel note and the Active Directory deployment plan show the
server's real public agent port (DUMBMONIT_AGENT_PUBLIC_PORT, or the listen
port) instead of 8443.
v0.14.0
Added
-
Two product modes, and a setup wizard. An administrator picks how the
interface looks, at first launch or in Settings → General, and can switch
at any time without losing anything:- Homelab (the default, and what existing instances keep) is the familiar
interface made simpler: four destinations in the bar and everything else
under More and the command palette, the rarely used sections of each
Settings tab folded behind Advanced, and device forms that show fewer
fields up front. Light and dark themes as before. - Enterprise is a new, very dark console (Geist type): an icon rail, a
header with breadcrumb, LIVE, time range and the command palette, and a
context panel on the right that shows what needs attention, the monitor you
picked, the nearest forecast and who gets told. Its overview has a band of
five figures (monitors up, 30-day availability, p95, open alerts, MTTR), a
health river of every monitor over the range, and a dense monitor table
with state, type and text filters, optional columns and keyboard
navigation (j/k,Enter,o,ifor the panel,g m,g x,g l). - The setup wizard opens after the first administrator signs in, and again
from Settings → General: mode, instance name, language and time zone, a
first notification channel with a test, first monitors (network scan, import
or by hand), an agent; in Enterprise mode, optional steps for single sign-on
and teams, on-call and retention. Every step can be skipped. - API:
GET /api/instance(public: mode and whether setup is done),
GET/PUT /api/instance/settings. The settings travel with the backup.
- Homelab (the default, and what existing instances keep) is the familiar
-
Multi-client (MSP) mode, with per-client reports. Settings → Team & access
→ Clients puts clients above teams and folders. Every monitor, status page and
agent token belongs to a client; channels, alert rules, maintenance windows and
report schedules belong to a client or are shared by the instance. Off by
default: everything existing goes to a Default client and a single-customer
instance sees no change. On, admins become MSP administrators who pick a client
in the header and get an overview of every client (alerts, quota), and other
accounts only see the clients they belong to, enforced by the server like teams
(closed route list, lists, details, metrics, alerts, rules, status pages,
reports, logos, Web Push; everything else refused). A client's channel only
hears about its monitors, its rules and maintenance windows only touch them, an
agent token only enrols into its client, and moving a monitor takes its
dependents and cuts any link left between clients. Simple device quotas,
identity-provider group → client mapping, a logo shown on the client's status
pages and in its SLA report, and the monthly SLA report (PDF, CSV) emailed to
the client's contacts. Backups carry clients and what belongs to them.
Shared dashboards, on-call schedules and escalation policies, runbooks and
remediation actions also belong to a client or to the instance; a client's
action never runs on another client's monitor. With a client picked, the MSP
administrator's lists, run log and log search follow that client. SCIM groups
named on a client bring their members into it. The client switcher sits in
the header of both product modes. -
Cloud integrations. Eight new monitor types read the cloud services a small
team depends on, with read-only credentials and built-in alert rules grouped per
product: Microsoft 365 (service health and incidents, licences, risky users),
Microsoft Entra ID (application secrets and certificates about to expire,
administrators without MFA, AD Connect sync older than 3 hours), Microsoft Azure
(Resource Health and active Azure Monitor alerts), AWS CloudWatch (EC2 status
checks and CPU, RDS, alarms in ALARM state; SigV4 signing built in),
Cloudflare (zones, tunnels, certificates, 5xx rate, load balancers),
Hetzner Cloud (servers and their metrics, volumes, backups), OVHcloud
(VPS and dedicated servers, maintenance) and Infomaniak (products and expiry).
Each has a page in the documentation (English and French) with the minimal rights
and the ports to open. -
Custom dashboards and a metrics explorer. Build dashboards from widgets on a 12-column grid: chart (MetricsQL), single value with warning and critical levels, state of a monitor folder, active alerts, and Markdown notes. Drag, resize and reorder with mouse, touch or keyboard; phones get a single column. Each dashboard saves its time range and refresh interval. Dashboards are personal (any account) or shared (administrators), and travel with backups. The new metrics explorer (
/explore) lists thedumbmonit_*metrics and their labels, completes names in a MetricsQL box, draws the result and adds it to a dashboard. New API:/api/dashboardsand/api/metrics/catalog. -
Application integrations (beta). Eleven new monitor types, written from the vendors' API documentation and tested on realistic responses, not yet against live instances:
- Sonarr, Radarr, Lidarr and Prowlarr (API key): health errors and warnings (the System → Status page), failing download clients and indexers, download queue errors, disk space, updates, and, for Prowlarr, indexers disabled after failures.
- qBittorrent (WebUI session or allowed address): torrents in error or stalled, lost connectivity (firewalled, disconnected), speeds, free space, torrents by state.
- UniFi Protect (local user): cameras offline or connected but not recording, NVR disks in failure, storage in use, recording switched off.
- Frigate (internal API, optional bearer token): cameras that stopped delivering frames, detector speed and hangs, frame rates, recording storage, updates.
- Keycloak (health checks, then an optional service-account client): readiness and database health, realms, active sessions and users per realm.
- authentik (API token): readiness, workers, failed system tasks, disconnected outposts, updates, users.
- Vaultwarden (public checks, optional admin token): liveness, version, open sign-ups, account counts. The admin session is kept between probes because its login is rate-limited.
- mailcow (read-only API key): stopped containers, Postfix queue size and age, mail volume, mailboxes close to their quota.
Thirty-nine built-in alert rules cover them (health errors, offline cameras, stuck queues, full disks, updates); each type has a setup guide and a documentation page in English and French. A host that does not answer is Monitor unreachable; a refused key or password is shown as a configuration error and not notified.
-
Five more integrations: SQL Server, Oracle, Elasticsearch / OpenSearch, InfluxDB and Kafka.
- SQL Server: databases that are not online, blocked requests, sessions
against the limit, free space of the data volumes, SQL Server Agent jobs whose
last run failed, and AlwaysOn replica health. A SQL login with read-only
server rights; TDS over TLS in pure Rust (tiberius, no OpenSSL). - Oracle: instance state, tablespaces, sessions and processes, Data Guard
lag, fast recovery area and failed scheduler jobs. Read through Oracle REST
Data Services (ORDS), because Oracle's native protocol has no open pure-Rust
client and OCI cannot ship in the static image. - Elasticsearch / OpenSearch: cluster status, unassigned shards, disk and
JVM heap per node, with a user that only holds themonitorprivilege. - InfluxDB 2 and 3: health, readiness, uptime, memory, descriptors and 5xx
counters. - Kafka: brokers, controller, offline and under-replicated partitions,
and the lag of the consumer groups, over a small hand-written client of the
Kafka protocol (SASL/PLAIN over TLS; no librdkafka in the image). - Twenty-four default alert rules cover them, from a red cluster or an offline
database to a failed job, a full volume or a consumer group falling behind.
- SQL Server: databases that are not online, blocked requests, sessions
-
Windows without an agent (WinRM). A new
winrmdevice type monitors a
Windows server or PC through WS-Management and read-only WQL queries: nothing
to install, nothing executed on the machine. HTTPS (5986) by default, NTLMv2 or
Basic over HTTPS; unencrypted HTTP (5985) only when ticked explicitly. It
reports the samedumbmonit_*metrics as the Windows agent (CPU, memory, swap,
disks, uptime,service_up), the services you choose plus every stopped
automatic service (with a built-in rule), and recent event log error counts per
log and Event ID. Unreachable means down, a refused login is a configuration
error. Works through a relay agent. Kerberos and pending updates are not
supported; the docs cover the server preparation, the least-privilege account,
ports and Group Policy. -
Automatic layer-2 topology. The Ethernet switch SNMP profile now reads LLDP
and CDP neighbours, the bridge forwarding table, ARP and LAG membership; the map
drawsl2links between switches (with the port on each side, on hover and in
the link panel) and from hosts to their access port, never on trunks or LAG
members. Manual corrections keep priority. See Using the map. -
Network configuration backup (new
netconfigdevice type, the way
Oxidized or RANCID do it): the configuration of a switch, router or firewall
is read over SSH or the device's API at a set interval, through a relay agent
if needed, and a new version is kept only when it really changed, volatile
lines (timestamps, counters, re-encrypted values) aside. Declarative profiles
inprofiles/netconfig/for Cisco IOS/IOS-XE and NX-OS, Aruba/HPE, MikroTik
RouterOS (/export), Juniper Junos, FortiGate, pfSense and OPNsense
(config.xmlover SSH, or the OPNsense API), Ubiquiti EdgeOS/USG and UniFi
devices, St...
v0.13.6
Added
-
Roadmap page on the website. A new Roadmap page, in all nine languages, lists what is
planned in delivery order and what has already shipped. It is generated from
site-src/data/roadmap.json. It also shows what is in progress and two collapsible
"Ideas" sections (features and integrations), with a link to GitHub Discussions. -
Encrypted agent channel, ready for the Internet. Agents and relay agents
now report on a dedicated port (TCP 8443,DUMBMONIT_AGENT_LISTEN) with TLS
1.3 only, post-quantum hybrid key exchange X25519MLKEM768 and a client
certificate per machine: the agent generates its key on the machine, enrols
once with its token and renews its 30-day certificate by itself; deleting a
monitor revokes it at once. The server creates its own certificate authority
at first start, and the install command carries its fingerprint, so an agent
accepts no other server, even one with a valid public certificate, and never
falls back to plain HTTP. Existing agents switch by themselves once updated
(the plain channel announces the new one); Settings → Agents shows the
channel of each agent, a "Require the encrypted channel" switch (on for new
installations) and the authority rotation.GET /api/agent/installreturns
the install parameters for deployment tools. Publish port 8443 next to 8080
(see the Compose file); nothing to open on the agents. -
Security: CVE & vulnerabilities. A new section lists the known CVEs of
the software already monitored and says, per device, whether each one is
vulnerable, patched or to check. The inventory comes from what collectors
already report (Proxmox VE and its packages, PBS, OPNsense, Unraid, ESXi and
vCenter, FortiOS, RouterOS, UniFi, Synology DSM, MDaemon, SecurityGateway and
about twenty more products) and from a new daily inventory sent by the agent
(Debian, Ubuntu, Alpine and RPM packages; Windows build and common
programs). Sources: NVD by CPE, the Debian Security Tracker (backported fixes
count as patched), OSV.dev and the CISA KEV catalog, read once a day in the
background and cached for offline use; an optional NVD API key speeds it up.
When the data cannot decide (vendor rebuilds, unbounded ranges) the verdict
is "to check", never "vulnerable". Two new built-in rules alert on an
exploited (KEV) or critical (CVSS 9+) vulnerability that is not patched; a
CVE can be ignored per device to accept the risk. The device page shows its
own CVEs. Off by default: nothing is sent anywhere until an administrator
turns it on. -
Deploy the agent to a whole Active Directory domain with one group policy.
Settings > Agents > "Deploy with Active Directory" creates a fleet enrollment
token limited to the domain (reusable, 30 days by default, optional server
cap) and downloadsDeploy-DumbMonit.ps1. Run once on a domain controller
(-WhatIffirst), it checks its prerequisites, creates or updates the
"DumbMonit Agent" group policy and links it to the servers' OU (optionally
Domain Controllers, a security group filter, and the agent binary in SYSVOL
for servers without outbound access). Each server then installs the agent as
SYSTEM with the server's own install command, verifies its SHA-256, does
nothing when it is already up to date, logs to the Application event log, and
enrolls under its fully qualified name with its own identity, filed in the
folder "Active Directory " with theadtag and its OU. Only machines
of the domain can enroll with the token; "Stop enrollments" closes it without
cutting the servers already enrolled;-UninstallAgentsand-Removeundo
everything. The wizard shows the servers arriving live. -
Map: services and agents hang under the VM they run on. The map now reads
the IP addresses the hypervisor reports for each guest (Proxmox guest agent,
container interfaces, or the staticipconfigN/netN ip=configuration
when the guest says nothing; VMware Tools' primary address on vSphere) and
links every monitor aimed at one of them (HTTP, TCP, database…) to that guest
with a "Runs on" link, instead of leaving it floating. When a guest's name
matches no monitor, the only agent, ping or SNMP monitor at its address
stands for the guest rather than a second box; an agent's reported host name
also matches its guest. An address several guests report links nothing, and a
declared parent always wins. The guest's addresses appear in its details
panel and tooltip. Docker bridges and veth interfaces are no longer counted
among a guest's addresses. -
Map: Proxmox clusters, backups, firewalls and subnets. A Proxmox cluster
is drawn as cluster, one node per Proxmox node (online or offline), then its
VMs and containers, stopped ones included; a single-node Proxmox keeps its
guests directly under it. A monitor that matches a guest is drawn at that
place, not twice. A Proxmox with apbsstorage is linked "Backed up to" the
monitored PBS it targets (read from the storage configuration, nothing is
drawn without the right to read it), and a PBS and a Proxmox VE monitor that
point at the same machine are tied by a "Same host" link instead of sitting
apart under the same name. Firewalls (OPNsense, pfSense, FortiGate, Sophos,
MikroTik) lead their site, and the devices of the networks they serve hang
under them with a "Through the firewall" link (a declared parent always wins).
A new "Group by subnet" switch frames each site by subnet, with the VLAN and
its name when the firewall reports them ("Unknown network" otherwise), and the
list view shows the subnet. Links between sites now leave and enter through the
edge of the site frames in smooth curves instead of crossing the nodes. -
MDaemon and SecurityGateway are monitored through the Windows agent. The
forms now open with an "Agent required on the mail server" box that explains
why (queues, sessions, Windows services and disk space can only be read on the
server itself), opens the Windows agent install flow and lets you pick the
agent installed on the server (pre-selected when its host name matches the
address), instead of finding it implicitly. The agent detects MDaemon and
SecurityGateway by itself and reads their Windows services (state and start
mode), version, queue folders (messages and age of the oldest one) and the free
space of their data volume. The monitor page is split into "Read by the agent"
(Windows services, queues, sessions, disk), "Network services" and "API", and
shows a banner (not an alert) when no agent is linked, it is silent, or it does
not see the product. The MDaemon XML API account is now optional (version
only); the SecurityGateway API key stays recommended for its counters. New
default rules: Mail server Windows service stopped, Mail queue stuck and
MDaemon queue frozen. -
SEO settings for public status pages. A published page has a "Search
engines (SEO)" block: an "index this page" switch (off by default:noindex, nofollow), SEO title, meta description, keywords, canonical URL, share image,
language and site name, each generated from the page name when left empty, with
a live search-result preview and a "Copy the prompt for an AI" / "Paste the
result" round trip. The server writes the tags (title, description, robots,
canonical, Open Graph, Twitter card, hreflang, JSON-LD) into the HTML of
/s/<slug>and sendsX-Robots-Tag; indexable pages are listed in
/sitemap.xmland allowed in/robots.txt, everything else stays closed. -
Monitor groups on status pages. Tick whole groups (folders) in the page
editor: a ticked group is live, so monitors added to or removed from it appear
or disappear on the page by themselves, shown under the group's name without
duplicates. -
Private and public names in the status page editor. Every monitor shows
its private name (read-only, never published) next to an editable public name,
with a warning when an empty public name would publish the internal one; this
also applies to monitors that come in through a ticked group. A test checks
that the public JSON, HTML, feed, badges and sitemap never carry a private
name, address or id. -
Status page history: 24 hours to 90 days, adaptive, with a day detail. The
period is now a page setting (24 hours, 7, 30, 60, 90 days) and the bars adapt
to the data that exists: 2 hours of data show 5-minute bars, 12 hours hourly
bars, 3 days 6-hour bars, instead of weeks of grey. The caption names the
period really shown and the availability is computed over it. Clicking a bar
opens that day hour by hour (outages with start and end, announcements) from
GET /api/public/status/<slug>/day/<date>, public names only. -
Past incidents on status pages. Enter an incident that already happened:
start time (never in the future), optional resolution time, and updates each
with its own date, sorted and validated. An incident entered as resolved
notifies nobody; it shows in the history and the day bars at its real date.
Fixed
-
Linux agents keep their encrypted-channel certificate across restarts. The
systemd unit made/etc/dumbmonitread-only (ProtectSystem=strict), so the
agent could not save its certificate (agent-tls.json) and binding secret
there; the unit now allows writing to its configuration directory only.
Reinstall the agent with the install command to get the new unit. -
Interface clean-up: lists refresh, fewer buttons, folded settings. Any
successful create, update or delete now refreshes the shared device and alert
lists, so a deleted monitor no longer stays on screen until F5. On Monitors,
the map and "Create folder" are icon buttons next to "Select" and the "..."
menu is gone. An alert row keeps two icon buttons: acknowledge (check) and
snooze (duration picker). In Settings, SSO, LDAP, the Monitoring, Wall di...
v0.13.5
Added
- "Network ports to open" in every setup guide. Each guide opens with the
ports to allow, with the direction spelled out (from the DumbMonit server or
its relay agent to the device; for the agent, the other way round) and the
ports only an option needs marked optional. The device pages of the
documentation start with the same table. - A quiet note when an optional feature is skipped for a missing permission.
On Proxmox VE, Proxmox Backup Server and Proxmox Datacenter Manager, a 403 on
an optional call (guest agent, pending updates, certificate expiry, update
summary...) no longer vanishes silently: the monitor page says which feature
was skipped and which permission the token lacks. It never raises an alert.
Fixed
- Editing a monitor no longer loses or seems to lose its credentials. The
edit form now shows the saved non-secret parts (Proxmox token ID, user name,
SNMP v3 user and protocols), returned by the API ascredential_publicwith
has_secret; a saved secret shows as dots ("Saved. Leave empty to keep it").
A secret field left blank is now left out of the request and the server keeps
the saved one, as long as the user name or token ID it belongs to and the
address are unchanged; otherwise the form asks to type it again. This fixes
a real loss: editing an SNMP v3 monitor and retyping only the authentication
passphrase erased the privacy passphrase. Secret fields also no longer invite
the browser to autofill the DumbMonit sign-in into them. SNMP v3 gains an
explicit "None" privacy choice to turn encryption off. Secrets are still never
returned by any response.
Added
- Server logs: kept on disk, downloadable, and shipped to a log service.
DumbMonit now writes its own logs (and its audit log entries, marked
"kind":"audit") to/data/logs, one JSON-lines file per day, compressed
once the day is over, kept 14 days by default and capped at 1 GB in total
(both adjustable in Settings → System → Logs). An administrator can
download the last 1, 7, 14, 30 or any number of days as a.tar.gz, with
the size shown before the download starts. Logs can also be sent to
Graylog (GELF over UDP, TCP or HTTP), VictoriaLogs (JSON lines), Grafana
Loki (push API), Elasticsearch / OpenSearch (bulk API) or any syslog
receiver (RFC 5424 over UDP, TCP or TLS), each destination with its own
minimum level and a Send test button. Shipping runs in the background
with a bounded queue: if a destination is down, records are dropped and
counted rather than slowing the server. Anything that looks like a secret
(credentials in a URL, tokens in a query string,Authorizationheaders)
is masked before it is written or sent, and the first-run setup code only
ever goes to the console. - Wall widgets: a screen model to arrange them, News folded in, a Text
widget. Settings → Wall widgets now shows a 16:9 model of the wall (top bar,
right column under the clock, bottom bar, a tray for hidden widgets) where
widgets are dragged and dropped with a mouse or a finger, or selected and moved
with the arrow keys and Move to buttons; what is dropped is what/wall
shows, and Reset to default restores the default layout (on a phone the model
is an ordered list). The News feeds are now the settings of the News widget
in the same list, saved with the others; nothing to redo, the configured feeds
are kept. The new Text widget shows a short free message (plain text, 200
characters) wherever it is placed. - Import Uptime Kuma 1.x and 2.x from
kuma.db. Uptime Kuma 2 dropped its
JSON backup, so the import now also reads the SQLite database
(docker cp uptime-kuma:/app/data/kuma.db .): upload it, preview the monitors
sorted by type and folder, tick the ones to import (those already monitored are
flagged) and import them in one click, with the same mapping as the JSON
backup. The file is read once in read-only mode from a temporary copy (at most
512 MB) that is deleted afterwards. Uptime Kuma 2 on MariaDB is not supported.
New endpointPOST /api/targets/import/kuma-db, androws=on both Kuma
import endpoints. See
Coming from Uptime Kuma.
Changed
- Add a monitor: the import buttons (Uptime Kuma, websites CSV) moved from the
top of the page to a new Import category at the bottom, beside
Everything else. - Relay mode is switched from the UI. An agent's page has a Relay for a
remote site switch and a site field: the server sends the setting to the
agent in its next acknowledgement and the agent turns relay mode on or off on
the fly, without a restart or a file to edit.relay: truein agent.yaml
still wins; an agent too old to follow the switch is flagged. A token from
Watch a remote site (or with This agent is a relay for a remote site
ticked) carries relay mode and the site, so the enrolled agent is a relay
from its first report. Once a relay, its page links to Scan this site's
network and Add a monitor through this relay. - Reached through, in bulk. The monitors list's selection bar sets Reached
through (direct or a relay) on many monitors at once, skips agent monitors
with a note, and offers to place them at the location whose site is the
relay's.
Changed
- Simpler setup guides when adding a monitor. Each guide is now a few short
steps done in the product's own web interface (a command is kept only where
the product has no interface for it), followed by a framed "Required
permissions" list with the exact rights, roles or scopes to grant, and a
"Full guide" link to the matching documentation page. The device pages of the
documentation carry the same steps and permissions. Integration packs can list
setup.permissionstoo.
Added
- Dismiss an alert in one click. Every alert now leads with a Dismiss
button — in the alert list, an alert's details and a monitor's panel — with
no duration to pick and no confirmation, only a toast with Undo. A
dismissed alert leaves the active list, the overview, the wall and every
counter, and nothing more is sent for it (no reminder, no escalation, no
resolution message) for as long as the condition lasts. The dismissal belongs
to that occurrence: once the condition clears, a later return is a new alert,
notified as usual. Its resolution stays in the history as "dismissed by …",
and a Dismissed view lists the ones still active, to restore a mistake.
Acknowledge and Snooze stay available in the alert's … menu.
Notifications carry a Dismiss link first ({{dismiss_url}}for custom
webhooks), the API gainsPOST/DELETE /api/alerts/{fingerprint}/dismiss
andGET /api/alerts?dismissed=true, and assistants adismiss_alerttool.
Changed
- The folded group of acknowledged alerts in the Now list is called
Acknowledged (it read Dismissed). - Active Directory: DNS servers option. When the DumbMonit host's DNS does
not know the domain, fill DNS servers with the IPs of the servers that do:
every name lookup of the monitor (the controller you entered, the other
controllers, the reachability check) goes through them over UDP then TCP,
while LDAPS still checks the certificate against the name. Empty keeps the
system resolver; works through a relay agent too.
Fixed
- A remote-site relay installs in one command. An agent installed from
Settings → Agents → Watch a remote site was not a relay untilrelay: true
was added to agent.yaml by hand. Its token now makes it a relay (see above),
and the agent.yaml step is only a folded note for agents already installed.
The install scripts also accept--relayand--site=NAME(-Relay -Site NAMEon Windows) for a relay set on the machine itself.