If you use or plan to use DSW, please let us know via info@ds-wizard.org to:
- Join our Discord server, where you can be notified about important updates and releases + we can discuss your issues and ideas.
- Provide us feedback (what is good and bad, feature requests, etc.)
This example is intended for local setup and testing. For production use there are many more things to do such as authentication, controlling exposed ports (e.g. do not expose ports of postgres and garage), data backups, or using proxy (with HTTPS and WebSocket enabled). As it is highly dependent on your use case, consult production deployment with your sysadmin or contact us.
This is an example deployment of the Data Stewardship Wizard using Docker Compose and Garage as the S3-compatible object storage.
It is intentionally set up as a single-node local POC:
- Garage runs in Docker on host ports
9000(S3 API),9002(web endpoint), and9003(Admin API) - Garage UI runs on
127.0.0.1:8081 - Plugin files are served locally through
127.0.0.1:9004 - DSW points to
http://host.docker.internal:9000so presigned URLs are reachable from the browser create-bucket.shperforms the one-time Garage bootstrap for this example
For information on how to use Data Stewardship Wizard, visit our guide.
These are the only steps needed to run the local example.
-
Create the local environment file:
cp example.env .env
-
The tracked
config/application.ymlalready contains demo application values for this example. -
Start the stack:
docker compose up -d
-
Bootstrap Garage:
./create-bucket.sh
-
Open DSW:
-
Log in with:
- Email:
albert.einstein@example.com - Password:
password
- Email:
- Garage UI is available on http://localhost:8081 with username
adminand passwordadmin create-bucket.shprepares both the privateengine-wizardbucket and the publicpluginsbucket- For local plugin testing, upload plugin files to the
pluginsbucket under<plugin-uuid>/<version>/ - The plugin file should be stored as
<plugin-uuid>/<version>/plugin.js - The plugin URL in the DSW database should point to
http://localhost:9004/<plugin-uuid>/<version>/ - Example DB value:
http://localhost:9004/6534f8f7-0d43-4c4d-9157-15af17f37649/1.2.0/ - Usable plugin examples: replies-importer-plugin and madmp-importer-plugin
- This repository is a local example only; if you self-host Garage publicly, place it behind HTTPS reverse proxy or another equivalent security layer
- Use
docker compose pullto get newest image (hotfixes) before starting - Do not expose PostgreSQL or raw Garage ports directly to the internet in a public deployment
- If you self-host Garage publicly, place it behind an HTTPS reverse proxy or another equivalent security layer and protect admin access
- When you want to use DSW publicly, set up HTTPS proxy (e.g. Nginx) with a certificate for your domain and change default accounts
- Set up volume mounted to PostgreSQL and Garage containers for persistent data
- Garage needs a one-time bootstrap after the stack starts.
create-bucket.shassigns the single-node layout, creates theengine-wizardandpluginsbuckets, imports the configured S3 key, and grants bucket permissions - DSW uses
http://host.docker.internal:9000as the S3 endpoint so both the DSW containers and the browser can reach the same local Garage endpoint - Garage UI is configured with local basic auth defaults for this POC; change them before sharing the setup
- Always use strong passwords and never use default values, change the demo secrets in
config/application.ymland.envbefore using this anywhere except local testing
This repository is used to regularly check vulnerabilities in the latest release of Docker images. Grype tool is used (see security-audit.yml file and related GitHub Actions runs). Once a vulnerability is detected, we are notified and start working on a new hotfix version. You should always use the latest version you can find used in this repository.