Skip to main content

Intro

This repository contains the self-hosting backend for the Usercentrics CMP. Usercentrics is a Consent Management Platform ("cookie banner") that can be used either as standalone software or in conjunction with other tools for managing consents on websites and apps.

Components

The application consists of three components and is based on Docker images: a Node.js - app, a database and a reverse proxy. The following versions are used:

  • Database (if enabled), one or more of the following:
    • PostgreSQL 18
    • Logonly (no DB)
  • App
    • Node.js 20.19 + Express.js
  • Reverse Proxy
    • NGINX

Before you start with the installation, make sure you understand the concept of the Data Flow and Static files. We recommend organising the files in a Git-Repository for proper version management.

For testing, you can also deploy the app + reverse proxy without a database connection. To do that, set DATABASE=none in the ENV-Config of the App.

Proxy Mode

Work in progress, proxy mode is currently not supported

Database

For the installation instructions, we'll use PostgreSQL (Kubernetes & Docker-Compose) or BigQuery (GCP). But it is also possible to use all of the other database types described under 'components'. Please check the database documentation here.

Installation

The application can be installed via:

Image-Repository

The Docker images for both the database and app are hosted on a private Docker repository in GCP's Artifact Registry:

ComponentRepo-URLTags
Appeurope-west10-docker.pkg.dev/dwc-apis-and-services/usercentrics/ucapilatest testing
Databaseeurope-west10-docker.pkg.dev/dwc-apis-and-services/usercentrics/postgreslatest testing
Reverse Proxyeurope-west10-docker.pkg.dev/dwc-apis-and-services/usercentrics/nginxlatest

You need an access key to access the images in the private repository. The access key will be provided during the onboarding phase in json - format. To authenticate, run the following command:

cat /path/to/key.json | docker login -u _json_key --password-stdin https://europe-west10-docker.pkg.dev

Kubernetes

For Kubernetes, first create a secret on the cluster:

kubectl create secret docker-registry ucapi-repo-secret \
--docker-server europe-west10-docker.pkg.dev \
--docker-username _json_key \
--docker-email EMAIL_FROM_KEY \
--docker-password="$(cat /path/to/key.json)" \
--namespace=NAME_OF_NAMESPACE

Replace EMAIL_FROM_KEY with the client_email - value from the json - key.

Then, add the key to the api-deployment.yml:

[...]
spec:
imagePullSecrets:
- name: ucapi-repo-secret
containers:
[...]