Configuration: Core

settings.json variables change your server's behavior in various ways.

RavenDB reads settings.json only during startup.
When you edit the file, restart the server to apply changes.

ServerUrl

The URLs which the server should listen to.

  • Type: string
  • Default: http://localhost:8080
  • Scope: Server-wide only

Indicates the IP addresses or host addresses with ports and protocols that the server should listen on for requests. Use 0.0.0.0 to indicate that the server should listen for requests on any IP address or hostname using the specified port and protocol. The protocol (http:// or https://) must be included with each URL.

Valid IP addresses can be localhost, domains, IPv4 or IPv6. Ports can be specified after the address using ':' as a separator, or if the default is being used: port 80 for http protocol, and port 443 for HTTPS protocol.

Safe By Default

Setting to a non loopback address using the HTTP protocol will expose the server to the network and requires security measurements (using HTTPS, certificates). When set, RavenDB will prevent a startup unless UnsecuredAccessAllowed is set to PublicNetwork manually.

Examples

  • The server will listen to incoming requests in all the network devices available on the machine on the specific port

http://0.0.0.0:8080
  • The server will listen to loopback device only:

http://localhost:8080
  • Server using IPV6 loopback only address

http://[0:0:0:0:0:0:0:1]:8080

ServerUrl.Tcp

The TCP URLs which the server should listen to.

  • Type: string
  • Default: null
  • Scope: Server-wide only

Indicates the IP addresses or host addresses with ports and protocols that the server should listen on for incoming TCP connections, are used for inter-node communication. Valid IP addresses can be localhost, domains, IPv4 or IPv6 addresses. Ports must be specified after the address using ':' as separator or just as number without address.

If no URL is set, the ServerUrl will be used along with random port If just a number is set, the ServerUrl will be used with the specified number as port If the address and port are set, RavenDB will listen to the address and port specified

Safe By Default

Same security consideration as in ServerUrl option should be applied (see above)

Examples

  • The server will listen to TCP connections in all the network devices available on the machine

tcp://0.0.0.0:38888

PublicServerUrl

The URL under which server is publicly available.

  • Type: string
  • Default: null (local Server URL)
  • Scope: Server-wide only

Set the URL to be accessible by clients and other nodes, regardless of which IP is used to access the server internally. This is useful when using a secured connection via https URL, or behind a proxy server.

Examples

  • Use LAN proxy server address 10.0.0.1

http://10.0.0.1:80
  • Use a specific https domain

https://example.com:8080

Note

In the above example, example.com is the external domain/ip provided by the ISP, and ServerUrl must be specified when the server is behind a firewall, proxy, or router

PublicServerUrl.Tcp

The TCP URL under which server is publicly listened to.

  • Type: string
  • Default: null
  • Scope: Server-wide only

Set the public TCP address of the server. Used for inter-node communication and access from behind a firewall, proxy, etc.

Examples

tcp://example.com:38888

ServerUrl.Cluster

When this configuration option is used to expose a server's internal IP address, other servers will try to communicate with it through this IP first. If the communication fails, they will failover to its public IP/URL.

Using internal IPs (rather than the public network, requiring DNS resolutions etc.) can accelerate internal cluster communications.

Internal cluster communications can be particularly useful when the cluster is sharded, because of the amount of internal communication needed: for a shard to satisfy its client requests, it often has to communicate with all other shards. Performing these communications internally can provide a better user experience, and save much time and money over time.

  • Type: UriSetting
  • Default: null
  • Scope: Server-wide only

Examples

// must include http or https
http://192.168.10.9

// can include port number
https://example.com:8080

ExternalIp

External IP address.

  • Type: string
  • Default: null
  • Scope: Server-wide only

RunInMemory

Set whether the database should run purely in memory.

  • Type: bool
  • Default: null
  • Scope: Server-wide or per database

When running in memory, RavenDB does not write to the disk. If the server is restarted, all data will be lost. This is mostly useful for testing.

DataDir

Path to the data directory of RavenDB

  • Type: string
  • Default: Databases/{name}
  • Scope: Server-wide or per database

Relative paths will be based from the application base directory (where the Raven.Server executable is located).

Examples

/home/user/databases

Setup.Mode

Determines what kind of security was chosen during setup, or not to use setup on startup at all (None).

  • Type: enum
  • Default: None
  • Scope: Server-wide only

Possible values:

  • None: No setup process on RavenDB server startup
  • Initial: Start the wizard process to setup RavenDB on the first server startup
  • LetsEncrypt: Let RavenDB know that it needs to take care of refreshing certificates on the fly via LE
  • Secured: This value will be set internally by RavenDB
  • Unsecured: Run the server in unsecured mode

AcmeUrl

The URLs which the server should contact when requesting certificates from using the ACME protocol.

  • Type: string
  • Default: https://acme-v01.api.letsencrypt.org/directory
  • Scope: Server-wide only

ThrowIfAnyIndexCannotBeOpened

Indicates if we should throw an exception if any index could not be opened.

  • Type: bool
  • Default: false
  • Scope: Server-wide or per database

Features.Availability

This settings.json variable determines whether to run RavenDB with its standard features set, or add to a set of experimental features.
Some features, like ones recently released, are considered experimental. They are disabled by default, you can enable them by setting Features.Availability to Experimental.

  • Type: enum
  • Default: Stable
  • Scope: Server-wide only

Possible values:

  • Stable: Standard set of features
  • Experimental: Enables experimental features

We'd be grateful for any feedback you send us regarding experimental features.