Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pgdb — Graph Database Quadlets

Podman quadlet definitions for 23 graph database engines, managed as rootless systemd user services on a Linux desktop or server.

This repository is part of the Hydra project, which builds pipelines that transform structured data (CSV, relational tables) into property graphs and RDF knowledge graphs. The companion tutorial tutorial-hydra-csv-to-graph demonstrates an end-to-end pipeline from CSV through GraphSON to RDF + SHACL, queried via Apache Jena Fuseki. The quadlets defined here are the infrastructure layer that those pipelines connect to.

Prerequisites
  • Podman 4.4 or later

  • pixi — manages Nushell and dotter as project-local tools

  • git-crypt — for encrypting podman.secret.toml (optional but recommended)

Install and start neo4j (the default enabled database)
# Install symlinks and reload systemd
pixi run install

# Create Podman secrets from podman.secret.toml
pixi run create-secrets

# Start enabled services
pixi run start

See Getting started for a full walkthrough.

Task Description

pixi run install

Deploy quadlet symlinks with dotter and reload the systemd user daemon

pixi run create-secrets

Create Podman secrets from podman.secret.toml (add -- --force to overwrite)

pixi run start

Start all services listed in .dotter/local.toml

pixi run restart

Restart all failed or transitional services

pixi run status

Show systemd active state and Podman health for every quadlet service

pixi run status — -w

Watch mode — refresh status every 5 s (or -- -w -i 10 for 10 s)

pixi run trouble

Interactive troubleshooter: list failed services, inspect status / logs / health

pgdb/
  systemd/          Quadlet source files — one subdirectory per database engine
  pixi-script/      Nushell scripts backing the pixi tasks
  _docs/            Diátaxis documentation (tutorials, how-to, reference, explanation)
  .dotter/          Dotter configuration (global.toml + local.toml)
  podman.secret.toml  Podman secrets — git-crypt encrypted, gitignored by default
  pixi.toml         Pixi workspace: tasks and dependencies

One subdirectory per database, containing .container, .volume, and (for Aerospike Graph) .network quadlet files. Dotter symlinks the selected databases into ~/.config/containers/systemd/pgdb/. Edit .dotter/local.toml to select which databases to deploy — only neo4j is enabled by default.

The 23 engines covered span property graph, RDF/triplestore, multi-model, and distributed backends. See Database inventory for the full list with images, ports, and protocols.

File Purpose

mod.nu

Shared Nushell module: service-state, container-health, enabled-packages, package-services, missing-secrets, get-failed

install.nu

Runs dotter deploy and systemctl --user daemon-reload

create-secrets.nu

Creates Podman secrets from podman.secret.toml

start.nu

Starts enabled packages; warns and adds placeholders for missing secrets

restart.nu

Restarts all services currently in a failed or transitional state

status.nu

Tabular status display with optional --watch mode

trouble.nu

Interactive REPL: df list failed, aa <id> activate, sa/la/ha diagnose

Documentation follows the Diátaxis framework.

Section Contents

tutorials/getting-started

Run your first graph database end-to-end

tutorials/multi-container-setup

The Aerospike Graph two-container arrangement

how-to/activate-a-quadlet

Select databases in local.toml, deploy symlinks, start services

how-to/create-secrets

Create Podman secrets for the six password-protected engines

how-to/check-health

Read service state, container health, and logs

how-to/update-images

Automatic and manual image updates; pinning and rollback

how-to/configure-license-databases

Oracle Graph, RDFox, Stardog, DataStax — registry logins and license files

reference/database-inventory

Complete per-engine reference: image, ports, volumes, secrets, protocol

reference/quadlet-fields

Every .container / .volume / .network field used in this project

reference/secrets

All six secret names, target environment variables, and creation commands

explanation/why-quadlets

Quadlets vs Compose vs Kubernetes; user vs system services

explanation/architecture

The source → dotter → symlink → quadlet generator → systemd pipeline

explanation/graph-database-categories

Property graph, RDF/SPARQL, multi-model, and distributed backends compared

Stores the values for all six Podman secrets (Neo4j auth, database passwords, RDFox license). Encrypted with git-crypt before committing; ignored by git by default. A sample with placeholder values lives at _docs/sample-podman.secret.toml.

First-time setup:

git-crypt init
git-crypt add-gpg-user <your-gpg-key-id>
git add -f podman.secret.toml

tutorial-hydra-csv-to-graph walks through a complete data transformation:

  1. Read a veterinary clinic dataset from CSV files

  2. Convert to a property graph (GraphSON format)

  3. Encode the graph as RDF with SHACL constraints

  4. Load and query the RDF graph via Apache Jena Fuseki

This repository (pgdb) provides the running Jena Fuseki instance that the final step connects to, along with 22 other graph database engines for experimenting with alternative backends. The jena-fuseki quadlet is enabled alongside neo4j when you want to run the full tutorial pipeline locally.

To add Jena Fuseki alongside the default Neo4j deployment, uncomment it in .dotter/local.toml:

packages = [
    "jena-fuseki",
    "neo4j",
]

Then run:

pixi run install && pixi run create-secrets && pixi run start

MIT — see LICENSE.

About

A bunch of quadlets for databases

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages