From 92e5d379b9a17c5b63f5531000bf695ffa261017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Lachowski?= Date: Fri, 8 May 2026 14:51:29 +0200 Subject: [PATCH] RDBTC-221 Migrate technical guides: RDBTC-101 RavenDB Deployment Guide - Docker Compose Cluster --- guides/assets/docker-compose1.webp | Bin 0 -> 42830 bytes guides/assets/docker-compose2.webp | Bin 0 -> 22084 bytes guides/assets/docker-compose3.webp | Bin 0 -> 46732 bytes guides/assets/docker-compose4.webp | Bin 0 -> 40712 bytes guides/assets/docker-compose5.webp | Bin 0 -> 14056 bytes guides/assets/docker-compose6.webp | Bin 0 -> 11246 bytes guides/assets/docker-compose7.webp | Bin 0 -> 8882 bytes ...eployment-guide-docker-compose-cluster.mdx | 1067 ++++++++++++++++- 8 files changed, 1061 insertions(+), 6 deletions(-) create mode 100644 guides/assets/docker-compose1.webp create mode 100644 guides/assets/docker-compose2.webp create mode 100644 guides/assets/docker-compose3.webp create mode 100644 guides/assets/docker-compose4.webp create mode 100644 guides/assets/docker-compose5.webp create mode 100644 guides/assets/docker-compose6.webp create mode 100644 guides/assets/docker-compose7.webp diff --git a/guides/assets/docker-compose1.webp b/guides/assets/docker-compose1.webp new file mode 100644 index 0000000000000000000000000000000000000000..0cb2d5ff9bf39ce5f75cb62e08fd98c02872ad34 GIT binary patch literal 42830 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�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 h^S0$>OxKSAN9!)e9+q3hM)9Ab{{fTY)U*Hq literal 0 HcmV?d00001 diff --git a/guides/assets/docker-compose2.webp b/guides/assets/docker-compose2.webp new file mode 100644 index 0000000000000000000000000000000000000000..96fd4e71a12bb0053ac7bd5064a84f8cbb9c462a GIT binary patch literal 22084 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 literal 0 HcmV?d00001 diff --git a/guides/assets/docker-compose3.webp b/guides/assets/docker-compose3.webp new file mode 100644 index 0000000000000000000000000000000000000000..556924d4f0de8bd7a64113ddb8236af98fa145f8 GIT binary patch literal 46732 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 literal 0 HcmV?d00001 diff --git a/guides/assets/docker-compose6.webp b/guides/assets/docker-compose6.webp new file mode 100644 index 0000000000000000000000000000000000000000..e73260f1236c443d41a5db69323c7a7f3b51378f GIT binary patch literal 11246 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 AumAu6 literal 0 HcmV?d00001 diff --git a/guides/ravendb-deployment-guide-docker-compose-cluster.mdx b/guides/ravendb-deployment-guide-docker-compose-cluster.mdx index 984beaf13f..be3ebf962c 100644 --- a/guides/ravendb-deployment-guide-docker-compose-cluster.mdx +++ b/guides/ravendb-deployment-guide-docker-compose-cluster.mdx @@ -1,9 +1,1064 @@ --- -title: "RavenDB Deployment Guide – Docker Compose Cluster" -tags: [deployment, getting-started, docker, containers] -description: "Read about RavenDB Deployment Guide – Docker Compose Cluster on the RavenDB.net news section" -externalUrl: "https://ravendb.net/articles/ravendb-deployment-guide-docker-compose-cluster" -publishedAt: 2025-03-10 +title: "RavenDB Deployment Guide: Docker Compose Cluster" +tags: [deployment, getting-started, docker, containers, clusters, security] image: "https://ravendb.net/wp-content/uploads/2025/03/docker-ravendb-integration-article-cover.jpg" -proficiencyLevel: "Beginner" +description: "Deploy a 3-node RavenDB cluster with Docker Compose across three security levels: unsecured HTTP for local development, TLS with self-signed certificates for internal environments, and production-grade Let's Encrypt automation." +publishedAt: 2025-03-10 +see_also: + - title: "RavenDB Docker Images on Docker Hub" + link: "https://hub.docker.com/r/ravendb/ravendb" + source: "external" + - title: "RavenDB Configuration Options" + link: "https://ravendb.net/docs/article-page/latest/csharp/server/configuration/configuration-options" + source: "external" +author: "Omer Ratsaby" +proficiencyLevel: "Intermediate" +--- + +import Admonition from '@theme/Admonition'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CodeBlock from '@theme/CodeBlock'; +import LanguageSwitcher from "@site/src/components/LanguageSwitcher"; +import LanguageContent from "@site/src/components/LanguageContent"; +import Image from "@theme/IdealImage"; + +## Introduction + +Databases are traditionally stateful applications, requiring persistent storage and consistent uptime to ensure data integrity. On the other hand, containers are ephemeral by design, meaning they can be created and destroyed dynamically. + +Despite this contrast, containerizing databases have become increasingly popular. +So why use containers for a database? The answer is **Simplicity**, **Isolation**, and **Portability.** + +RavenDB is well-suited for containerized environments due to its built-in clustering capabilities and support for multi-node deployments. The official RavenDB Docker images enable rapid deployment and scaling of a fully functional NoSQL document database within Docker Compose. +By containerizing RavenDB, we achieve portability, scalability, and simplified management while maintaining data persistence through properly configured storage solutions. + +This guide provides a comprehensive approach to deploying a RavenDB cluster using Docker Compose, covering three distinct configurations: + +* **Unsecured Deployment** – A basic setup without encryption. For local development and testing. + +* **Secured Deployment with Self-Signed Certificates** – A configuration that enables encryption using self-generated certificates, ensuring secure communication within the cluster. + +* **Secured Deployment with Let's Encrypt** – A *production-ready* setup that automates SSL certificate management using Let's Encrypt, providing robust security with minimal manual intervention. + +Each section includes detailed instructions, configuration files, and best practices to facilitate a seamless deployment. +By the end of this guide, you will have a fully functional RavenDB cluster tailored to your security and operational requirements. + +RavenDB provides official Docker images that can be pulled from Docker Hub. These images support both Linux and Windows containers, ensuring broad compatibility across different systems. +The images are available in two repositories: + +[ravendb/ravendb](https://hub.docker.com/r/ravendb/ravendb) – contains images of stable releases. +[ravendb/ravendb-nightly](https://hub.docker.com/r/ravendb/ravendb-nightly) – contains images of nightly development builds. + +In this tutorial, we will use the multi-platform image ravendb/ravendb:latest. + +## Unsecured Deployment + +The unsecured RavenDB cluster setup provides a straightforward deployment suitable for local development and testing environments. +In this configuration, nodes communicate over HTTP without encryption, eliminating the complexity of managing SSL certificates. +While this setup simplifies the initial deployment and facilitates debugging, it is not recommended for production use due to the lack of security measures. + +## Setting Up the Environment + +Before deploying the cluster, we need to prepare the environment by creating directories for each RavenDB node and setting the correct ownership: + +```bash +mkdir -p ~/ravendb/data/node1 ~/ravendb/data/node2 ~/ravendb/data/node3 +sudo chown -R 999:999 ~/ravendb/ +``` + +The chown command changes the ownership of all files and directories under ~/ravendb/ to UID 999 and GID 999. +999 commonly used because some Docker containers (including the RavenDB container) run as a non-root user with UID 999 by default. +This is necessary because running containers as root is not recommended for security reasons. Changing ownership ensures that the RavenDB process inside the container has proper access without requiring root privileges. + +### Setup + +With the environment prepared, we can start building our docker-compose file: + +#### 1. Container Name and Image + +Each node is assigned a unique container name, ensuring easier identification when managing containers: + +```yaml +container_name: ravendb-node1 + image: ravendb/ravendb:latest + + container_name: ravendb-node2 + image: ravendb/ravendb:latest + + container_name: ravendb-node3 + image: ravendb/ravendb:latest +``` + +#### 2. Port Mapping + +Each node exposes two ports: + + +```yaml +ports: + - 8080:8080 + - 38888:38888 +``` + +* 8080 (HTTP Port) – Used for the RavenDB Web Studio and API. +* 38888 (TCP Port) – Used for internal cluster communication between nodes. + +For the second and third nodes, the ports are incremented to avoid conflicts: + +```yaml +ravendb-node2: + ports: + - 8081:8080 + - 38889:38888 + +ravendb-node3: + ports: + - 8082:8080 + - 38890:38888 + +``` + +#### 3. Data Persistence (Volumes) + +Each node maps a dedicated data directory on the host machine to the container's default data location: + +```yaml +- /home/${USER}/ravendb/data/node1:/var/lib/ravendb/data +``` + +* Containers are ephemeral, meaning they can be stopped, removed, or restarted anytime. Databases, however, are stateful applications that require data to persist beyond the lifecycle of a single container instance. + + By binding a host directory to the container's data directory, we ensure that the data remains +intact even if the container is recreated. + Without this, all stored data would be lost whenever a container restarts. +#### 4. Environment Variables + + Each node is configured using environment variables that define its behavior: + +```yaml +environment: + - RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=http://0.0.0.0:8080 + - RAVEN_PublicServerUrl=http://${HOST_IP}:8080" + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://${HOST_IP}:38888 + - RAVEN_License='{Put your license here}' + +``` + +* RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork - Allows unsecured access to the RavenDB server, making it accessible over a public network. + +* RAVEN_Setup_Mode=None - Disables the initial setup wizard, enabling immediate use of the cluster. + +* RAVEN_License_Eula_Accepted=true - Confirms acceptance of the RavenDB license agreement (required for automated deployments). + +* RAVEN_ServerUrl and RAVEN_PublicServerUrl - Define the node's internal and external HTTP URLs. + +* RAVEN_ServerUrl_Tcp and RAVEN_PublicServerUrl_Tcp - Define the internal and external TCP URLs for inter-node communication. + +* RAVEN_License - Specifies the RavenDB license string. + + +These environment variables allow for precise control over the RavenDB server's network settings, security configurations, and deployment behavior, making it adaptable for various deployment scenarios. +For more detailed guidance, refer to the RavenDB documentation: [https://ravendb.net/docs/article-page/latest/csharp/server/configuration/configuration-options](https://ravendb.net/docs/article-page/latest/csharp/server/configuration/configuration-options) + +The final version of docker-compose.yml should look like this: + +```yaml +services: + ravendb-node1: + container_name: ravendb-node1 + image: ravendb/ravendb:latest + ports: + - 8080:8080 + - 38888:38888 + volumes: + - /home/${USER}/ravendb/data/node1:/var/lib/ravendb/data + environment: + - RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=http://0.0.0.0:8080 + - RAVEN_PublicServerUrl=http://${HOST_IP}:8080 + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://${HOST_IP}:38888 + - RAVEN_License='{Put your license here}' + + ravendb-node2: + container_name: ravendb-node2 + image: ravendb/ravendb:latest + ports: + - 8081:8080 + - 38889:38888 + volumes: + - /home/${USER}/ravendb/data/node2:/var/lib/ravendb/data + environment: + - RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=http://0.0.0.0:8080 + - RAVEN_PublicServerUrl=http://${HOST_IP}:8081 + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://${HOST_IP}:38889 + - RAVEN_License='{Put your license here}' + + ravendb-node3: + container_name: ravendb-node3 + image: ravendb/ravendb:latest + ports: + - 8082:8080 + - 38890:38888 + volumes: + - /home/${USER}/ravendb/data/node3:/var/lib/ravendb/data + environment: + - RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=http://0.0.0.0:8080 + - RAVEN_PublicServerUrl=http://${HOST_IP}:8082 + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://${HOST_IP}:38890 + - RAVEN_License='{Put your license here}' + +``` + +## Starting RavenDB + +First, we need to determine the host machine's IP address, which the nodes will use for external access: + +```bash +export HOST_IP=$(hostname -I | awk '{print $1}') +``` + +With the environment set up, we can now start the containers using Docker Compose: + +```bash +docker compose -f ~/ravendb/docker-compose.yml up -d --force-recreate --wait +``` + +Once running, we should see three containers, one for each RavenDB node: + +```text +$ docker compose ls +NAME STATUS CONFIG FILES +ravendb running(3) ~/ravendb/docker-compose.yml + +``` + +## Forming the Cluster + +We have three standalone RavenDB nodes that are not yet connected as a cluster at this stage. Setting up clustering is a simple process: + +1. Access RavenDB Studio: Open a browser and navigate to the first node, which will act as the cluster leader: `http://${HOST_IP}:8080`, and go to **Manage Server** \> **Cluster**. + +2. Initialize the Cluster: Click the **Bootstrap Cluster** button to initialize the cluster. + +3. Add Nodes: Use **Add Node to Cluster** to add: `http://${HOST_IP}:8081` and `http://${HOST_IP}:8082`. + +Once both nodes are added, the RavenDB cluster is fully operational. + +RavenDB Studio Cluster view showing three active nodes A (Leader), B (Member), and C (Member) connected over unsecured HTTP on ports 8080, 8081, and 8082 + +--- + +### Secured Deployment with Self-Signed Certificates + +The secured RavenDB cluster with self-signed certificates setup enhances security by encrypting communication between nodes and clients. +Instead of running in an unsecured mode, this configuration ensures that all data transmitted is protected via TLS (Transport Layer Security) using self-generated certificates. +This setup is ideal for testing secure environments and internal deployments where using a trusted Certificate Authority (CA) is not required. + +While this approach secures communication, it requires manual certificate generation and distribution among nodes. This section will guide you through creating self-signed certificates, configuring RavenDB to use them, and deploying a secure multi-node cluster with Docker Compose. + +### Setting Up the Environment + +Before deploying the cluster, we must prepare the environment by creating directories for each RavenDB node. +This time, we will also create a dedicated security directory to store all necessary files for establishing a secure connection. + +```bash +mkdir -p ~/ravendb/security +mkdir -p ~/ravendb/data/node1 ~/ravendb/data/node2 ~/ravendb/data/node3 +``` + +### Generating Self-Signed Certificates for a Secure RavenDB Deployment + +To enable secure communication within our RavenDB cluster, we must generate and configure TLS certificates. +Since we are not using a publicly trusted Certificate Authority (CA), we will create our own CA, issue a certificate for the cluster, and configure the nodes to trust it. +This process ensures: + +* Encrypted communication between clients and nodes. +* Authentication of nodes within the cluster. +* Proper certificate validation using a self-managed CA. + +First, navigate to the **security directory**, where we will store all necessary files for secure communication: + +```bash +cd ~/ravendb/security +``` + +#### 1. Creating a Certificate Authority (CA) + +First, we generate a private key for our CA, which will be used to sign certificates for the RavenDB cluster. +It will generate a 4096-bit RSA private key (ca.key), the root authority for signing certificates. + +```bash +sudo openssl genrsa -out ca.key 4096 +``` + +Next, we create a self-signed CA certificate valid for 10 years (3650 days): +in this example, I will specify the Common name for the CA as RavenDB Local CA +and we will get the ca.crt, which will be will be the trusted certificate for signing cluster certificates: + +```bash +sudo openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=RavenDB Local CA" +``` + +#### 2. Defining Certificate Configuration for the Cluster + +We need to define a custom OpenSSL configuration file to set up the cluster certificate properties: + +```bash +cat < ~/ravendb/security/openssl.cnf +[ req ] +default_bits = 4096 +prompt = no +default_md = sha256 +distinguished_name = req_distinguished_name +req_extensions = req_ext + +[ req_distinguished_name ] +CN = ravendb.local + +[ req_ext ] +keyUsage = critical, digitalSignature, keyEncipherment +extendedKeyUsage = serverAuth, clientAuth +subjectAltName = DNS:node1.local, DNS:node2.local, DNS:node3.local +EOF +``` + +This configuration ensures that: + +* The certificate is 4096-bit RSA. +* The Common Name (CN) is set to ravendb.local. +* The keyUsage allows both digital signatures and encryption. +* The extendedKeyUsage allows the certificate to be used for server authentication and client authentication. +* The subjectAltName (SAN) includes all RavenDB nodes (node1.local, node2.local, node3.local), ensuring they are trusted within the cluster. + +#### 3. Generating the Cluster Certificate + +Now, we generate a private key and a Certificate Signing Request (CSR) for the cluster. +First, create the private key (my-cluster.key) for the cluster certificate: + +```bash +sudo openssl genrsa -out my-cluster.key 4096 +``` + +Then, generate a **CSR** (my-cluster.csr) using the OpenSSL configuration file (openssl.cnf): + +```bash +sudo openssl req -new -key my-cluster.key -out my-cluster.csr -config openssl.cnf +``` + +This **CSR** contains all the necessary certificate details but has **not yet been signed**. + +#### 4. Signing the Cluster Certificate with Our CA + +Now, we use our self-signed CA to sign the CSR, issuing a 10-year certificate for the cluster: + +```bash +sudo openssl x509 -req -in my-cluster.csr -CA ~/ravendb/security/ca.crt -CAkey ~/ravendb/security/ca.key -CAcreateserial -out my-cluster.crt -days 3650 -sha256 -extfile openssl.cnf -extensions req_ext +``` + +* -CA ~/ravendb/security/ca.crt: Uses our self-signed CA to issue the certificate.. +* -CAkey ~/ravendb/security/ca.key: Sign it with the CA's private key. +* -extfile openssl.cnf -extensions req_ext: Ensures the certificate includes SAN entries and correct usage policies + +At this point, we have a valid certificate (my-cluster.crt) that RavenDB nodes will use. + +#### 5. Converting to PFX Format + +RavenDB requires certificates in PKCS#12 (PFX) format, so we package the certificate and key: + +```bash +sudo openssl pkcs12 -export -out my-cluster.pfx -inkey my-cluster.key -in my-cluster.crt -certfile ~/ravendb/security/ca.crt -name "RavenDB Cluster Cert" +``` + +This PFX bundle includes: + +* The private key (my-cluster.key). +* The signed certificate (my-cluster.crt). +* The CA certificate (ca.crt) to establish trust. + +To ensure proper read access while preventing unauthorized modifications, update the file permissions: + +```bash +sudo chmod 644 ~/ravendb/security/my-cluster.pfx +``` + +#### 6. Registering the CA Certificate + +To ensure the system trusts our CA, we add it to the OS's trusted certificate store: + +```bash +sudo cp ~/ravendb/security/ca.crt +/usr/local/share/ca-certificates/ravendb-ca.crt + +sudo update-ca-certificates +``` + +This allows all nodes and clients to recognize and trust **any certificates issued by this CA**. + +#### Final Steps Before Deployment + +With the certificates in place, we need to set the correct ownership to ensure RavenDB has the necessary permissions: + +```bash +sudo chown -R 999:999 ~/ravendb/ +``` + +At this stage, we have: + +✅ A self-signed CA to issue trusted certificates. +✅ A signed cluster certificate with the correct properties. +✅ A PKCS#12 (PFX) file, ready for RavenDB. +✅ The CA registered on the system, ensuring trust. + +Now, we can configure RavenDB to use this certificate for a fully secured deployment. + +### Setup + +With the environment and certificates prepared, we can define the Docker Compose configuration for our secured RavenDB cluster. + +#### 1. Container Name and Image + +Similar to the unsecured setup, we assign a unique container name to each node for easier management: + +```yaml +container_name: ravendb-node1 + image: ravendb/ravendb:latest + + container_name: ravendb-node2 + image: ravendb/ravendb:latest + + container_name: ravendb-node3 + image: ravendb/ravendb:latest +``` + +#### 2. Port Mapping + +Unlike the unsecured setup, where we exposed the **HTTP port (8080)**, we now expose the **HTTPS port (443)** for secure access: + + +```yaml +ports: + - "443:443" + - "38888:38888" +``` + +#### 3. Data Persistence (Volumes) + +Similar to the unsecured setup, we mount data directories for each node. However, we now also mount the security directory, which contains the TLS certificates: + +```yaml +volumes: + - /home/${USER}/ravendb/data/node1:/var/lib/ravendb/data + - /home/${USER}/ravendb/security:/security +``` + +#### 4. Environment Variables + +In contrast to the unsecured setup, we make key modifications to support secure connections: + +```yaml +environment: + - RAVEN_PublicServerUrl=https://node1.local + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://node1.local:38888 + - RAVEN_Security_Certificate_Path=/security/my-cluster.pfx + - RAVEN_License='{Put your license here}' +``` + +* RAVEN_PublicServerUrl=https://node1.local - Now points to an **HTTPS** address instead of an **HTTP** one, ensuring encrypted communication. + +* RAVEN_Security_Certificate_Path=/security/my-cluster.pfx - Specifies the **TLS** **certificate file** (my-cluster.pfx) required for secure authentication. + +Each additional node follows a similar configuration, changing only the hostname (node2.local, node3.local). + +#### 5. Networking Configuration + +We use Docker Compose networks to enable hostname-based communication between RavenDB nodes. This ensures that each container can resolve the other nodes by hostname, avoiding reliance on IP addresses. + +```yaml +networks: + default: + aliases: + - node1.local +``` + +Each node is assigned a unique network alias, allowing containers to communicate via hostnames instead of dynamic IPs. This is essential because container IPs may change upon restarts, whereas hostnames remain consistent. + +The final version of docker-compose.yml should look like this: + +```yaml +services: + ravendb-node1: + container_name: ravendb-node1 + image: ravendb/ravendb:latest + volumes: + - /home/${USER}/ravendb/data/node1:/var/lib/ravendb/data + - /home/${USER}/ravendb/security:/security + ports: + - "443:443" + - "38888:38888" + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=https://0.0.0.0 + - RAVEN_PublicServerUrl=https://node1.local + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://node1.local:38888 + - RAVEN_Security_Certificate_Path=/security/my-cluster.pfx + - RAVEN_License='{Put your license here}' + networks: + default: + aliases: + - node1.local + + ravendb-node2: + container_name: ravendb-node2 + image: ravendb/ravendb:latest + volumes: + - /home/${USER}/ravendb/data/node2:/var/lib/ravendb/data + - /home/${USER}/ravendb/security:/security + ports: + - "444:443" + - "38889:38888" + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=https://0.0.0.0 + - RAVEN_PublicServerUrl=https://node2.local + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://node2.local:38888 + - RAVEN_Security_Certificate_Path=/security/my-cluster.pfx + - RAVEN_License='{Put your license here}' + networks: + default: + aliases: + - node2.local + + ravendb-node3: + container_name: ravendb-node3 + image: ravendb/ravendb:latest + volumes: + - /home/${USER}/ravendb/data/node3:/var/lib/ravendb/data + - /home/${USER}/ravendb/security:/security + ports: + - "445:443" + - "38890:38888" + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + - RAVEN_ServerUrl=https://0.0.0.0 + - RAVEN_PublicServerUrl=https://node3.local + - RAVEN_ServerUrl_Tcp=tcp://0.0.0.0:38888 + - RAVEN_PublicServerUrl_Tcp=tcp://node3.local:38888 + - RAVEN_Security_Certificate_Path=/security/my-cluster.pfx + - RAVEN_License='{Put your license here}' + networks: + default: + aliases: + - node3.local + +``` + +### Starting RavenDB + +Before starting our secured RavenDB nodes, we need to take one additional step. +Since this is a local deployment, there is no built-in DNS server to resolve hostnames like node1.local, node2.local, and node3.local. While Docker provides internal DNS resolution within its network, external tools and browsers may not automatically recognize these hostnames. + +To ensure that each node can be accessed by its hostname, we must manually map each container's internal IP address in /etc/hosts. Run the following command: + +```bash +for node in node1 node2 node3; do + ip=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ravendb-$node) + echo "$ip ${node}.local" | sudo tee -a /etc/hosts +done + +``` + +#### What This Command Does + +* Iterates over the three RavenDB nodes (ravendb-node1, ravendb-node2, ravendb-node3). +* Extracts the internal IP address of each container. +* Appends the hostname mapping to /etc/hosts, ensuring external tools and browsers can resolve them correctly. + +#### Why Is This Necessary? + +* No Built-in DNS for Local Machines – Without a DNS server, external tools like cURL or web browsers cannot resolve node1.local unless manually mapped. + +* Ensures Stable Communication – Even if containers restart and get new internal IPs, this setup provides a reliable way to access them by hostname. + +With the environment set up, we can now start the containers using Docker Compose: + +```bash +docker compose -f ~/ravendb/docker-compose.yml up -d --force-recreate --wait +``` + +### Configuring the Browser for Secure Access + +Since RavenDB uses client authentication certificates, we must import the client certificate via a browser before accessing the RavenDB Studio. + +1. Open Chrome and navigate to chrome://settings/ +2. Go to **Manage Certificates**. +3. Import the **client certificate** from ~/ravendb/security/my-cluster.pfx. +4. Go to the **Authorities** tab and add the **CA certificate** from ~/ravendb/security/ca.crt. + +Chrome Settings Manage Certificates page on the Your Certificates tab showing an imported org-ravendb.local certificate with an Import button visible + +Chrome certificate authority trust dialog for RavenDB Local CA with three unchecked trust options for websites, email users, and software makers + +Once imported, when navigating to https://node1.local/, a "**Select a Certificate**" prompt will appear. Choose the client certificate, and you'll be securely connected to your RavenDB instance: + +Chrome Select a Certificate dialog prompting authentication to node1.local:443 with a ravendb.local certificate issued by RavenDB Local CA selected + +### Forming the Cluster + +At this stage, we have three standalone RavenDB nodes that are not yet connected as a cluster. Setting up clustering is a simple process: + +4. Access RavenDB Studio: Open a browser and navigate to the first node, which will act as the cluster leader: [https://node1.local](https://node1.local) and go to **Manage Server** \> **Cluster**. + +5. Initialize the Cluster: Click the **Bootstrap Cluster** button to initialize the cluster. + +6. Add Nodes: Use **Add Node to Cluster** to add : + [https://node2.local](https://node2.local) and [https://node3.local](https://node3.local). + +Once both nodes are added, the RavenDB-secured self-signed cluster is fully operational. + +RavenDB Studio Cluster view showing three active nodes A (Leader), B (Member), and C (Member) connected over HTTPS using self-signed certificates on node1.local, node2.local, and node3.local + --- + +## Secured Deployment with Let's Encrypt + +The secured RavenDB cluster with Let's Encrypt certificates provides automated TLS encryption for secure communication between nodes and clients. Unlike self-signed certificates, Let's Encrypt acts as a trusted Certificate Authority (CA), ensuring that your certificates are publicly trusted without manual distribution or configuration. + +**This setup is ideal for production environments**, where a globally recognized CA enhances security and simplifies client access. By leveraging Let's Encrypt's automated certificate provisioning, RavenDB can request, validate, and deploy valid SSL certificates dynamically, removing the complexity of manual certificate management. Certificates are automatically renewed before expiration, eliminating the need for manual rotation and ensuring the cluster remains continuously secure without planned downtime. + +This section will guide you through automating the setup with Let's Encrypt, configuring RavenDB to use trusted certificates, and deploying a fully secured multi-node cluster using Docker Compose. + +### Setting Up the Environment + +Before deploying the cluster, we must prepare the environment by creating directories for each RavenDB node. +Unlike previous setups, this configuration requires a dedicated setupctl directory, which will be used to generate and store the setup package provided by RavenDB. + +#### What is the rvn Project and Why Does It Matter? + +RavenDB simplifies cluster setup with its rvn CLI tool, an official utility designed to automate and streamline database deployment. This tool enables users to: + +* Generate secured setup packages tailored for their cluster. +* Request and validate Let's Encrypt certificates dynamically. +* Automatically configure settings for each node. + +Instead of manually generating certificates and configuring security settings, RavenDB does the heavy lifting through the rvn create-setup-package command. This significantly reduces setup complexity, especially for production environments requiring trusted SSL certificates. + +```bash +sudo mkdir -p ~/ravendb/setupctl +mkdir -p ~/ravendb/data/node1 ~/ravendb/data/node2 ~/ravendb/data/node3 +``` + +#### What is the Purpose of the setupctl Directory? +The setupctl directory acts as a workspace for storing Configuration files, Auto-generated RavenDB settings, and Certificates and security files +Before generating the **setup package**, we need to create a **JSON** configuration file that defines the secured RavenDB cluster structure. This file includes essential details such as license information, domain settings, and node-specific configurations. + +To create the configuration file, run: + +```bash +sudo nano ~/ravendb/setupctl/setup.json +``` + +Then, add the following content: + +```json +{ + "License": { "Id": "", "Name": "","Keys": [] }, + "Email": "user@ravendb.net", + "Domain": "my-domain", + "RootDomain": "development.run", + "NodeSetupInfos": { + "A": { + "PublicServerUrl": "https://a.my-domain.development.run:443", + "PublicTcpServerUrl": "tcp://a.my-domain.development.run:38888", + "Port": 443, + "TcpPort": 38888, + "Addresses": ["172.19.0.2"] + }, + "B": { + "PublicServerUrl": "https://b.my-domain.development.run:4433", + "PublicTcpServerUrl": "tcp://b.my-domain.development.run:38889", + "Port": 4433, + "TcpPort": 38889, + "Addresses": ["172.19.0.3"] + }, + "C": { + "PublicServerUrl": "https://c.my-domain.development.run:4434", + "PublicTcpServerUrl": "tcp://c.my-domain.development.run:38890", + "Port": 4434, + "TcpPort": 38890, + "Addresses": ["172.19.0.4"] + } + } +} + + +``` + +#### What Does This Configuration Define? + +1. License Information + + The "License" section holds the RavenDB license details. You should fill in your actual license ID + and keys before proceeding. + You can obtain a license from [https://ravendb.net/buy#developer](https://ravendb.net/buy#developer). There is a free developer license available. + + + +2. User and Domain Information + +* "Email" – Specifies the email address used for Let's Encrypt certificate validation. +* "Domain" – Defines the custom domain where the cluster will be hosted. +* "RootDomain" – Specifies the parent domain, which is required for Let's Encrypt validation. + +3. Node Setup Formation + +* Each node (A, B, C) is assigned a **unique public** server URL (e.g.,[https://a.my-domain.development.run](https://a.my-domain.development.run)). +* The corresponding public **TCP URL** is also defined. +* Ports are unique for each node to avoid conflicts (443, 4433, 4434 for HTTPS). +* Each node is assigned a **static** **Docker IP** to ensure consistent internal communication. + +#### Important Notes + +* Ensure that **each node has a unique port assignment** to prevent conflicts. +* The **domain specified must be publicly resolvable**, as Let's Encrypt will validate ownership before issuing certificates. + +With this structured configuration, we are now ready to generate the setup package and proceed with deploying the secured RavenDB cluster. +But first, we need to set the correct ownership to ensure RavenDB has the necessary permissions: + +```bash +sudo chown -R 999:999 ~/ravendb/ +``` + +Now comes the exciting part—automating the secure cluster setup. Instead of manually configuring certificates and settings, RavenDB streamlines the process by generating a setup package that includes everything needed for deployment. + +To do this, we will temporarily run a RavenDB container, which will use the setup JSON we just created to request Let's Encrypt certificates and prepare the required configuration files. This process is fully automated and significantly simplifies the setup. + +Run the following command: + +```bash +docker run --rm -v "/home/$USER/ravendb/setupctl:/ravendb" ravendb/ravendb:latest /bin/bash -c "cd /usr/lib/ravendb/server && ./rvn create-setup-package -m=lets-encrypt -s=/ravendb/setup.json -o=/ravendb/setup_package.zip" +``` + +What This Command Does: + +✅ Runs a **temporary RavenDB container** to process the setup. +✅ Uses the **setup.json** file as input to define the cluster configuration. +✅ Requests **Let's Encrypt certificates**, performs domain validation, and handles DNS challenges. +✅ Generates **node-specific settings** and the required **TLS certificates**. +✅ Outputs everything into a **single setup package** (setup_package.zip). + +During execution, you will see log messages indicating progress: + +```text +[13:23:34 INFO] Setting up RavenDB in Let's Encrypt security mode. +... +[13:24:07 INFO] Successfully updated DNS record(s) and challenge(s) in my-domain.development.run +... +[13:24:12 INFO] Adding node 'A' to the cluster. +[13:24:12 INFO] Adding node 'B' to the cluster. +[13:24:12 INFO] Adding node 'C' to the cluster. +[13:24:12 INFO] Generating the client certificate. +... +[13:24:17 INFO] ZIP file was successfully added to this location: /ravendb/setup_package.zip + +``` + +Now that we have successfully obtained the setup package, the next step is to extract it so we can access the necessary configuration files: + +```bash +sudo unzip ~/ravendb/setupctl/setup_package.zip +``` + +At this point, all required files are in place. RavenDB has done the heavy lifting by creating the certificates and settings for each node: + +```text +$ tree +. +├── A +│ ├── cluster.server.certificate.my-domain.pfx +│ └── settings.json +├── B +│ ├── cluster.server.certificate.my-domain.pfx +│ └── settings.json +├── C +│ ├── cluster.server.certificate.my-domain.pfx +│ └── settings.json +├── admin.client.certificate.my-domain.crt +├── admin.client.certificate.my-domain.key +├── admin.client.certificate.my-domain.pfx +├── license.json +├── readme.txt +├── setup.json +``` + +Just like in previous setups, we need to create dedicated directories for each node to store persistent data and ensure proper ownership settings: + +```bash +sudo mkdir -p ~/ravendb/node1/data ~/ravendb/node2/data ~/ravendb/node3/data sudo chown -R 999:999 ~/ravendb/ +``` + +### Setup + +With the environment prepared and Let's Encrypt certificates generated, we can now define the Docker Compose configuration to deploy our secured RavenDB cluster. + +#### 1. Container Name and Image + +Similar to previous setups, we assign a unique container name to each node for easy identification and management: + +```yaml +container_name: ravendb-node1 + image: ravendb/ravendb:latest + + container_name: ravendb-node2 + image: ravendb/ravendb:latest + + container_name: ravendb-node3 + image: ravendb/ravendb:latest +``` + +#### 2. Port Mapping + +As in the self-signed secured setup, we expose the **HTTPS** **port** (443) for secure access. However, in this case, we must ensure that each node's port configuration matches the details specified in setup.json, which were used when generating the Let's Encrypt certificates. + + +```yaml +ravendb-node1: + ports: + - "443:443" + - "38888:38888" + +ravendb-node2: + ports: + - "4433:443" + - "38889:38888" + +ravendb-node3: + ports: + - "4434:443" + - "38890:38888" +``` + +#### 3. Data Persistence (Volumes) + +As before, we mount data directories for each node to ensure persistent storage. However, in this setup, we also mount the Let's Encrypt certificates and settings files that RavenDB generated during the setup package creation. + +```yaml +ravendb-node1: + volumes: + - /home/${USER}/ravendb/data/node1:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/A/cluster.server.certificate.my-domain.pfx + :/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/A/settings.json:/etc/ravendb/settings.json + +ravendb-node2: + volumes: + - /home/${USER}/ravendb/data/node2:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/B/cluster.server.certificate.my-domain.pfx + :/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/B/settings.json:/etc/ravendb/settings.json + +ravendb-node3: + volumes: + - /home/${USER}/ravendb/data/node3:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/C/cluster.server.certificate.my-domain.pfx + :/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/C/settings.json:/etc/ravendb/settings.json +``` + +#### 4. Networking Configuration + +Unlike previous setups where hostnames were used for networking, here we assign static IP addresses to each node, exactly as defined in setup.json. This ensures that each node maintains a consistent internal IP for communication within the cluster. + +```yaml +networks: + ravendb_network: + external: true + +ravendb-node1: + networks: + ravendb_network: + ipv4_address: 172.19.0.2 + +ravendb-node2: + networks: + ravendb_network: + ipv4_address: 172.19.0.3 + +ravendb-node3: + networks: + ravendb_network: + ipv4_address: 172.19.0.4 +``` + +The final version of docker-compose.yml should look like this: + +```yaml +networks: + ravendb_network: + external: true + +services: + ravendb-node1: + container_name: ravendb-node1 + image: ravendb/ravendb:latest + ports: + - 443:443 + - 38888:38888 + volumes: + - /home/${USER}/ravendb/node1/data:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/A/cluster.server.certificate.my-domain.pfx:/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/A/settings.json:/etc/ravendb/settings.json + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + networks: + ravendb_network: + ipv4_address: 172.19.0.2 + + ravendb-node2: + container_name: ravendb-node2 + image: ravendb/ravendb:latest + ports: + - 4433:443 + - 38889:38888 + volumes: + - /home/${USER}/ravendb/node2/data:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/B/cluster.server.certificate.my-domain.pfx:/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/B/settings.json:/etc/ravendb/settings.json + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + networks: + ravendb_network: + ipv4_address: 172.19.0.3 + ravendb-node3: + container_name: ravendb-node3 + image: ravendb/ravendb:latest + ports: + - 4434:443 + - 38890:38888 + volumes: + - /home/${USER}/ravendb/node3/data:/var/lib/ravendb/data + - /home/${USER}/ravendb/setupctl/C/cluster.server.certificate.my-domain.pfx:/usr/lib/ravendb/server/cluster.server.certificate.my-domain.pfx + - /home/${USER}/ravendb/setupctl/C/settings.json:/etc/ravendb/settings.json + environment: + - RAVEN_Setup_Mode=None + - RAVEN_License_Eula_Accepted=true + networks: + ravendb_network: + ipv4_address: 172.19.0.4 + +``` + +### Starting RavenDB + +With the environment set up, we can now start the containers using Docker Compose: + +```bash +docker compose -f ~/ravendb/docker-compose.yml up -d --force-recreate --wait +``` + +At this point, our containers are running, but before we can use RavenDB, one additional step is required: +We must register our client certificate with the server to enable administrative access. + +Since RavenDB provides **PKCS#12** (.pfx) certificates, we need to extract the public certificate and private key separately. + +#### 1. Extract the Public Certificate + + +```bash +sudo openssl pkcs12 -in ./A/cluster.server.certificate.my-domain.pfx -clcerts -nokeys -out ./A/cluster.server.certificate.pem -legacy -passin pass: +``` + +* Extracts only the public certificate from the .pfx bundle. + + +#### 2. Extract the Private Key + + +```bash +sudo openssl pkcs12 -in ./A/cluster.server.certificate.my-domain.pfx -nocerts -nodes -out ./A/cluster.server.certificate.key -legacy -passin pass: +``` + +* Extracts only the private key from the .pfx bundle. + +#### 3. Adjusting File Permissions + +Before proceeding, we must set the permissions for the admin client certificate to ensure secure access. + + +```bash +sudo chmod 640 ~/ravendb/setupctl/admin.client.certificate.my-domain.pfx +``` + +#### 4. Registering the Client Certificate with RavenDB + +Now, we register the admin client certificate with the first node ([a.my-domain.development.run](http://a.my-domain.development.run)) to enable full administrative access. + + +```bash +sudo curl -X PUT "https://a.my-domain.development.run/admin/certificates" \ + -H "Content-Type: application/json" \ + --cert ./A/cluster.server.certificate.pem \ + --key ./A/cluster.server.certificate.key \ + -d '{ "Name": "AdminClientCert", "Certificate": "'"$(cat ./admin.client.certificate.my-domain.pfx | base64 -w 0)"'", "SecurityClearance": "ClusterAdmin" }' +``` + +Once this step is complete, the client certificate will be registered, and our Let's Encrypt-secured RavenDB cluster will be fully operational. However, we can't access the studio just yet. + +### Configuring the Browser for Secure Access + +Since RavenDB uses client authentication certificates, we must import the client certificate via a browser before accessing the RavenDB Studio. + +5. Open Chrome and navigate to chrome://settings/ +6. Go to **Manage Certificates**. +7. Import the **client certificate** from ~/ravendb/security/admin.client.certificate.my-domain.pfx. + +Once imported, when navigating to a.my-domain.development.run, a "**Select a Certificate**" prompt will appear. Choose the client certificate, and you'll be securely connected to your RavenDB instance: + +Chrome Select a Certificate dialog prompting authentication to a.my-domain.development.run:443 showing two available certificates: ravendb.local and my-domain.client.certificate + +### Forming the Cluster + +At this stage, we have three standalone RavenDB nodes, but they are not yet connected as a cluster. Setting up clustering is a simple process: + +7. Access RavenDB Studio: Open a browser and navigate to the first node, which will act as the cluster leader: [https://a.my-domain.development.run](https://a.my-domain.development.run) and go to **Manage Server** \> **Cluster**. + +8. Initialize the Cluster: Click the **Bootstrap Cluster** button to initialize the cluster. + +9. Add Nodes: Use **Add Node to Cluster** to add : + [https://b.my-domain.development.run:4433](https://b.my-domain.development.run) and [https://c.my-domain.development.run:4434](https://c.my-domain.development.run:4434) . + +Once both nodes are added, the RavenDB secured self-signed cluster is fully operational. + +RavenDB Studio Cluster view showing three active nodes A (Leader), B (Member), and C (Member) connected over HTTPS using Let's Encrypt certificates on a.my-domain.development.run, b.my-domain.development.run, and c.my-domain.development.run + +## Summary + +This guide covered deploying a 3-node RavenDB cluster with Docker Compose across three progressively secure configurations: unsecured HTTP for local development, self-signed TLS for internal environments, and fully automated Let's Encrypt for production. + +- Docker volume mounts are what give a stateful database persistence across container restarts, making them non-negotiable in any containerized RavenDB setup. +- Unsecured mode is appropriate only for local development; exposing RavenDB over a public network without TLS is a significant security risk. +- Self-signed certificates work well for staging or internal environments where you control which clients need to trust the CA, without the requirement of a publicly resolvable domain. +- The rvn create-setup-package command handles the most complex part of a Let's Encrypt deployment, automating DNS challenges, certificate issuance, and per-node settings generation in a single step.