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.
# Install symlinks and reload systemd
pixi run install
# Create Podman secrets from podman.secret.toml
pixi run create-secrets
# Start enabled services
pixi run startSee Getting started for a full walkthrough.
| Task | Description |
|---|---|
|
Deploy quadlet symlinks with dotter and reload the systemd user daemon |
|
Create Podman secrets from |
|
Start all services listed in |
|
Restart all failed or transitional services |
|
Show systemd active state and Podman health for every quadlet service |
|
Watch mode — refresh status every 5 s (or |
|
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 dependenciesOne 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 |
|---|---|
|
Shared Nushell module: |
|
Runs |
|
Creates Podman secrets from |
|
Starts enabled packages; warns and adds placeholders for missing secrets |
|
Restarts all services currently in a failed or transitional state |
|
Tabular status display with optional |
|
Interactive REPL: |
Documentation follows the Diátaxis framework.
| Section | Contents |
|---|---|
Run your first graph database end-to-end |
|
The Aerospike Graph two-container arrangement |
|
Select databases in |
|
Create Podman secrets for the six password-protected engines |
|
Read service state, container health, and logs |
|
Automatic and manual image updates; pinning and rollback |
|
Oracle Graph, RDFox, Stardog, DataStax — registry logins and license files |
|
Complete per-engine reference: image, ports, volumes, secrets, protocol |
|
Every |
|
All six secret names, target environment variables, and creation commands |
|
Quadlets vs Compose vs Kubernetes; user vs system services |
|
The source → dotter → symlink → quadlet generator → systemd pipeline |
|
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.tomltutorial-hydra-csv-to-graph walks through a complete data transformation:
-
Read a veterinary clinic dataset from CSV files
-
Convert to a property graph (GraphSON format)
-
Encode the graph as RDF with SHACL constraints
-
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 startMIT — see LICENSE.