GenesisDB CE

Generated on 23 Feb 2026 from the GenesisDB CE catalog page

GenesisDB is a event sourcing database engine developed specifically for event sourcing. It handles the writing, reading, and watching of events with native precision. All while keeping consistency, reliability, and usability front and center. Whether you’re just exploring event sourcing, comparing tools, or building a production-grade system.

GenesisDB CE (Community Edition) is the freely available version of the GenesisDB database engine, purpose-built for event sourcing.

The goal isn’t to limit you. It’s to lower the barrier to entry. GenesisDB CE focuses on accessibility and learning, not artificial constraints. It’s powered by the same core engine as the commercial edition: the same performance, the same reliability, the same expectations for serious developers.

Read the full documentation: https://docs.genesisdb.io

Software Included

Package Version License
GenesisDB CE 1.1.3 Community

Creating an App using the Control Panel

Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy to DO

Creating an App using the API

In addition to creating a Droplet from the GenesisDB CE 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB GenesisDB CE Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.

curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"genesisdb-genesisdbce"}' \
        "https://api.digitalocean.com/v2/droplets"

Getting Started After Deploying GenesisDB CE

Getting Started After Droplet Creation

After creating your Droplet, you need to set your auth token before GenesisDB CE can accept requests.

1. SSH into your Droplet and set your auth token:

ssh root@<your-droplet-ip>
sudo nano /etc/genesisdb/genesisdb.env

Set GENESISDB_AUTH_TOKEN to a strong, secret value of your choice:

GENESISDB_AUTH_TOKEN=<your-secret-token>
GENESISDB_TZ=UTC
GENESISDB_PROMETHEUS_METRICS=true
GENESISDB_DATA_DIR=/data

2. Restart the service:

sudo systemctl restart genesisdb

3. Verify GenesisDB is running:

curl http://<your-droplet-ip>:8080/api/v1/status/ping

4. Check status (authenticated):

curl -H "Authorization: Bearer <your-secret-token>" \
  http://<your-droplet-ip>:8080/api/v1/status

5. Commit your first events:

curl --location "http://<your-droplet-ip>:8080/api/v1/commit" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer <your-secret-token>" \
  --data '{
    "events": [
      {
        "source": "io.genesisdb.app",
        "subject": "/customer",
        "type": "io.genesisdb.app.customer-added",
        "data": {
          "firstName": "Bruce",
          "lastName": "Wayne",
          "emailAddress": "[email protected]"
        }
      }
    ]
  }'

6. Stream events back:

curl --location "http://<your-droplet-ip>:8080/api/v1/stream" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer <your-secret-token>" \
  --data '{
    "subject": "/customer"
  }'

Changing Configuration

Edit the environment file and restart the service:

sudo nano /etc/genesisdb/genesisdb.env
sudo systemctl restart genesisdb

Startup Script

This script is executed once when the Droplet is first created. It installs GenesisDB CE as a systemd service that starts automatically on every boot.

Path: /var/lib/cloud/scripts/per-instance/genesisdb-setup.sh

#!/bin/bash
set -euo pipefail

# --- GenesisDB CE — DigitalOcean Droplet Init Script ---

GENESISDB_ENV_FILE="/etc/genesisdb/genesisdb.env"
GENESISDB_DATA_DIR="/var/lib/gdb"

# Create directories
mkdir -p /etc/genesisdb
mkdir -p /var/lib/gdb

# Write environment config with placeholder token
# The user MUST set their own GENESISDB_AUTH_TOKEN before using the API.
cat > "$GENESISDB_ENV_FILE" <<EOF
GENESISDB_AUTH_TOKEN=CHANGE_ME
GENESISDB_TZ=UTC
GENESISDB_PROMETHEUS_METRICS=true
GENESISDB_DATA_DIR=/data
EOF

# Pull the latest image
docker pull genesisdb/genesisdb-ce:latest

# Install systemd service
cat > /etc/systemd/system/genesisdb.service <<'UNIT'
[Unit]
Description=GenesisDB CE
After=docker.service network-online.target
Requires=docker.service

[Service]
Type=simple
EnvironmentFile=/etc/genesisdb/genesisdb.env
ExecStartPre=-/usr/bin/docker rm -f genesisdb
ExecStart=/usr/bin/docker run --rm --name genesisdb \
  -p 8080:8080 \
  -v /var/lib/gdb:/data \
  -e GENESISDB_AUTH_TOKEN=${GENESISDB_AUTH_TOKEN} \
  -e GENESISDB_TZ=${GENESISDB_TZ} \
  -e GENESISDB_PROMETHEUS_METRICS=${GENESISDB_PROMETHEUS_METRICS} \
  -e GENESISDB_DATA_DIR=${GENESISDB_DATA_DIR} \
  genesisdb/genesisdb-ce:latest
ExecStop=/usr/bin/docker stop genesisdb
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
UNIT

# Enable and start the service
# Note: GenesisDB will start with the placeholder token.
# The user must update /etc/genesisdb/genesisdb.env with their own token
# and run: sudo systemctl restart genesisdb
systemctl daemon-reload
systemctl enable genesisdb.service
systemctl start genesisdb.service

Droplet Summary

Concern How it’s handled
Auth token Must be set by the user. Edit /etc/genesisdb/genesisdb.env and restart the service.
Timezone default UTC configurable via /etc/genesisdb/genesisdb.env
License Community Edition: no license key needed (env var left unset)
Data persistence Host volume at /var/lib/gdb mounted to /data in the container
Auto-start on boot systemd service with enable + Restart=always
Reconfiguration Edit /etc/genesisdb/genesisdb.env, then sudo systemctl restart genesisdb
Port 8080 ensure your DigitalOcean firewall allows inbound TCP on this port
Health check GET /api/v1/status/ping (no authentication required)
Metrics Prometheus metrics enabled by default

We can't find any results for your search.

Try using different keywords or simplifying your search terms.