Docker deployment of the LOD-AM triplestore based on secoresearch/fuseki (maintained by SemanticComputing) with nickfedor/watchtower for automatic container updates.
Note: This configuration is aligned with the SemanticComputing/fuseki-docker image approach.
-
Create local directories and set permissions:
mkdir -p fuseki-data fuseki-config # Fuseki runs as UID 9008 - grant write access sudo chown -R 9008:9008 fuseki-data/ fuseki-config/ -
Set environment variables in your
~/.bashrc:# Fuseki export FUSEKI_ADMIN_PASSWORD="your_secure_password" export FUSEKI_JAVA_OPTS="-Xmx4G" # Optional: JVM memory settings # Watchtower Email Notifications export WATCHTOWER_NOTIFICATIONS=email export WATCHTOWER_NOTIFICATION_EMAIL_FROM="watchtower@yourdomain.com" export WATCHTOWER_NOTIFICATION_EMAIL_TO="admin@yourdomain.com" export WATCHTOWER_NOTIFICATION_EMAIL_SERVER="smtp.yourdomain.com" export WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 export WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER="smtp_user" export WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD="smtp_password" export WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 # Optional: default is 2
-
Source your .bashrc:
source ~/.bashrc
-
Start the services:
sudo -E docker compose up -d
-
Access Fuseki:
- Web UI: http://localhost:3030
- SPARQL endpoint: http://localhost:3030/LOD-AM/sparql
- Persistent storage: Fuseki data is stored in
./fuseki-data/(bind mount to/fuseki-base/databases) - Custom configs: Mount your
assembler.ttlorshiro.iniin./fuseki-config/(bind mount to/fuseki-base/configuration) - Watchtower: Monitors and updates containers automatically, sends email notifications on updates
- Reasoning: Currently disabled - AFO and CIDOC CRM will be implemented directly without inference mappings
The repository includes a minimal fuseki-config/assembler.ttl that:
- Uses TDB1 dataset type (
tdb:DatasetTDB) compatible with secoresearch/fuseki image - Stores data at
/fuseki-base/databases/tdb - Enables Graph Store Protocol (GSP) for data upload/edit in the UI
- Excludes reasoning (no RDFS/OWL inference)
Important: When using bind mounts for configuration, manually edit
assembler.ttlto enable endpoints rather than using environment variables (due to permission restrictions).
To apply configuration changes:
sudo -E docker compose down && sudo -E docker compose up -d| Variable | Required | Default | Description |
|---|---|---|---|
FUSEKI_ADMIN_PASSWORD |
Yes | - | Admin password for Fuseki |
FUSEKI_JAVA_OPTS |
No | -Xmx4G |
JVM options for memory tuning |
| Variable | Required | Default | Description |
|---|---|---|---|
WATCHTOWER_NOTIFICATIONS |
No | email |
Notification method |
WATCHTOWER_NOTIFICATION_EMAIL_FROM |
Yes | - | Sender email address |
WATCHTOWER_NOTIFICATION_EMAIL_TO |
Yes | - | Recipient email address |
WATCHTOWER_NOTIFICATION_EMAIL_SERVER |
Yes | - | SMTP server hostname |
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT |
Yes | - | SMTP server port |
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER |
No | - | SMTP username |
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD |
Yes | - | SMTP password |
WATCHTOWER_NOTIFICATION_EMAIL_DELAY |
No | 2 |
Delay between notifications in seconds |
- Fuseki: Triplestore server on port 3030
- Watchtower: Monitors and updates containers automatically
- Network: Isolated
lod-am-networkfor internal communication
If you see The "VARIABLE" variable is not set, use sudo -E to preserve your environment:
sudo -E docker compose up -dOr configure sudo to keep specific variables:
echo 'Defaults env_keep += "FUSEKI_ADMIN_PASSWORD FUSEKI_JAVA_OPTS WATCHTOWER_*"' | sudo tee /etc/sudoers.d/env_keepThe secoresearch/fuseki container runs as UID 9008. If you see Not writable errors, ensure both directories have correct ownership:
sudo chown -R 9008:9008 fuseki-data/ fuseki-config/