Server Installation
Kahuna is distributed in two supported ways:
- Docker image:
kahunakv/kahuna:latest - .NET global tool:
Kahuna.Server, which installs thekahuna-servercommand
No repository files are required to run a server.
Docker
For the quickest container-based setup, run the published Kahuna image with HTTP, HTTPS, cleartext gRPC, and a named Docker volume for persistent data:
docker run --rm -p 8081:8081 -p 8082:8082 -p 8083:8083 -v kahuna-data:/data --name kahuna kahunakv/kahuna:latest
Use http://127.0.0.1:8081 for REST, https://127.0.0.1:8082 for HTTPS REST/gRPC, or http://127.0.0.1:8083 for cleartext gRPC from local clients. When connecting with kahuna-cli to the local HTTPS endpoint, allow the development certificate:
kahuna-cli -c "https://127.0.0.1:8082" --insecure
For local cleartext gRPC, use:
kahuna-cli -c "http://127.0.0.1:8083"
Stop the container with Ctrl+C. Because the command uses --rm, the container is removed after it exits, but the kahuna-data Docker volume remains available for the next run.
.NET Global Tool
Install the server tool from NuGet:
dotnet tool install --global Kahuna.Server
Update an existing installation with:
dotnet tool update --global Kahuna.Server
Start a standalone server:
kahuna-server \
--http-ports 8081 \
--grpc-cleartext-ports 8083 \
--storage rocksdb \
--wal-storage rocksdb \
--storage-path ~/.kahuna/data \
--wal-path ~/.kahuna/wal \
--storage-revision v1 \
--wal-revision v1
The server listens on http://127.0.0.1:8081 for REST and http://127.0.0.1:8083 for cleartext gRPC. Connect local gRPC clients with:
kahuna-cli -c "http://127.0.0.1:8083"
Press Ctrl+C in the terminal to stop the server.
Running a Cluster
Run production or staging clusters with the same kahuna-server tool or the Docker image on each node. Each node needs its own identity, storage paths, Raft endpoint, TLS configuration, and --initial-cluster seed list.
The important server flags are documented in Server Configuration, especially:
--raft-nodename--raft-nodeid--raft-host--raft-port--initial-cluster--join-existing--storage-path--wal-path--grpc-cleartext-ports--https-certificate
For local single-node development, prefer the standalone Docker or NuGet examples above.