# Server Configuration
We manage the following parameters for you in Typesense Cloud. So this section only applies if you're self-hosting Typesense.
# Using Command Line Arguments
Command line arguments can be passed to the server as
| ||false||Path to the configuration file. If you use this argument, you can define all of the other command line arguments in a configuration file. See the "Configuring Typesense" section for more details.|
| ||true||A bootstrap admin API key that allows all operations. Be sure to create additional keys with specific ACLs using the key management API. |
NOTE: Don't expose this admin API key to your browser JS client: use the key management API to create search-only or scoped API keys.
| ||true||Path to the directory where data will be stored on disk.|
| ||false||Address to which Typesense API service binds. Default: |
| ||false||Port on which Typesense API service listens. Default: |
| ||false||Internal IP address to which Typesense peering service binds. If this parameter is not specified, Typesense will attempt to use the first available internal IP.|
| ||false||Port on which Typesense peering service listens. Default: |
| ||false||Internal subnet that Typesense should use for peering, e.g. |
| ||false||Path to file containing comma separated string of all nodes in the cluster.|
| ||false||By default, Typesense logs to stdout and stderr. To enable logging to a file, provide a path to a logging directory.|
| ||false||Path to the SSL certificate file. You must also define |
| ||false||Path to the SSL certificate key file. You must also define |
| ||false||Frequency of automatic reloading of SSL certs from disk. Default: |
| ||false||Comma separated list of domains which are allowed for CORS. E.g. |
| ||false||Number of threads used for handling concurrent requests. Default: |
| ||false||Number of collections that are loaded in parallel during start up. Default: |
| ||false||Number of documents per collection that are indexed in parallel during start up. Default: |
| ||false||Reject writes when used disk space exceeds this percentage. Default: |
| ||false||Reject writes when used memory usage exceeds this percentage. Default: |
| ||false||Reads are rejected if the updates lag behind this threshold. Default: |
| ||false||Writes are rejected if the updates lag behind this threshold. Default: |
| ||false||Frequency of replication log snapshots. Default: |
NOTE: Frequent snapshotting helps in faster recovery from a cold start. However, if this value is too low for a large dataset, repeated snapshotting can actually slow down follower recovery.
| ||false||Requests that take over this amount of time (in milliseconds) are logged. Default: |
You can also dynamically enable slow requests logging via the
| ||false||Starts Typesense in a mode that does not read writes from the Raft log. This is useful when the server has crashed due to some recent bad writes that you want to skip over temporarily.|
# Using a Configuration File
As an alternative to command line arguments, you can also configure Typesense server through a configuration file or via environment variables.
Command line arguments are given the highest priority, while environment variables are given the least priority.
Our Linux DEB/RPM packages install the configuration file at
The configuration file uses a simple INI format:
# Using Environment Variables
If you wish to use environment variables, you can do that too. The environment variables map to the command line arguments documented above: just use CAPS and underscores instead of hyphens, and prefix the variable names with
For example, use
TYPESENSE_DATA_DIR for the