diff --git a/migration-context/link-placeholders/configuration-link-placeholders.md b/migration-context/link-placeholders/configuration-link-placeholders.md new file mode 100644 index 00000000..113520bd --- /dev/null +++ b/migration-context/link-placeholders/configuration-link-placeholders.md @@ -0,0 +1,61 @@ +# Link Placeholders for Configuration + +## reference_versioned_docs/version-v4/configuration/options.md + +- Line (http.mtls section): `[mTLS Authentication](TODO:reference_versioned_docs/version-v4/security/mtls-authentication.md)` + - Context: Referencing full mTLS authentication reference from HTTP mTLS config sub-section + - Target should be: `../security/mtls-authentication.md` + +- Line (http.mtls.certificateVerification): `[Certificate Verification](TODO:reference_versioned_docs/version-v4/security/certificate-verification.md)` + - Context: Referencing certificate revocation checking (CRL/OCSP) documentation + - Target should be: `../security/certificate-verification.md` + +- Line (tls section): `[TLS](TODO:reference_versioned_docs/version-v4/http/tls.md)` + - Context: Linking to TLS configuration reference in the HTTP section + - Target should be: `../http/tls.md` + +- Line (tls section): `[Certificate Management](TODO:reference_versioned_docs/version-v4/security/certificate-management.md)` + - Context: Linking to certificate management operations + - Target should be: `../security/certificate-management.md` + +- Line (mqtt section): `[MQTT Configuration](TODO:reference_versioned_docs/version-v4/mqtt/configuration.md)` + - Context: Referencing full MQTT configuration reference + - Target should be: `../mqtt/configuration.md` + +- Line (logging section): `[logger API](TODO:reference_versioned_docs/version-v4/logging/api.md)` + - Context: `logging.external` section referencing the logger API for components + - Target should be: `../logging/api.md` + +- Line (replication section): `[Replication](TODO:reference_versioned_docs/version-v4/replication/overview.md)` + - Context: Referencing replication overview from replication config section + - Target should be: `../replication/overview.md` + +- Line (replication section): `[Clustering](TODO:reference_versioned_docs/version-v4/replication/clustering.md)` + - Context: Referencing clustering reference from replication config section + - Target should be: `../replication/clustering.md` + +- Line (replication.shard): `[Sharding](TODO:reference_versioned_docs/version-v4/replication/sharding.md)` + - Context: Referencing sharding documentation for `replication.shard` config option + - Target should be: `../replication/sharding.md` + +- Line (storage.compactOnStart): `[Compaction](TODO:reference_versioned_docs/version-v4/database/compaction.md)` + - Context: Referencing compaction documentation from `compactOnStart` storage option + - Target should be: `../database/compaction.md` + +- Line (localStudio section): `[Studio](TODO:reference_versioned_docs/version-v4/studio/overview.md)` + - Context: Referencing Studio overview from `localStudio` config section + - Target should be: `../studio/overview.md` + +- Line (Components section): `[Components](TODO:reference_versioned_docs/version-v4/components/overview.md)` + - Context: Referencing components overview from component config section + - Target should be: `../components/overview.md` + +## reference_versioned_docs/version-v4/configuration/operations.md + +- Line (set_configuration description): `[restart](TODO:reference_versioned_docs/version-v4/operations-api/operations.md#restart)` + - Context: Linking to the restart system operation needed after set_configuration + - Target should be: `../operations-api/operations.md#restart` + +- Line (set_configuration description): `[restart_service](TODO:reference_versioned_docs/version-v4/operations-api/operations.md#restart-service)` + - Context: Linking to the restart_service operation needed after set_configuration + - Target should be: `../operations-api/operations.md#restart-service` diff --git a/reference_versioned_docs/version-v4/configuration/operations.md b/reference_versioned_docs/version-v4/configuration/operations.md new file mode 100644 index 00000000..23361381 --- /dev/null +++ b/reference_versioned_docs/version-v4/configuration/operations.md @@ -0,0 +1,141 @@ +--- +title: Configuration Operations +--- + + + +# Configuration Operations + +Operations API endpoints for reading and modifying Harper configuration. + +_All operations in this section are restricted to `super_user` roles._ + +For the full list of configurable options, see [Configuration Options](./options.md). + +--- + +## Set Configuration + +Modifies one or more Harper configuration parameters. **Requires a [restart](TODO:reference_versioned_docs/version-v4/operations-api/operations.md#restart 'restart operation') or [restart_service](TODO:reference_versioned_docs/version-v4/operations-api/operations.md#restart-service 'restart_service operation') to take effect.** + +`operation` _(required)_ — must be `set_configuration` + +Additional properties correspond to configuration keys in underscore-separated format (e.g. `logging_level` for `logging.level`, `clustering_enabled` for `clustering.enabled`). + +### Body + +```json +{ + "operation": "set_configuration", + "logging_level": "trace", + "clustering_enabled": true +} +``` + +### Response: 200 + +```json +{ + "message": "Configuration successfully set. You must restart HarperDB for new config settings to take effect." +} +``` + +--- + +## Get Configuration + +Returns the current Harper configuration. + +`operation` _(required)_ — must be `get_configuration` + +### Body + +```json +{ + "operation": "get_configuration" +} +``` + +### Response: 200 + +```json +{ + "http": { + "compressionThreshold": 1200, + "cors": false, + "corsAccessList": [null], + "keepAliveTimeout": 30000, + "port": 9926, + "securePort": null, + "timeout": 120000 + }, + "threads": 11, + "authentication": { + "cacheTTL": 30000, + "enableSessions": true, + "operationTokenTimeout": "1d", + "refreshTokenTimeout": "30d" + }, + "analytics": { + "aggregatePeriod": 60 + }, + "replication": { + "hostname": "node1", + "databases": "*", + "routes": null, + "url": "wss://127.0.0.1:9925" + }, + "componentsRoot": "/Users/hdb/components", + "localStudio": { + "enabled": false + }, + "logging": { + "auditAuthEvents": { + "logFailed": false, + "logSuccessful": false + }, + "auditLog": true, + "auditRetention": "3d", + "file": true, + "level": "error", + "root": "/Users/hdb/log", + "rotation": { + "enabled": false, + "compress": false, + "interval": null, + "maxSize": null, + "path": "/Users/hdb/log" + }, + "stdStreams": false + }, + "mqtt": { + "network": { + "port": 1883, + "securePort": 8883 + }, + "webSocket": true, + "requireAuthentication": true + }, + "operationsApi": { + "network": { + "cors": true, + "corsAccessList": ["*"], + "domainSocket": "/Users/hdb/operations-server", + "port": 9925, + "securePort": null + } + }, + "rootPath": "/Users/hdb", + "storage": { + "writeAsync": false, + "caching": true, + "compression": false, + "noReadAhead": true, + "path": "/Users/hdb/database", + "prefetchWrites": true + }, + "tls": { + "privateKey": "/Users/hdb/keys/privateKey.pem" + } +} +``` diff --git a/reference_versioned_docs/version-v4/configuration/options.md b/reference_versioned_docs/version-v4/configuration/options.md new file mode 100644 index 00000000..687e4cf2 --- /dev/null +++ b/reference_versioned_docs/version-v4/configuration/options.md @@ -0,0 +1,319 @@ +--- +title: Configuration Options +--- + + + + + + + + +# Configuration Options + +Quick reference for all `harperdb-config.yaml` top-level sections. + +For how to apply configuration (YAML file, environment variables, CLI, Operations API), see [Configuration Overview](./overview.md). + +--- + +## `http` + +Configures the Harper component server (HTTP, REST API, WebSocket). See [HTTP Configuration](../http/configuration.md) for full details. + +```yaml +http: + port: 9926 + securePort: 4443 + cors: true + timeout: 120000 + mtls: false + logging: + level: info + path: ~/hdb/log/http.log +``` + +- `sessionAffinity` — Route requests from same client to same worker thread (`ip` or header name) +- `compressionThreshold` — Response size threshold for Brotli compression; _Default_: `1200` (bytes) +- `cors` — Enable CORS; _Default_: `true` +- `corsAccessList` — Allowed domains for CORS requests +- `corsAccessControlAllowHeaders` — `Access-Control-Allow-Headers` value for OPTIONS preflight +- `headersTimeout` — Max wait for complete HTTP headers (ms); _Default_: `60000` +- `maxHeaderSize` — Max HTTP header size (bytes); _Default_: `16394` +- `requestQueueLimit` — Max estimated request queue time (ms) before 503; _Default_: `20000` +- `keepAliveTimeout` — Inactivity before closing keep-alive connection (ms); _Default_: `30000` +- `port` — HTTP port; _Default_: `9926` +- `securePort` — HTTPS port; requires [TLS configuration](../http/tls.md); _Default_: `null` +- `http2` — Enable HTTP/2; _Default_: `false` (Added in: v4.5.0) +- `timeout` — Request timeout (ms); _Default_: `120000` +- `mtls` — Enable [mTLS authentication](../security/mtls-authentication.md) for incoming connections; sub-options: `user`, `required`, `certificateVerification` (see [Certificate Verification](../security/certificate-verification.md)) +- `logging` — HTTP request logging (disabled by default, Added in: v4.6.0); sub-options: `level`, `path`, `timing`, `headers`, `id`. See [Logging Configuration](../logging/configuration.md) + +--- + +## `threads` + +Worker thread pool configuration. + +```yaml +threads: + count: 11 + maxHeapMemory: 300 +``` + +- `count` — Number of worker threads; _Default_: CPU count minus one +- `maxHeapMemory` — Heap limit per thread (MB) +- `heapSnapshotNearLimit` — Take heap snapshot when approaching limit +- `debug` — Enable debugging; sub-options: `port`, `startingPort`, `host`, `waitForDebugger` + +--- + +## `authentication` + +Authentication and session configuration. Added in: v4.1.0; `enableSessions` added in v4.2.0. See [Authentication Configuration](../security/configuration.md). + +```yaml +authentication: + authorizeLocal: true + cacheTTL: 30000 + enableSessions: true + operationTokenTimeout: 1d + refreshTokenTimeout: 30d +``` + +- `authorizeLocal` — Auto-authorize loopback requests as superuser; _Default_: `true` +- `cacheTTL` — Session cache duration (ms); _Default_: `30000` +- `enableSessions` — Cookie-based sessions; _Default_: `true` +- `operationTokenTimeout` — Access token lifetime; _Default_: `1d` +- `refreshTokenTimeout` — Refresh token lifetime; _Default_: `1d` +- `logging` — Authentication event logging (Added in: v4.6.0); sub-options: `path`, `level`, `tag`, `stdStreams`. See [Logging Configuration](../logging/configuration.md) + +--- + +## `operationsApi` + +Harper Operations API endpoint configuration. See [Operations API Overview](../operations-api/overview.md). + +```yaml +operationsApi: + network: + port: 9925 + cors: true + tls: + certificate: ~/hdb/keys/certificate.pem + privateKey: ~/hdb/keys/privateKey.pem +``` + +- `network.cors` / `network.corsAccessList` — CORS settings +- `network.domainSocket` — Unix socket path for CLI communication; _Default_: `/hdb/operations-server` +- `network.headersTimeout` / `network.keepAliveTimeout` / `network.timeout` — Timeout settings (ms) +- `network.port` — Operations API port; _Default_: `9925` +- `network.securePort` — HTTPS port; _Default_: `null` +- `tls` — TLS override for the Operations API; sub-options: `certificate`, `certificateAuthority`, `privateKey`. See [`tls`](#tls) + +--- + +## `tls` + +Global TLS configuration for HTTPS and TLS sockets (used by HTTP and MQTT). Can be a single object or an array for SNI. See [TLS](../http/tls.md) and [Certificate Management](../security/certificate-management.md). + +```yaml +tls: + certificate: ~/hdb/keys/certificate.pem + certificateAuthority: ~/hdb/keys/ca.pem + privateKey: ~/hdb/keys/privateKey.pem +``` + +- `certificate` — Path to TLS certificate; _Default_: `/keys/certificate.pem` +- `certificateAuthority` — Path to CA file; _Default_: `/keys/ca.pem` +- `privateKey` — Path to private key; _Default_: `/keys/privateKey.pem` +- `ciphers` — Allowed TLS cipher suites + +--- + +## `mqtt` + +MQTT protocol configuration. Added in: v4.2.0. See [MQTT Configuration](../mqtt/configuration.md). + +```yaml +mqtt: + network: + port: 1883 + securePort: 8883 + webSocket: true + requireAuthentication: true +``` + +- `network.port` — Insecure MQTT port; _Default_: `1883` +- `network.securePort` — Secure MQTT port; _Default_: `8883` +- `network.mtls` — Enable [mTLS](../security/mtls-authentication.md) for MQTT connections; sub-options: `user`, `required`, `certificateAuthority`, `certificateVerification` +- `webSocket` — Enable MQTT over WebSocket on HTTP port; _Default_: `true` +- `requireAuthentication` — Require credentials or mTLS; _Default_: `true` +- `logging` — MQTT event logging (Added in: v4.6.0); sub-options: `path`, `level`, `tag`, `stdStreams`. See [Logging Configuration](../logging/configuration.md) + +--- + +## `logging` + +Application logging. Added in: v4.1.0; per-component logging added in v4.6.0. See [Logging Configuration](../logging/configuration.md). + +```yaml +logging: + level: warn + root: ~/hdb/log + stdStreams: false + auditLog: false + rotation: + interval: 1D + maxSize: 100M +``` + +- `level` — Log verbosity (`trace` → `debug` → `info` → `warn` → `error` → `fatal` → `notify`); _Default_: `warn` +- `file` — Write to file; _Default_: `true` +- `root` — Log directory; _Default_: `/log` +- `path` — Explicit log file path (overrides `root`) +- `stdStreams` — Write to stdout/stderr; _Default_: `false` +- `console` — Include `console.*` output; _Default_: `true` +- `auditLog` — Enable table transaction audit logging; _Default_: `false` +- `auditRetention` — Audit log retention duration; _Default_: `3d` +- `external` — Logging for components using the logger API; sub-options: `level`, `path` +- `rotation.enabled` / `rotation.compress` / `rotation.interval` / `rotation.maxSize` / `rotation.path` — Log file rotation (activates when `interval` or `maxSize` is set) +- `auditAuthEvents.logFailed` / `auditAuthEvents.logSuccessful` — Log failed/successful authentication events; _Default_: `false` + +--- + +## `replication` + +Native WebSocket-based replication (Plexus). Added in: v4.4.0. See [Replication](../replication/overview.md) and [Clustering](../replication/clustering.md). + +```yaml +replication: + hostname: server-one + url: wss://server-one:9933 + databases: '*' + routes: + - wss://server-two:9933 +``` + +- `hostname` — This instance's hostname within the cluster +- `url` — WebSocket URL peers use to connect to this instance +- `databases` — Databases to replicate; _Default_: `"*"` (all). Each entry supports `name` and `sharded` +- `routes` — Peer nodes; URL strings or `{hostname, port, startTime, revokedCertificates}` objects +- `port` — Replication port +- `securePort` — Secure replication port; _Default_: `9933` (changed from `9925` in v4.5.0) +- `enableRootCAs` — Verify against Node.js Mozilla CA store; _Default_: `true` +- `blobTimeout` — Blob transfer timeout (ms); _Default_: `120000` +- `failOver` — Failover to alternate node if peer unreachable; _Default_: `true` +- `shard` — Shard ID for traffic routing; see [Sharding](../replication/sharding.md) +- `mtls.certificateVerification` — Certificate revocation checking (CRL/OCSP) for replication connections; see [Certificate Verification](../security/certificate-verification.md) +- `logging` — Replication event logging; sub-options: `path`, `level`, `tag`, `stdStreams`. See [Logging Configuration](../logging/configuration.md) + +--- + +## `storage` + +Database storage configuration. See [Database Overview](../database/overview.md) and [Compaction](../database/compaction.md). + +```yaml +storage: + path: ~/hdb/database + caching: true + compression: true + compactOnStart: false +``` + +- `writeAsync` — Disable disk sync for higher throughput (**disables durability guarantees**); _Default_: `false` +- `caching` — In-memory record caching; _Default_: `true` +- `compression` — LZ4 record compression; _Default_: `true` (enabled by default since v4.3.0). Sub-options: `dictionary`, `threshold` +- `compactOnStart` — Compact all non-system databases on startup; _Default_: `false` (Added in: v4.3.0) +- `compactOnStartKeepBackup` — Retain compaction backups; _Default_: `false` +- `maxTransactionQueueTime` — Max write queue time before 503; _Default_: `45s` +- `noReadAhead` — Advise OS against read-ahead; _Default_: `false` +- `prefetchWrites` — Prefetch before write transactions; _Default_: `true` +- `path` — Database files directory; _Default_: `/database` +- `blobPaths` — Blob storage directory or directories; _Default_: `/blobs` (Added in: v4.5.0) +- `pageSize` — Database page size (bytes); _Default_: OS default +- `reclamation.threshold` / `reclamation.interval` / `reclamation.evictionFactor` — Background storage reclamation settings (Added in: v4.5.0) + +--- + +## `databases` + +Per-database and per-table file path overrides. Must be set before the database/table is created. See [Database Overview](../database/overview.md). + +```yaml +databases: + myDatabase: + path: /data/myDatabase + auditPath: /data/myDatabase-audit + tables: + myTable: + path: /data/myTable +``` + +- `.path` — Database files directory +- `.auditPath` — Audit log directory for this database +- `.tables..path` — Table files directory + +--- + +## `analytics` + +Analytics aggregation configuration. See [Analytics Overview](../analytics/overview.md). + +```yaml +analytics: + aggregatePeriod: 60 + replicate: false +``` + +- `aggregatePeriod` — Aggregation interval (seconds); _Default_: `60` (Added in: v4.5.0) +- `replicate` — Replicate analytics data across cluster; _Default_: `false` + +--- + +## `localStudio` + +Local Harper Studio GUI. See [Studio](../studio/overview.md). + +```yaml +localStudio: + enabled: true +``` + +- `enabled` — Enable local Studio at `http://localhost:`; _Default_: `false` + +--- + +## `componentsRoot` + +Path to local component files. Added in: v4.2.0 (previously `customFunctionsRoot`). See [Components](../components/overview.md). + +```yaml +componentsRoot: ~/hdb/components +``` + +--- + +## `rootPath` + +Root directory for all Harper persistent data, config, logs, and components. + +```yaml +rootPath: /var/lib/harper +``` + +--- + +## Component Configuration + +Installed components are configured directly at the root of `harperdb-config.yaml` using the component name as the key — not nested under a `components:` section. See [Components](../components/overview.md). + +```yaml +my-component: + package: 'HarperDB-Add-Ons/my-component' + port: 4321 +``` + +- `.package` — NPM package name, GitHub repo (`user/repo`), or local path +- `.port` — Port for the component; _Default_: value of `http.port` diff --git a/reference_versioned_docs/version-v4/configuration/overview.md b/reference_versioned_docs/version-v4/configuration/overview.md new file mode 100644 index 00000000..747e681c --- /dev/null +++ b/reference_versioned_docs/version-v4/configuration/overview.md @@ -0,0 +1,209 @@ +--- +title: Configuration Overview +--- + + + + +# Configuration + +Harper is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory. By default the root directory is a folder named `hdb` in the home directory of the current user. + +Some configuration values are pre-populated in the config file on install, regardless of whether they are used. + +For a complete reference of all available configuration options, see [Configuration Options](./options.md). + +--- + +## The Configuration File + +To change a configuration value, edit `harperdb-config.yaml` and save. **Harper must be restarted for changes to take effect.** + +Configuration keys use camelCase (e.g. `operationsApi`). Nested keys use dot notation conceptually (e.g. `operationsApi.network.port`). + +--- + +## Setting Configuration Values + +All configuration values can be set through four mechanisms: + +### 1. YAML File (direct edit) + +Edit `harperdb-config.yaml` directly: + +```yaml +http: + port: 9926 +logging: + level: warn +``` + +### 2. Environment Variables + +Map YAML keys to `SCREAMING_SNAKE_CASE`. Use underscores for nesting. Keys are case-insensitive. + +Examples: + +- `http.port` → `HTTP_PORT=9926` +- `logging.rotation.enabled` → `LOGGING_ROTATION_ENABLED=false` +- `operationsApi.network.port` → `OPERATIONSAPI_NETWORK_PORT=9925` + +```bash +HTTP_PORT=9926 harperdb +``` + +> **Note:** Component configuration cannot be set via environment variables or CLI arguments. + +### 3. CLI Arguments + +Same naming convention as environment variables, prefixed with `--`: + +```bash +harperdb --HTTP_PORT 9926 --LOGGING_LEVEL warn +``` + +### 4. Operations API + +Use `set_configuration` with underscore-separated key paths: + +```json +{ + "operation": "set_configuration", + "http_port": 9926, + "logging_level": "warn" +} +``` + +See [Configuration Operations](./operations.md) for the full `set_configuration` and `get_configuration` API reference. + +--- + +## Custom Config File Path + +To specify a custom config file location at install time, use the `HDB_CONFIG` variable: + +```bash +# Use a custom config file path +HDB_CONFIG=/path/to/custom-config.yaml harperdb + +# Install over an existing config +HDB_CONFIG=/existing/rootpath/harperdb-config.yaml harperdb +``` + +--- + +## Environment Variable-Based Configuration + +Added in: v4.7.2 + +Harper provides two special environment variables for managing configuration across deployments: `HARPER_DEFAULT_CONFIG` and `HARPER_SET_CONFIG`. Both accept JSON-formatted configuration that mirrors the structure of `harperdb-config.yaml`. + +```bash +export HARPER_DEFAULT_CONFIG='{"http":{"port":8080},"logging":{"level":"info"}}' +export HARPER_SET_CONFIG='{"authentication":{"enabled":true}}' +``` + +### HARPER_DEFAULT_CONFIG + +Provides default configuration values while respecting user modifications. Ideal for supplying sensible defaults without preventing administrators from customizing their instances. + +**At installation time:** + +- Overrides template default values +- Respects values set by `HARPER_SET_CONFIG` +- Respects values from existing config files (when using `HDB_CONFIG`) + +**At runtime:** + +- Only updates values it originally set +- Detects and respects manual user edits to the config file +- When a key is removed from the variable, the original value is restored + +**Example:** + +```bash +export HARPER_DEFAULT_CONFIG='{"http":{"port":8080},"logging":{"level":"info"}}' +harperdb + +# If an administrator manually changes the port to 9000, Harper will +# detect this edit and respect it on subsequent restarts. + +# If http.port is removed from HARPER_DEFAULT_CONFIG later, +# the port reverts to the original template default (9926). +``` + +### HARPER_SET_CONFIG + +Forces configuration values that cannot be overridden by user edits. Designed for security policies, compliance requirements, or critical operational settings. + +**At runtime:** + +- Always overrides all other configuration sources +- Takes precedence over user edits, file values, and `HARPER_DEFAULT_CONFIG` +- When a key is removed from the variable, it is deleted from the config (not restored) + +**Example:** + +```bash +export HARPER_SET_CONFIG='{"authentication":{"enabled":true},"logging":{"level":"error","stdStreams":true}}' +harperdb + +# Any change to these values in harperdb-config.yaml will be +# overridden on the next restart. +``` + +### Combining Both Variables + +```bash +# Provide sensible defaults (can be overridden by admins) +export HARPER_DEFAULT_CONFIG='{"http":{"port":8080,"cors":true},"logging":{"level":"info"}}' + +# Enforce critical settings (cannot be changed) +export HARPER_SET_CONFIG='{"authentication":{"enabled":true}}' +``` + +### Configuration Precedence + +From highest to lowest: + +1. **`HARPER_SET_CONFIG`** — Always wins +2. **User manual edits** — Detected via drift detection +3. **`HARPER_DEFAULT_CONFIG`** — Applied if no user edits detected +4. **File defaults** — Original template values + +### State Tracking + +Harper maintains a state file at `{rootPath}/backup/.harper-config-state.json` to track the source of each configuration value. This enables: + +- **Drift detection**: Identifying when users manually edit values set by `HARPER_DEFAULT_CONFIG` +- **Restoration**: Restoring original values when keys are removed from `HARPER_DEFAULT_CONFIG` +- **Conflict resolution**: Determining which source should take precedence + +### Format Reference + +The JSON structure mirrors the YAML config file: + +**YAML:** + +```yaml +http: + port: 8080 + cors: true +logging: + level: info + rotation: + enabled: true +``` + +**Environment variable (JSON):** + +```json +{ "http": { "port": 8080, "cors": true }, "logging": { "level": "info", "rotation": { "enabled": true } } } +``` + +### Important Notes + +- Both variables must contain valid JSON matching the structure of `harperdb-config.yaml` +- Invalid values are caught by Harper's configuration validator at startup +- Changes to these variables require a Harper restart to take effect +- The state file is per-instance (stored in the root path) diff --git a/reference_versioned_sidebars/version-v4-sidebars.json b/reference_versioned_sidebars/version-v4-sidebars.json index 4e6aac99..1fb38856 100644 --- a/reference_versioned_sidebars/version-v4-sidebars.json +++ b/reference_versioned_sidebars/version-v4-sidebars.json @@ -33,6 +33,29 @@ } ] }, + { + "type": "category", + "label": "Configuration", + "collapsible": false, + "className": "learn-category-header", + "items": [ + { + "type": "doc", + "id": "configuration/overview", + "label": "Overview" + }, + { + "type": "doc", + "id": "configuration/options", + "label": "Options" + }, + { + "type": "doc", + "id": "configuration/operations", + "label": "Operations" + } + ] + }, { "type": "category", "label": "Environment Variables",