This repository contains the Data HUB components and Helm chart.
The main task of the platform is to integrate the different components and to provide a uniform authentication and authorization layer as well as management infrastructure such as frontends.
Questions, issues, or suggestions regarding the teuto DataHub? Reach out at info@teuto.net.
see Resources and Authorization
This details how the Data HUB concepts correspond to the application concepts.
An organization named tenant:group is created for each group.
For udh-sync to operate correctly please keep the "current organization" of the default admin account created by the Helm chart set to 1 / public. This will be reset before each organization synchronization but changing it can cause problems and might cause users to temporarily be assigned to the wrong organizations.
Tenant IDs set through X-Scope-OrgID HTTP header correspond to a Data HUB project and are named tenant:project.
Projects are named tenant:project.
Bucket names correspond to Data HUB projects and are named tenant.project.
Using an admin user PUT /tenants/XXX, see Resources and Authorization
PUT /tenants/mytenant/projects/myproject/sensor-credentials/mycredential, see Resources and Authorization
To use the credentials in a header from Chirpstack / TTN set the Authorization header to Basic <base64'ed client:secret>, e.g. Basic bG9yYXdhbi10ZXN0OnRlc3Rwdw== for the client lorawan-test and the secret testpw. See RFC 7617 for details about the actual conversion including escaping.
- (Create the tenants and groups first, see Add Tenant.)
- Log into Keycloak and add user with verified email address, assign groups. This can be done as a platform administrator or as a user with admin permissions for a group.
- Set temporary password for user and send it to them over a secure channel.
Use test-env/start.sh.
Use the Bitnami Common helpers as standard building blocks where it makes sense.
Make modifications via branches, only fast-foward merge (both enfored by GitLab).
Use the capitalized imperative form for commit message headers and limit them to 72 characters (ideally 50) (enforced by conform). Include a body if you think it might provide helpful context about what you did and why.
git push -u origin HEAD -o merge_request.create -o merge_request.merge_when_pipeline_succeedscreates a MR, and set's it to auto-merge if the pipeline passes and no rebasing is necessary.
Leave off the last option if the MR needs manual review / approval.
Synchronization of Grafana organizations and users as well as token mapping in Keycloak is currently implemented with Kotlin.
The local deployment includes a fake CA certificate that is limited to issuing certificates for .data-hub.local.
You can import it into your web browser as "to identify websites" to skip certificate warnings using local-ca.crt.