Browse configuration
The config console verb opens a read-only, interactive browser for the Director’s configured resources — over the authenticated console wire, with no SSH or file access to the server. It’s part of NGBackup‘s management plane: an operator (or the Desktop Console) can inspect what a remote Director is running without logging into the host.
Using it
Section titled “Using it”Type config at the console prompt to enter the browser. It is a multi-turn session (like run, restore, and status); . cancels at any point.
*configConfigured resource kinds: 1: Director (1) 2: Job (4) 3: Client (1) 4: Storage (1) 5: Pool (1) 6: Schedule (2) 7: Content (3) 8: Catalog (1) 9: Messages (1)Select a kind (1-9), or `.` to cancel:config> 2The defined Job resources are: 0: Back 1: BackupEtc 2: BackupBig 3: RestoreFiles 4: AccJobconfig> 1Picking a resource prints its directives and resolved references — the same output as show job=BackupEtc — and then offers an edit prompt:
Edit BackupEtc? Enter <Directive> = <value>, or 0 to go back:Entering <Directive> = <value> applies the change through the same validated pipeline as config set (secure session required — over plain TCP the edit is refused while browsing keeps working), shows the result plus the re-rendered resource, and re-prompts so edits can be chained. 0 (or back/Enter) returns to the resource list; . exits at any point.
Only resource kinds that actually have a configured resource appear in the menu, each with its count.
One-shot form
Section titled “One-shot form”config <kind>=NAME is a non-interactive alias for show <kind>=NAME (and bare config in a script context behaves like show all), so the same data is scriptable:
*config job=BackupEtcEditing: config set
Section titled “Editing: config set”config set <kind>=<NAME> <Directive>=<value> changes one directive of one resource through the structured pipeline: the on-disk config is parsed, the directive applied, the whole file re-serialized, validated by re-parsing, written atomically (temp file → fsync → rename, preserving permissions), and the Director reloaded. If the reload fails, the previous config is restored automatically and the error reported.
*config set client=localhost-fd FileRetention=45 days2000 OK config set: client `localhost-fd` FileRetention = 45 days (backup: backup-dir.conf.bak-cfgset-20260609-193041; note: comments in the file are not preserved by structured edits)2000 OK reload (live snapshot + schedules + retention + TLS + catalog index hot-swapped)Remote Storage Daemon edits: config set sd=NAME
Section titled “Remote Storage Daemon edits: config set sd=NAME”Prefixing sd=<storage-name> targets a remote SD’s configuration over the authenticated wire: the Director fetches the SD’s raw config, applies the directive, re-serializes, validates, and pushes it back; the SD re-validates and persists atomically with a timestamped backup. SD edits are persist-only — the reply says so explicitly, and the change takes effect after .restart storage=NAME (a live device swap mid-job would be unsafe).
*config set sd=File1 device=FileDev1 MaximumConcurrentJobs=42000 OK config set: sd=File1 device `FileDev1` MaximumConcurrentJobs = 4 — validated + persisted on the SD … NOT applied live: run `.restart storage=File1` to apply.Sealed @secret: references in the SD’s file are preserved verbatim; the same rules apply (unknown directives list the allowed table, Name renames are refused, multi-valued directives such as an Autochanger’s Device list are replaced as a whole), plus both daemons write audit lines.
Remote File Daemon edits: config set fd=NAME
Section titled “Remote File Daemon edits: config set fd=NAME”Prefixing fd=<client-name> targets a remote FD’s (client daemon’s) configuration the same way: the Director fetches the FD’s raw config over the authenticated wire, applies a text-level edit (comments and the operator’s layout survive verbatim; sealed @secret: references stay opaque), validates the result against the FD grammar, and pushes it back; the FD persists atomically with a timestamped backup. Like SD edits, FD edits are persist-only — apply with .restart client=NAME.
*config set fd=web01-fd filedaemon=web01-fd MaximumConcurrentJobs=82000 OK config set fd=web01-fd filedaemon=web01-fd MaximumConcurrentJobs=<set> — persisted on the FD; applies on the next FD restart (`.restart client=web01-fd`)A FileDaemon {} block without a Name directive (single-daemon configs) matches whatever name you pass. Renames and @include layouts are refused, as everywhere.
FileSet include lists: IncludeFile with =, +=, -=
Section titled “FileSet include lists: IncludeFile with =, +=, -=”The FileSet (content=) Include File list — a nested block other directives can’t reach — has dedicated list grammar:
*config set content=WebSet IncludeFile=/srv/www,/etc/nginx # replace the whole list*config set content=WebSet IncludeFile+=/var/log/nginx # append (duplicate-safe)*config set content=WebSet IncludeFile-=/etc/nginx # removeEdits land in the fileset’s first Include { … } block; its Options { … } sub-blocks and other directives are preserved untouched. +=/-= apply to IncludeFile only — any other directive refuses them with a typed error.
Multi-valued directives: whole-list replacement
Section titled “Multi-valued directives: whole-list replacement”Setting a multi-valued directive (Device, Storage, ACL families, TlsAllowedCn, Metrics, AuditEvents, PkiMasterKey, PluginOptions, Base, …) replaces the entire list. The value is comma-separated; quote an element to keep a comma inside it:
*config set sd=File1 autochanger=Library1 Device=FileDev1,FileDev2,FileDev3*config set console=ops-console ClientAcl="lab client",ws01-fdA single element yields a one-element list — a second config set never appends. An empty value is refused: explicit list clearing is not supported via config set; edit the file directly. Compound multi-valued rows keep their own grammar and remain file-only: a Schedule’s Run lines and Messages destination rows (Mail = target = classes) are refused with a compound multi-valued directive error.
Relationship to the management plane
Section titled “Relationship to the management plane”config reads the live, parsed configuration the Director is currently running. For the machine-readable form the Desktop Console consumes, see the .dirjson / .sdjson dot-commands; for applying a new configuration remotely, see .reconfigure on the management plane page.