Deployment Guide
About this Guide
This is a productive deployment guide for deploying the Data Space Portal from scratch.
For the latest Data Space Portal version and compatible other components see: Latest releases
Prerequisites
Technical Skills
Ability to deploy, run and expose containered applications to the internet.
Ability to configure ingress routes or a reverse proxy of your choice to merge multiple services under a single domain.
Ability to maintain a Keycloak
Dataspace
Each configured Dataspace Deployment Environment must have a running sovity Keycloak DAPS.
Each configured Dataspace Deployment Environment must have a running Logging House.
To make use of the Data Catalog, each configured Dataspace Deployment Environment must have configured a running Catalog Crawler (based on the sovity EDC Connector).
The respective compatible versions can be found in the CHANGELOG.md.
Third Party
Information about a running instance of the sovity CaaS-Portal ist required.
URL of the CaaS-Portal, referred to as
[CAAS_PORTAL_FQDN]in this guide.URL of the Keycloak for authorizing at the CaaS-Portal, referred to as
[CAAS_KC_FQDN]in this guide.Credentials for the CaaS-Portal, referred to as
[CAAS_CLIENT_ID]and[CAAS_CLIENT_SECRET]in this guide.
You can use Uptime Kuma for monitoring of components the Portal depends on
This should track the DAPS and Catalog Crawler status. If the Logging House is used, its status should be tracked as well
The statuses must be available via the API (
/metricsendpoint)The output per component should look like this:
URL of the Uptime Kuma, referred to as
[UPTIME_KUMA_FQDN]in this guide.API key for the Uptime Kuma, referred to as
[UPTIME_KUMA_API_KEY]in this guide.To configure the Portal to utilize Uptime Kuma, see optional configuration for the Portal Backend further down in this guide.
Deployment
Deployment Units
Reverse Proxy / Ingress
Infrastructure dependent
Keycloak Deployment
Version 24.0.4 or compatible version
OAuth2 Proxy
quay.io/oauth2-proxy/oauth2-proxy:7.5.0
Caddy behind OAuth2 Proxy
caddy:2.7
Data Space Portal Backend
authority-portal-backend, see CHANGELOG.md for compatible versions.
Data Space Portal Frontend
authority-portal-frontend, see CHANGELOG.md for compatible versions.
Catalog Crawler (one per environment)
authority-portal-crawler, see CHANGELOG.md for compatible versions.
Postgresql
Version 16 or compatible version
Configuration
Reverse Proxy / Ingress
Data Space Portal needs to be deployed with TLS/HTTPS.
The domain under which the Data Space Portal should be reachable on the internet will be referred to as
[DSPORTAL_FQDN]in this guide.Path mapping:
Frontend:
https://[DSPORTAL_FQDN]->caddy:8080->frontend:8080Backend:
https://[DSPORTAL_FQDN]/api->caddy:8080->oauth2-proxy:8080->caddy:8081->backend:8080/api
Keycloak IAM Deployment
The Keycloak needs to get the following env variables it uses in the container:
Consider consulting Keycloak's server administration guide.
You need to have a running Keycloak with the aforementioned compatible version.
The domain under which the Keycloak should be reachable on the internet will be referred to as
[KC_FQDN]in this guide and should differ from the[DSPORTAL_FQDN].The steps to set up the realm are the following
sovity theme
Copy sovity-theme directory to
{keycloakRoot}/themes/directoryImport realm.json to create the
authority-portalrealmAdjust settings for
oauth2-proxyclient (Clients >oauth2-proxy> Settings)Root URL: URL of the auth proxy, e.g.https://authority-portal.example.urlHome URL: (Relative) sign in URL of auth proxy, e.g./oauth2/sign_inValid Redirect URIs: (Relative) callback URL of auth proxy, e.g./oauth2/callbackValid post logout redirect URIs:/*
Adjust settings for
authority-portal-clientclient (Clients >authority-portal-client> Settings)Root URL: URL of the Data Space Portal, e.g.https://authority-portal.example.urlHome URL: (Most likely) same asRoot URL
Regenerate client secrets for
oauth2-proxyandauthority-portal-clientclientsClients >
[client]> Credentials > Regenerate (Client secret)
Select sovity theme for login & email templates
Select
authority-portalrealmRealm settings > Themes > Login theme: Select
sovity-themeRealm settings > Themes > Email theme: Select
sovity-theme
Add email settings (Realm settings > Email)
At least
FromandHostare required
MDS theme
Copy mds-theme directory to
{keycloakRoot}/themes/directoryImport realm-mds.json to create the
mds-portalrealmAdjust settings for
oauth2-proxyclient (Clients >oauth2-proxy> Settings)Root URL: URL of the auth proxy, e.g.https://authority-portal.example.urlHome URL: (Relative) sign in URL of auth proxy, e.g./oauth2/sign_inValid Redirect URIs: (Relative) callback URL of auth proxy, e.g./oauth2/callbackValid post logout redirect URIs:/*
Adjust settings for
authority-portal-clientclient (Clients >authority-portal-client> Settings)Root URL: URL of the Data Space Portal, e.g.https://authority-portal.example.urlHome URL: (Most likely) same asRoot URL
Regenerate client secrets for
oauth2-proxyandauthority-portal-clientclientsClients >
[client]> Credentials > Regenerate (Client secret)
Select MDS theme for login & email templates
Select
mds-portalrealmRealm settings > Themes > Login theme: Select
mds-themeRealm settings > Themes > Email theme: Select
mds-theme
Add email settings (Realm settings > Email)
At least
FromandHostare required
Caddy
The Caddyfile needs to be mounted to /etc/caddy/Caddyfile in the Caddy container. See the list of deployment units for the compatible Caddy image.
The Caddy needs to get the following env variables it uses in the container:
OAuth2 Proxy
The Data Space Portal is meant to be deployed with an OAuth2 Proxy in front of the Portal Backend.
The OAuth2 Proxy should be configured to use the Keycloak (IAM) as OAuth2 Provider.
Copy the contents from resources to a directory the OAuth2 proxy can access (
CUSTOM_TEMPLATES_DIR)
Keycloak DAPS Client Creation
The Data Space Portal requires a client to register new connector certificates. This client must have the following settings:
Section
Authentication flow(TabSettings)Everything disabled
Service accounts rolesenabled
Tab
Client scopesAdd client scope
rolesas a default scope to the client
Service account roles (Tab
Service Account Roles)realm-management>manage-clientsenabledrealm-management>create-clientenabledrealm-management>view-clientsenabledrealm-management>query-clientsenabled
Data Space Portal Backend
Image:
ghcr.io/sovity/authority-portal-backendSet environment variables according to the following documentation (mandatory, except log level)
Optional configuration variables
Adjusting the log level at runtime
The log level can be changed during runtime via a request to the /api/config/log-level endpoint. The API key is required for this. Example:
Data Space Portal Frontend
Image:
ghcr.io/sovity/authority-portal-frontendSet environment variables according to the following table (mandatory)
Data Catalog Crawlers
The Data Catalog only displays the Data Catalog as it exists in the database.
Each deployment environment requires a Data Catalog Crawler.
A Data Catalog Crawler is based on the EDC Connector and crawls the catalogs of all connectors in the dataspace.
You will need an SKI/AKI client ID to register the crawler. Please refer to the EDC documentation on how to generate one.
Reverse Proxy Configuration
The catalog crawler is meant to be served via TLS/HTTPS.
The catalog crawler is meant to be deployed with a reverse proxy terminating TLS / providing HTTPS.
All requests are meant to be redirected to the deployment's
11003port.
Catalog Crawler Configuration
A productive configuration will require you to join a DAPS.
For that you will need a SKI/AKI client ID. Please refer to edc-extension's Getting Started Guide on how to generate one.
The DAPS needs to contain the claim referringConnector=broker for the broker. Although it is discouraged to do so, the expected value broker could be overridden by specifying a different value for MY_EDC_PARTICIPANT_ID.
You can also optionally override the following defaults:
Initial Setup
The first user that registers at the portal does not need to be approved and will automatically become an Authority Admin. This means this should be done by the Dataspace Authority
Last updated
Was this helpful?
