NodeBB Config Security Profile: Isolating Database Strings from Git

Running a community board requires clear operational boundaries between your public repository commits and local configuration values. While most administrative parameters are adjusted through the Administrator Control Panel (ACP), NodeBB relies on a central configuration file stored directly in the forum root. Because this file contains core datastore credentials, session encryption keys, and server bindings, accidentally pushing it to a public tracking repository exposes your entire infrastructure. Maintaining sound forum admin security starts with understanding what parameters live in this file and how to structure your deployment.
At-a-Glance Specification: The config.json Profile
The config.json - NodeBB Documentation defines the root-level configuration architecture. Before modifying any values, administrators must remember that every adjustment within config.json demands a complete restart of the NodeBB application before changes take effect. The file establishes identity, network listeners, and storage engines using the following foundational directives:
- Location: Directly inside the NodeBB root installation directory.
- Management Split: Core server-level keys reside in JSON format, while daily board settings belong in the ACP.
- Default Port: NodeBB binds to port
4567unless an explicit value or array is configured. - Binding Scope: Listens on
0.0.0.0(all interfaces) by default via thebind_addressparameter. - Process Reloads: Any configuration update necessitates restarting the forum software.
Core Database Targets: Connection Strings and Authentication Blocks
The primary hazard of exposing your root configuration lies in the database blocks. The top-level database key names the active datastore, typically selecting redis, mongo, or postgres. Beneath this directive, NodeBB expects a dedicated configuration block structured specifically for the chosen database engine.
These connection objects house sensitive access credentials that should never appear in version control commits:
hostandportcoordinates pointing to the backing database daemon.databasenaming the internal schema or store index.passwordcontaining the plaintext database authentication key.usernamespecifying the user identity (used for MongoDB setups).urihousing the complete connection string (MongoDB setups only).
In addition to the primary datastore, administrators can supply a session_store object. This structure mirrors the redis, mongo, or postgres parameters, enabling an installation to isolate user sessions on an entirely separate database instance. Committing these blocks allows anyone viewing the public repository to harvest operational endpoints and authentication secrets.
Session Integrity Keys and URL Mapping
Alongside database connection properties, config.json records the secret value. This parameter is a raw text string leveraged by NodeBB to compute cryptographic hashes for user cookie sessions. If this secret leaks into a public repository, session integrity is compromised. Conversely, altering the string invalidates all active forum sessions immediately, forcing every registered member to authenticate again. The default session identifier string can also be customized under the sessionKey directive, which defaults to express.sid.
The root file also holds the primary url key, defining the full web-accessible URL pointing to the community. When a custom domain is not yet linked, an IP address such as http://127.0.0.1:4567 serves as the address. For boards mounted beneath a path, such as http://127.0.0.1:4567/forum, modifying the subfolder URL requires running ./nodebb build to recompile assets properly.
Operational Isolation and Cluster Flags
High-traffic communities operating across multi-server topologies use specific runtime controls documented in the NodeBB configuration guide. When running across multiple servers, the following directives adjust how nodes execute tasks:
isCluster: Must be set totruewhen deploying multiple distinct machines that each execute a single NodeBB process.jobsDisabled: Setting this flag totruedisables recurring scheduled routines, including daily digest emails and notification pruning, ensuring only one backend worker handles background maintenance across a multi-instance cluster.acpPluginInstallDisabled: Switching this boolean totrueprevents administrators from installing plugins inside the web interface, restricting plugin setup exclusively to the command line via./nodebb installor directnpmcommands.
Process memory limits can be enforced directly by supplying max-memory, which caps process memory consumption in megabytes. For logging, the default relative destination logs/output.log is governed by logFile; NodeBB automatically rotates this file when it reaches 1 Megabyte, retaining a maximum of 3 archived files.
Socket and Network Bindings
Deployments utilizing reverse proxies must configure network directives carefully. By default, trust_proxy is set to false. It should only be switched to true when NodeBB operates behind a trusted proxy configured to strip or overwrite untrusted X-Forwarded-For headers. Otherwise, forwarded IP information remains untrusted. For WebSocket operations, the socket.io block defines connection parameters, defaulting to ["polling", "websocket"] for transports and falling back to the primary url for origin validation unless explicit origins are declared.
Admins evaluating their broader hosting stack can consult our NodeBB at-a-glance real-time forum software profile to align these configuration parameters with their production deployment strategies.
Sources
config.json - NodeBB Documentation
Published October 30, 2026. No affiliate links on this page. Facts come from the sources linked above; check them for updates.