Skip to content

Deploy OXFORDIA

This page covers deploying an OXFORDIA Node — the on-premise server that holds your institution's data and answers queries from researchers across the federation.

OXFORDIA Nodes ship in three release artifacts. Pick the form factor that matches your existing infrastructure.

Artifact Best for
Debian packages (amd64 / arm64) A single VPS or bare-metal server running Debian/Ubuntu
Docker image Container-native deployments
Helm chart Kubernetes clusters

A fresh Debian 12 VPS can be running a TLS-terminated, production-ready OXFORDIA Node in under thirty minutes.

1. Install the node package

curl -LO https://github.com/OXFORDIA-project/OXFORDIA-node/releases/download/v0.0.1-alpha.6/oxfordia-pod_0.0.1-alpha.6_amd64.deb
sudo apt install ./oxfordia-pod_0.0.1-alpha.6_amd64.deb

2. Run the interactive setup script

curl -LO https://github.com/OXFORDIA-project/OXFORDIA-node/releases/download/v0.0.1-alpha.6/oxfordia-pod-init.sh
sudo bash oxfordia-pod-init.sh

The init script asks three questions and handles each one automatically:

  • Install a local triplestore? — If yes, installs and configures Blazegraph. If no, point the node at an existing SPARQL endpoint via /etc/default/oxfordia-pod.
  • Install nginx as a reverse proxy? — If yes, writes a working nginx site definition.
  • Configure TLS with certbot? — If yes, provisions a Let's Encrypt certificate for your hostname.

A timestamped setup log is written to /var/log/oxfordia-pod/init.log.

3. Start the service

sudo systemctl enable --now oxfordia-pod
sudo journalctl -u oxfordia-pod -f

From here the node is managed with the same tools as any other Debian service: systemctl, journalctl, apt upgrade, and the environment file at /etc/default/oxfordia-pod.

Install the identity provider

A second package installs the identity provider (IDP). It ships separately so that one IDP can serve multiple node instances — one set of user accounts for your whole organization, multiple nodes per research project.

curl -LO https://github.com/OXFORDIA-project/OXFORDIA-node/releases/download/v0.0.1-alpha.6/oxfordia-pod-idp_0.0.1-alpha.6_amd64.deb
sudo apt install ./oxfordia-pod-idp_0.0.1-alpha.6_amd64.deb
sudo bash oxfordia-pod-idp-init.sh
sudo systemctl enable --now oxfordia-pod-idp

Option 2: Helm chart (Kubernetes)

helm repo add oxfordia https://oxfordia-project.github.io/pod-server

helm install my-pod oxfordia/pod-server \
  --set app.baseUrl=https://oxfordia.med.example.edu \
  --set triplestore.mode=external \
  --set triplestore.external.url=https://sparql.example.edu/query \
  --set ingress.enabled=true \
  --set ingress.hostname=oxfordia.med.example.edu

The chart supports configurable persistence, ingress, TLS, and either a managed or external database.


Option 3: Docker image

The Docker image is published to the GitHub Container Registry. Pull and run it directly, or compose it into your existing container stack.

docker pull ghcr.io/oxfordia-project/oxfordia-node:latest

Refer to the image documentation for environment variable configuration.


Configuration reference

The node is configured via the environment file at /etc/default/oxfordia-pod (Debian) or via Helm values / environment variables (Docker/Kubernetes). Key settings:

Variable Description
BASE_URL Public HTTPS URL of this node
SPARQL_ENDPOINT URL of the SPARQL query endpoint
IDP_URL URL of the identity provider

Next steps

Once your node is running: