Docker

NodeDB is a single binary. One docker run command gets you a running server. Requires Linux kernel 5.1+ (for io_uring).

Quick Start

docker run -d --name nodedb \
  -p 6432:6432 \
  -p 6433:6433 \
  -p 6480:6480 \
  -p 9090:9090 \
  -v nodedb-data:/var/lib/nodedb \
  farhansyah/nodedb

That's it. Connect with psql -h localhost -p 6432 or curl http://localhost:6480/health.

Ports

PortProtocolRequired
6432PostgreSQL wire protocol (pgwire)Yes
6433Native MessagePack protocol (NDB)Yes
6480HTTP API (REST, SSE, WebSocket)Yes
9090WebSocket sync (NodeDB-Lite)Yes

RESP (Redis) and ILP (InfluxDB) are disabled by default. Enable via environment variables:

docker run -d --name nodedb \
  -p 6432:6432 \
  -p 6433:6433 \
  -p 6480:6480 \
  -p 9090:9090 \
  -p 6381:6381 \
  -p 8086:8086 \
  -v nodedb-data:/var/lib/nodedb \
  -e NODEDB_PORT_RESP=6381 \
  -e NODEDB_PORT_ILP=8086 \
  farhansyah/nodedb

Docker Compose

services:
  nodedb:
    image: farhansyah/nodedb
    ports:
      - "6432:6432"   # pgwire
      - "6433:6433"   # native
      - "6480:6480"   # HTTP
      - "9090:9090"   # sync
    volumes:
      - nodedb-data:/var/lib/nodedb
    environment:
      NODEDB_MEMORY_LIMIT: "4GiB"
      # NODEDB_PORT_RESP: "6381"    # uncomment to enable Redis protocol
      # NODEDB_PORT_ILP: "8086"     # uncomment to enable ILP ingest

volumes:
  nodedb-data:
docker compose up -d

Stop

# Stop (data preserved)
docker compose down

# Stop and wipe all data
docker compose down -v

# Or with docker run
docker stop nodedb && docker rm nodedb
# Data persists in the nodedb-data volume

Verify

curl http://localhost:6480/health

Environment Variables

VariableDefaultDescription
NODEDB_MEMORY_LIMIT75% of RAMTotal memory budget
NODEDB_DATA_PLANE_CORESCPUs - 1Number of Data Plane threads
NODEDB_LOG_FORMATtexttext or json
NODEDB_HOST0.0.0.0Bind address
NODEDB_PORT_RESPdisabledSet to enable Redis protocol
NODEDB_PORT_ILPdisabledSet to enable ILP ingest
NODEDB_DATA_DIR/var/lib/nodedbData directory inside container

Custom Port Mapping

Remap any port on the host side. The container always listens on the same internal ports:

docker run -d --name nodedb \
  -p 5432:6432 \
  -p 8080:6480 \
  -v nodedb-data:/var/lib/nodedb \
  farhansyah/nodedb