Platform
Installation guide for CREDEBL Platform Services
Last updated
Installation guide for CREDEBL Platform Services
Last updated
Before installing the CREDEBL Platform services, it is essential to ensure that your environment meets certain prerequisites. Properly setting up these requirements will help facilitate a smooth installation process and optimal performance of the platform. This includes preparing your system with the necessary software dependencies, configuring the required network settings, and ensuring adequate hardware resources. Following these guidelines will help prevent potential issues and ensure that the CREDEBL Platform services are installed and operate as intended.
Here is the list of software needed to get started:
and (>= 18)
(>= 2.34.1)
(>= 24.0.5)
(>= 2.20.3)
The above can directly be installed from their respective docs or
Here is the list of prerequisites software we will need for CREDEBL:
(>= 14)
(>= 2.6.4)
(>= 7.4)
(>= 25.0.6)
(optional)
Clone the platform repository from GitHub:
PostgreSQL is a powerful, open-source object-relational database system known for its robustness and advanced features. This guide provides instructions for installing and configuring PostgreSQL both natively and using Docker. Installing PostgreSQL
Initially we'll need to install postures on the host or on docker
Access the PostgreSQL and create user and database
Now, add the postgres environment variable to the .env
file
The CREDEBL platform utilizes NATS for message-driven data exchange between its microservices.
Create the NATS Configuration File (nats-server.conf) The configuration file defines how the NATS server operates, including port assignments and WebSocket support.
port: The main port for NATS communication is set to 4222.
max_payload: Sets the maximum message payload size to 4 MB.
websocket: Enables WebSocket support on port 443 without TLS (for unsecured communication).
Create the docker-compose.yml File
The docker-compose.yml file will define the NATS service, map the necessary ports, and bind the configuration file.
container_name: Sets the name of the container to nats.
image: Uses the official NATS Docker image.
command: Passes the NATS configuration file to the container at startup.
ports: Exposes three key ports:
4222
: Main NATS client communication port.
6222
: Routing port for NATS clusters.
8222
: HTTP monitoring port for server statistics and health checks.
volumes: Mounts the nats-server.conf configuration file into the container as read-only (ro).
Start the NATS Server
To start the NATS server, run the following command from the directory containing the docker-compose.yml file:
The CREDEBL platform leverages Redis as an in-memory data store, primarily for caching and queuing.
To set up Redis for the CREDEBL platform, follow the steps below to create and launch a Redis instance using Docker.
Create the docker-compose.yml File The docker-compose.yml file is used to define and configure the Redis container for the platform.
Start REDIS Server
Once the docker-compose.yml
file is in place, start the Redis service by running the following command:
Keycloak is an open source identity and access management solution
Run Keycloak using docker:
Once logged in:
This section guides you through the initial setup and configuration of Keycloak through its administration console.
Go to administration console
Login using username: admin, password: admin.
Click on the Keycloak dropdown on the top left and add a new realm as “credebl-platform” by clicking on 'Create realm'.
Go to 'Clients' under 'Manage' in the sidebar on the left and create new client as a clientId = “adminClient”.
Click on Next Button
Set client authentication to ON mode.
Set Service Accounts Roles to ON mode.
Set Direct Access Grants to ON mode.
Click on Next Button
Save the details
Service Account Roles Settings:
This section outlines the configuration of service account roles to manage permissions and access control within Keycloak.
Go to adminClient by selecting from the clients side tab.
Go to the Service account role section.
Click on the Assign role button.
Select Filter by clients from the dropdown menu.
Select the below roles from the Available Roles and click on the Assign button:
Create-client
Manage-client
Manage-users
Query-clients
Query-users
View-clients
View-users
Realm Roles Settings:
This section covers the configuration of realm role settings within Keycloak.
Under the credebl-platform realm, from the menu select realm-roles.
In realm-roles, click on Create Role and create a role with Role name=“holder”, as when a new user registers on the platform we are assigning him a “holder” role from the realm.
SSO Session Settings:
Set SSO Session Idle to 2 days. This is the expiration time of the refresh token if the user is idle on the platform. We can configure this as per our need.
To navigate to SSO Session, go to Realm settings
option on left sidebar under configure,
now under the Sessions
tab you can see SSO Session Idle
Update the .env
This section covers the setup of environment variables for seamless integration with your application
Update the .env file for the Keycloak details:
Below is an optional step to add users and can be skipped
Add users manually (Optional):
This section provides guidance on adding users manually to the Keycloak realm.
Go to users.
Enable user and email, then click on save.
Change the password in the credential section for user login.
Update the Keycloak userId in the users table in the local database.
Also update the client secret key in the .env file, which you will get in the credential section of adminClient in the client section.
Test the flow by logging in to platform admin.
Add the send grid key in the .env
To utilize all functionalities of CREDEBL, total of 3 S3 buckets are required for;
Storing Organization logo during creating and updating an organization
Bulk issuance of credentials
Coming Soon
The Docker image built during this process is used to launch agents for new organizations on the CREDEBL platform.The Docker image name is set as an environment variable during the platform setup in a later step.
Clone the following repository:
Use following commands to install and upgrade Yarn:
To install the dependencies use following command:
Build Agent controller using the following command:
Create Docker Image using following command :
Add the Docker Image tag in the .env
To help you quick start, a .env.demo
is already present at the root of the platform repository. To getting started, rename .env.demo
to .env
Please find your-ip
in the .env
file, and replace it with your machine's Ip address.
Before you start the services make sure to update the credebl-master-table.json
present at location, libs/prisma-service/prisma/data
Now seed the db, before starting the services using the following:
Since, you are in the '/prisma-service', move back to the root
Start the services:
You can skip further NATS and REDIS setup if you are installing services using docker and
Currently the already contains NATS keys and the local setup skips authorization for NATS messaging between services. Refer to know more about NATS authorization
To create your Nkeys, you can refer NATS tool nk as per their
You can skip REDIS setup if you are installing Platform services using docker.
This command installs and starts Keycloak at the specified endpoints, locally accessible at .
Add * (Eg.: *) in Valid Redirect URIs as front-end url.
Add (Eg.: ) in Root URL.
Add (Eg.: ) in Web Origins.
Add username: and email: .
Create a , generate an API key, and grant necessary permissions for sending emails.
Make a note of the API-key as well as the email used, as this will be used in our .env
and during
Storing connection URL generated from and creating shortened URL
According to the AWS_S3_STOREOBJECT_BUCKET
name, as per the , add domain to access objects from the bucket and save it, as it is utilized for the another .env variable
Apart from the already present variables, you need to add few variables generated from the above prerequisites like the , , , , , etc
Make sure the .env
file is set with all the required environment variables as per the .env.sample file and the give above.
At the root of the :
Access the Platform API by navigating to