Sign inSign up

ianknowles/galactus-db

By ianknowles

•Updated about 20 hours ago

A graph database with Cypher queries, built-in graph algorithms and a separate browser workbench.

Image
Machine learning & AI
Data science
Databases & storage
0

1.1K

ianknowles/galactus-db repository overview

⁠Galactus DB

Galactus DB is a property-graph database for connected datasets, with Cypher queries, Bolt 4.4 connectivity, and native graph data science (GDS) and APOC functionality.

This image runs the database server. The optional Galactus DB Explorer⁠ image provides a browser-based query workbench.

  • Image: ianknowles/galactus-db:latest
  • Platforms: Linux AMD64 (x86-64) and ARM64 (aarch64)
  • Database port: 7687 (Bolt TCP and Bolt over WebSocket)
  • Persistent volume: /data
  • Default administrator: gdb
  • Default database: gdb

Use Linux containers on Docker Desktop for Windows or macOS. The latest tag tracks the published preview; pin an image digest for repeatable deployments.

⁠Quick start

Create a file named gdb.env with your own password of at least 12 characters:

GDB_INITIAL_PASSWORD=replace-with-your-own-long-password

Keep this file private and out of source control. Start the database:

docker run -d --name galactus-db --cpus 2 --env-file gdb.env -e GDB_LICENSE_MODE=developer -e GDB_DURABILITY=group -p 127.0.0.1:7687:7687 -v galactus-data:/data ianknowles/galactus-db:latest

Connect with a Bolt client that supports protocol version 4.4:

Connection settingValue
URIbolt://127.0.0.1:7687
Usernamegdb
PasswordThe value in gdb.env
Databasegdb

Run a first query:

RETURN 'Hello from Galactus DB' AS message;

View server logs with docker logs -f galactus-db. The built-in healthcheck checks listener reachability; a successful authenticated query verifies database access.

⁠Docker Compose with Explorer

For a database and browser workbench together, use this setup as an alternative to the standalone command above. Save it as compose.yaml:

services:
  db:
    image: ianknowles/galactus-db:latest
    cpus: 2
    environment:
      GDB_BIND: "0.0.0.0:7687"
      GDB_DATA: "/data/gdb"
      GDB_INITIAL_USER: "gdb"
      GDB_INITIAL_PASSWORD: "${GDB_INITIAL_PASSWORD:?Set GDB_INITIAL_PASSWORD in .env}"
      GDB_INITIAL_DATABASE: "gdb"
      GDB_LICENSE_MODE: "developer"
      GDB_DURABILITY: "buffered"
    ports:
      - "127.0.0.1:7687:7687"
    volumes:
      - graph-data:/data
    healthcheck:
      test: ["CMD", "/usr/local/bin/gdb-server", "--healthcheck"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  explorer:
    image: ianknowles/galactus-db-explorer:latest
    environment:
      GDB_EXPLORER_LISTEN: "0.0.0.0:7474"
      GDB_EXPLORER_DEFAULT_ENDPOINT: "bolt://db:7687"
      GDB_EXPLORER_DEFAULT_USER: "gdb"
    ports:
      - "127.0.0.1:7474:7474"
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

volumes:
  graph-data:

Create a .env file beside compose.yaml, using your own password:

GDB_INITIAL_PASSWORD=replace-with-your-own-long-password

Start the services:

docker compose up -d
docker compose ps
docker compose logs -f db

Open http://127.0.0.1:7474⁠ and sign in as gdb with your configured password. Explorer connects to bolt://db:7687 within the Compose network. Select gdb as the database. Applications running on your host connect to bolt://127.0.0.1:7687.

⁠Configuration

Configure the server through environment variables. These are release image defaults; both examples above explicitly select group durability.

VariableDefaultPurpose
GDB_INITIAL_PASSWORDRequiredAdministrator password; at least 12 characters
GDB_INITIAL_USERgdbAdministrator created at startup
GDB_INITIAL_DATABASEgdbHome database, created if absent
GDB_BIND0.0.0.0:7687In-container Bolt listener
GDB_DATA/data/gdbInstance directory within the persistent volume
GDB_LICENSE_MODEdeveloperdeveloper, personal, or commercial
GDB_LICENSEUnsetCommercial licence token
GDB_LICENSE_FILEUnsetPath to a mounted licence file; takes precedence over GDB_LICENSE
GDB_DURABILITYbufferedbuffered, group, or sync
GDB_SYNC_INTERVAL_MS50Buffered flush interval in milliseconds
GDB_CHECKPOINT_THRESHOLD67108864Log bytes before automatic maintenance; 0 disables
GDB_PROPERTY_CACHE_BYTES16777216Decoded property cache budget per database
GDB_QUERY_THREADSautoParallel read workers; automatic selection is capped at 8
GDB_MAX_INPUT_BYTES67108864Maximum incoming Bolt message or WebSocket frame size

buffered durability can lose acknowledged changes since the last sync after a power or kernel failure. group and sync wait for a covering disk sync before acknowledging commits.

Keep GDB_BIND=0.0.0.0:7687 inside the container. Use the host port mapping to control access. The examples publish ports only on loopback. Remote deployments need appropriate private networking and TLS termination: the server does not provide native TLS.

⁠Persistent data and upgrades

Mount a volume at /data to retain database files when replacing a container. The image runs as UID/GID 10001:10001. New named volumes inherit the image's directory ownership; bind-mounted directories must be writable by that user. Use a separate data directory for each instance, with only one running server accessing it.

docker compose down retains the named volume. Adding -v deletes it and its database files.

Before upgrading, arrange a verified backup and check storage compatibility for the target release. Native backup and restore require Commercial entitlement. Set the desired image tag or digest in your Compose file, then run:

docker compose pull
docker compose up -d
docker compose ps

Keep the previous image reference and your recovery copy. An older image is not guaranteed to read data written by a newer release.

⁠Editions and licensing

Galactus DB is proprietary software. Use is subject to the applicable licence grant and terms.

EditionIntended useCPU allocationNative backup and restore
DeveloperDevelopment and evaluationMultiple allocated CPUsUnavailable
PersonalPersonal projectsOne allocated CPUUnavailable
CommercialCommercial deploymentsLicensed allocated cores per instanceRequires backup/restore entitlement

A fresh instance starts in free Developer mode without a licence key, registration, or online activation. Both free editions support reads, writes, Cypher, GDS, and APOC. For Personal mode, set GDB_LICENSE_MODE=personal and limit the container to one CPU.

Current server builds limit the free editions to one active user database plus system; older image tags can differ. GDB_INITIAL_DATABASE selects the active user database at startup. Commercial supports multiple active user databases.

Commercial deployments require a Commercial licence. Supply the token through GDB_LICENSE or a mounted file selected by GDB_LICENSE_FILE, and set GDB_LICENSE_MODE=commercial. Run CALL gdb.license(); to inspect instance and licence status.

⁠Compatibility notes

Galactus DB implements its own Cypher, GDS, and APOC functionality. Support is a subset of the corresponding Neo4j interfaces; applications should verify the queries and procedures they use. Drivers must be able to negotiate Bolt 4.4.

The server operates as a single node, without replicated clustering. Write execution is exclusive. Graph topology and indexes remain in memory, so size container memory for the workload as well as the property cache.

The runtime image contains no shell or package manager. Use docker logs and Bolt clients for diagnostics.

Tag summary

Content type

Image

Digest

sha256:d1d49da5e…

Size

2.2 MB

Last updated

about 20 hours ago

docker pull ianknowles/galactus-db