Upgrading¶
What to do when upgrading NSClient++, newest release first. Most upgrades are in place — defaults are preserved and the default install is usually unaffected — but the items below change observable behaviour or want a configuration touch. Read the entries between the version you are on and the version you are moving to.
Items marked 🔒 are security-relevant; the Security notices page tracks those in one place. Full per-release detail lives in each GitHub release.
0.16.2¶
- 🔒 Sensitive settings values are redacted on read. The REST settings
read endpoints (
GET /api/v2/settings/...,/descriptions) andnscp settings --list/--shownow return***for keys registered sensitive, matching thediffendpoint. No action required; tooling that read such a value back now receives***. See Security notices. - 🔒 The built-in
legacyWEB role is no longer seeded on fresh installs, and any role granting thelegacypermission now triggers aSECURITYwarning at startup (and fromnscp web add-role/add-user). Existing installs are unaffected — the role stays in their config. Thelegacygrant unlocks the deprecated/query.pband/query/{name}query-dispatch endpoints, so a token with it can run any registered check/command; only grant it to trusted legacy systems. See Security notices.
0.16.1¶
- RHEL/SUSE: workaround
ca=arguments can be dropped —${ca-path}now resolves on its own (the explicit form still works). Packagers cross-building for another distribution should set-DCONFIG_CA_PATH=. check_logfileis unchanged unless you opt in tobookmark/max-lines. Adoptingbookmarkis a trade-off: a line is consumed when the check runs (not when its result is submitted) and positions are saved on clean shutdown, so a crash re-reports the backlog. Prefer an explicit bookmark name for a check whose filter changes often.- Settings URLs with a query string now send it. A server that relied on receiving the bare path will now see the parameters. The offline-boot cache file is migrated to the query-aware name once on first start.
${hostname}in an existing config changes meaning — it is now expanded everywhereexpand_hostnameis used (including submit clients’hostname), where it used to be left as literal text.run on startupis off by default so the default install is unaffected; if you enable it for thedefaultschedule usestartup windowto avoid a thundering herd.- Building the HTML docs on non-Windows now needs
-DNSCP_BUILD_DOCS_HTML=ON.
0.14.1¶
- Licence change: now distributed as Apache-2.0 OR GPL-2.0-only — a clarification/relicensing with no code or runtime behaviour change. Review it if your organisation tracks bundled-software licences.
- CheckNet perfdata is on by default. If you added perfdata manually, make sure you are not now emitting it twice.
- Boolean check arguments (
option=true/option=false) now work from the CLI as well as REST; bare-flag usage is unchanged. - 🔒
CheckSecurityis not loaded by default. Enable it before using its checks (nscp settings --active-module CheckSecurity). Windows-only checks return UNKNOWN elsewhere.
0.12.6¶
- 🔒 New permission policy layer, disabled by default. Existing installs
behave exactly as before until an operator sets
/settings/permissions/enabled = true. If you opt in: per-command rules apply to queries only (exec is gated by the separateallow execboolean, which defaultstrue); roll out withlog allows = truefirst to inventory real traffic. See Permissions. - 🔒 NRPEServer
client identity sourcedefaults tonone(previous behaviour). Set tocnonly after configuringverify_mode = peer-certand aca pathpinned to your private monitoring CA — the system trust store would accept any public cert’s CN. [/paths]overrides from an older install moved to[paths]inboot.ini(same section name, different file). No automatic migration — copy each entry across and delete the old section.- 🔒 WEB
disable admin user = trueis a new opt-in for status-only WEB exposure; existing installs keep their admin unchanged. - NRPEServer now survives a failed listener (logs an ERROR, leaves the module loaded) instead of failing the whole module. Add “NRPE listener failed” as a signal if you alerted on module-load failure.
insecure = trueon NRPEServer now logs at ERROR (louder, behaviour unchanged) — whitelist the message on agents intentionally run insecure.
0.12.5¶
[/paths]users: copy entries into[paths]inboot.ini; the settings-side section is no longer consulted. Default installs are unaffected.- Custom-plugin authors: implement the new optional
prepare_shutdowncallback if your module manages sockets or background threads —unloadis now a last-resort teardown. - 🔒 Monitoring-only WEB deployments:
disable admin user = trueunder[/settings/WEB/server]suppresses the built-in admin even on first boot; define your own read-only users (or a tightly scopedanonymousrole).
0.12.4¶
- 🔒 Icinga
check_nscp_apiworks again after upgrade with no config change. For a non-stock probe, set[/settings/WEB/server] legacy query auth user agentsto a substring of its User-Agent. For the strict 0.12.3 behaviour (no query-string credentials at all), set that key to empty.
0.12.3¶
- 🔒 Audit
allowed hostson every node — empty values now reject everything. - 🔒
check_nt(NSClientServer) now defaults tossl = true; setssl = falseexplicitly if your clients don’t speak TLS. - 🔒 Replace clients that call
/auth/tokenor/auth/logoutwith the/api/v2/loginflow, and any that pass?TOKEN=/?__TOKEN=in the query string with a header-based token. - Scheduler cron expressions on non-UTC hosts shift to local time — update
them or set
[/settings/scheduler] timezone = utc. - Review
check_service/check_process/check_filesfilters that relied on the old (now corrected) behaviours. - Restart and review the log for new “refused alias” / “rejected connection” warnings — configurations that were previously silently accepted.
0.11.33¶
- No configuration migration required (new
proxykeys are opt-in). Thecheck_filesfixes change a few corner cases:max-depth=0now scans the top directory (#730); missing paths return UNKNOWN (#613); junction loops are not double-counted (#605); empty results return OK instead of UNKNOWN (#717). Review alerting that relied on the old corner-case behaviour.