High-performance RDF triplestore ready to deploy on Microsoft Azure. SPARQL 1.1 endpoint operational from first boot, with Shiro authentication and Makefile automation included.
| Component | Value |
|---|---|
| Operating System | Ubuntu Server 24.04 LTS |
| RDF Engine | Apache Jena Fuseki with TDB2 backend |
| Web Access | Fuseki Web interface — port 3030 |
| Security | Role-based authentication via Apache Shiro |
| Provisioning | cloud-init — automatic configuration on first boot |
| Recommended VMs | B1ms, D2s_v3, E4s_v3 (Azure) |
| Automation | Makefile included for service deployment and Shiro security |
SPARQL 1.1 Query, Update and Graph Store Protocol endpoint operational from first boot.
Persistent on-disk RDF datasets via TDB2 — or in-memory for test environments.
Fine-grained role-based access control (admin, read, write) via Apache Shiro.
systemd service deployment, Shiro password management and remote restart in a single command.
Pre-configured image for common Azure SKUs — up and running in under 5 minutes from the Marketplace.
Automatic provisioning from first boot — no manual configuration required.
Follow these steps to deploy Fuseki from Azure Marketplace and access it.
Click Deploy Now on the Marketplace offer page to create the VM.
⚠️ Required: Provide Custom Data before creating the VM
The VM image follows Azure Marketplace security policy 200.3.3.8 — the fuseki system user cannot be pre-created in the image.
It must be initialized at first boot via Custom Data (cloud-init). Without this, Fuseki will not start.
Azure Portal: In the Advanced tab → Custom data field, paste:
#cloud-config
runcmd:
- useradd -r -s /bin/false fuseki
- chown -R fuseki:fuseki /data/fuseki
- chown -R fuseki:fuseki /opt/fuseki
- systemctl daemon-reload
- systemctl enable fuseki
- systemctl start fuseki
- echo "Fuseki first boot setup complete" >> /var/log/fuseki-firstboot.log
Azure CLI:
az vm create \
--resource-group <your-rg> \
--name <your-vm-name> \
--image <marketplace-image-urn> \
--custom-data fuseki-first-boot.yaml \
...
After VM creation, allow inbound traffic on port 3030:
az vm open-port \
--resource-group <your-rg> \
--name <your-vm-name> \
--port 3030 \
--priority 1001
Or via the Azure Portal: VM → Networking → Add inbound port rule → Port 3030, TCP.
http://<your-vm-ip>:3030
# Deploy the service to the remote VM
make service-deploy HOST=<vm-ip> SERVICE_FILE=fuseki-d2s-v3.service
# Enable and start the service
make service-enable HOST=<vm-ip>
make service-start HOST=<vm-ip>
# Generate hashed Shiro credentials
make shiro-generate
# Deploy the Shiro configuration to the VM
make shiro-deploy-hashed HOST=<vm-ip>