docs/server/quick-start/installation.md
KurrentDB can run as a single node or as a highly-available cluster. For the cluster deployment, you'd need three server nodes.
The installation procedure consists of the following steps:
| User | Password |
|---|---|
| admin | changeit |
| ops | changeit |
Some features of KurrentDB require a license key to access. When you purchase an enterprise subscription, the license key will be sent to your company's designated license administrator. Existing customers who would like to upgrade to a 24.10+ enterprise license should contact their Kurrent (formerly Event Store) account manager or contact us here. As an existing customer, you can also try the enterprise features by signing up for a free trial license key.
There are various ways to provide the license key to KurrentDB. For more information, refer to the configuration guide.
Configuration file:
Licensing:
LicenseKey: Yourkey
Environment variable:
KURRENTDB_LICENSING__LICENSE_KEY
For most features that require a license, KurrentDB will not start if the feature is enabled but the license key is not provided or is invalid.
Packages for KurrentDB are hosted on Cloudsmith, in the following repositories:
KurrentDB has pre-built packages available on Cloudsmith for RedHat or Debian-based distributions.
The name of the KurrentDB package is kurrentdb.
Debian packages can be found in the following repositories:
To install packages, you can quickly set up the repository automatically (recommended):
::: tabs @tab kurrent-latest
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-latest/setup.deb.sh' \
| sudo -E bash
@tab kurrent-lts
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-lts/setup.deb.sh' \
| sudo -E bash
@tab kurrent-preview
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-preview/setup.deb.sh' \
| sudo -E bash
:::
If you need to force a specific distribution, release/version, architecture, or component (if supported), you can also do that (e.g. if your system is compatible but not identical):
::: tabs @tab kurrent-latest
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-latest/setup.deb.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH component=COMPONENT bash
@tab kurrent-lts
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-lts/setup.deb.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH component=COMPONENT bash
@tab kurrent-preview
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-preview/setup.deb.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH component=COMPONENT bash
:::
Alternatively, you can find instructions to manually configure it yourself on Cloudsmith:
Install the package:
apt-get install kurrentdb=26.0.0
You can uninstall the package with:
apt-get remove kurrentdb
If you want to also remove any configuration files and user settings, use:
apt-get purge kurrentdb
RedHat packages can be found in the following repositories:
To install packages, you can quickly set up the repository automatically (recommended):
::: tabs @tab kurrent-latest
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-latest/setup.rpm.sh' \
| sudo -E bash
@tab kurrent-lts
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-lts/setup.rpm.sh' \
| sudo -E bash
@tab kurrent-preview
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-preview/setup.rpm.sh' \
| sudo -E bash
:::
If you need to force a specific distribution, release/version, or architecture, you can also do that (e.g. if your system is compatible but not identical):
::: tabs @tab kurrent-latest
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-latest/setup.rpm.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH bash
@tab kurrent-lts
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-lts/setup.rpm.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH bash
@tab kurrent-preview
curl -1sLf \
'https://packages.kurrent.io/public/kurrent-preview/setup.rpm.sh' \
| sudo -E distro=DISTRO codename=CODENAME arch=ARCH bash
:::
Alternatively, you can find instructions to manually configure it yourself on Cloudsmith:
Install the package:
yum install kurrentdb-26.0.0-1.x86_64
You can uninstall the package with:
yum remove kurrentdb
Once installed, the server is registered as a service. Therefore, you can start KurrentDB with:
systemctl start kurrentdb
When you install the KurrentDB package, the service doesn't start by default. This allows you to change the configuration located at /etc/kurrentdb/kurrentdb.conf and to prevent creating database and index files in the default location.
::: warning
We recommend that when using Linux you set the 'open file limit' to a high number. The precise value depends on your use case, but at least between 30,000 and 60,000.
:::
KurrentDB has NuGet packages available on Chocolatey.
You can install KurrentDB through Chocolatey:
choco install kurrentdb --version=26.0.0
KurrentDB can then be run with KurrentDB.exe:
KurrentDB.exe --config {your config file}
You can uninstall KurrentDB through Chocolatey with:
choco uninstall kurrentdb
KurrentDB can be run as a windows service. The following commands are for example. Consult the sc.exe documentation for details.
Create the service:
sc.exe create "KurrentDB" `
start= delayed-auto `
binpath= "C:\ProgramData\chocolatey\lib\kurrentdb\kurrentdb-26.0.0-windows.x64\KurrentDB.exe --config=c:\path\to\kurrentdb-config.yaml"
Configure the restart policy:
sc.exe failure "KurrentDB" `
reset= 0 `
actions= restart/5000/restart/5000/restart/5000
Start the service:
sc.exe start "KurrentDB"
Logs will still be written to the usual log file location. By default on windows this is the logs directory within the directory that contains KurrentDB.exe.
::: warning In this version the the service restart policy does not guarantee that the service is running. If running as a Windows Service, we recommend configuring the Windows Task Scheduler to start the service regularly (say, every 10 seconds), which will do nothing if the service is already running.
This is for two reasons, both of which we intend to address in a future version:
Important: it is not recommended to run KurrentDB directly using Task Scheduler. By default Task Scheduler runs processes with low priority which will significantly impact performance. :::
You can run KurrentDB in a Docker container as a single node, using insecure mode. It is useful in most cases to try out the product and for local development purposes.
It's also possible to run a three-node cluster with or without SSL using Docker Compose. Such a setup is closer to what you'd run in production.
KurrentDB Docker images are hosted in the following registries:
Pull the container with:
::: tabs @tab kurrent-latest
docker pull docker.kurrent.io/kurrent-latest/kurrentdb:latest
@tab kurrent-lts
docker pull docker.kurrent.io/kurrent-lts/kurrentdb:latest
:::
The following command will start the KurrentDB node using the default HTTP port, without security. You can then connect to it using one of the clients and the kurrentdb://localhost:2113?tls=false connection string. You can also access the Admin UI by opening http://localhost:2113 in your browser.
::: tabs @tab kurrent-latest
docker run --name kurrentdb-node -it -p 2113:2113 \
docker.kurrent.io/kurrent-latest/kurrentdb:latest --insecure --run-projections=All \
--enable-atom-pub-over-http
@tab kurrent-lts
docker run --name kurrentdb-node -it -p 2113:2113 \
docker.kurrent.io/kurrent-lts/kurrentdb:latest --insecure --run-projections=All \
--enable-atom-pub-over-http
:::
Then, you'd be able to connect to KurrentDB with gRPC clients. Also, the Stream Browser will work in the Admin UI.
In order to sustainably keep the data, we also recommend mapping the database and index volumes.
You can also run a single-node instance or a three-node secure cluster locally using Docker Compose.
You can use Docker Compose to run KurrentDB in the same setup as the docker run command mentioned before.
Create a file docker-compose.yaml with the following content:
Run the instance:
docker compose up
The command above would run KurrentDB as a single node without SSL. You also get AtomPub protocol enabled, so you can get the stream browser to work in the Admin UI.
With Docker Compose, you can also run a three-node cluster with security enabled. This kind of setup is something you'd expect to use in production.
Create file docker-compose.yaml with following content:
Quite a few settings are shared between the nodes and we use the env file to avoid repeating those settings.
So, add the vars.env file to the same location:
Containers will use the shared volume using the local ./certs directory for certificates. However, if you
let Docker create the directory on startup, the container won't be able to get write access to it.
Therefore, you should create the certs directory manually. You only need to do it once.
mkdir certs
Now you are ready to start the cluster.
docker compose up
Watching the log messages, you will see that after some time, the elections process completes. Then you're able to connect to each
node using the Admin UI. Nodes should be accessible on the loopback address (127.0.0.1 or localhost) over
HTTP, using ports specified below:
| Node | HTTP port |
|---|---|
| node1 | 2111 |
| node2 | 2112 |
| node3 | 2113 |
You have to tell your client to use secure connection.
| Protocol | Connection string |
|---|---|
| gRPC | kurrentdb://localhost:2111,localhost:2112,localhost:2113?tls=true&tlsVerifyCert=false |
As you might've noticed, the connection string has a setting to disable the certificate validation (tlsVerifyCert=false). It would prevent the invalid certificate error since the cluster uses a private, auto-generated CA.
However, we do not recommend using this setting in production. Instead, you can either add the CA certificate to the trusted root CA store or instruct your application to use such a certificate. See the security section for detailed instructions.
KurrentDB can be deployed and managed using the Operator.
You can also build KurrentDB from source. Before doing that, you need to install the .NET 10 SDK. KurrentDB packages have the .NET Runtime embedded, so you don't need to install anything except the KurrentDB package.
Depending on how your KurrentDB instance is configured, some features might not work. Below are some features that are unavailable due to the specified options.
| Feature | Options impact |
|---|---|
| Connection without SSL or TLS | KurrentDB is secure by default. Your clients need to establish a secure connection, unless you use the Insecure option. |
| Authentication and ACLs | When using the Insecure option for the server, all security is disabled. The Users menu item is also disabled in the Admin UI. |
| Projections | Running projections is disabled by default and the Projections menu item is disabled in the Admin UI. You need to enable projections explicitly by using the RunProjections option. |
| AtomPub protocol | The AtomPub protocol is disabled by default. If you use this protocol, you have to explicitly enable it by using the EnableAtomPubOverHttp option. |
| Stream browser | The stream browser feature in Admin UI depends on the AtomPub protocol and is greyed out by default. You need to enable AtomPub (previous line) to make the stream browser work. |