Sunbird RC (Registry & Credential)
  • Learn
    • Introduction
    • Sunbird RC Overview
      • Why do we need Sunbird RC?
      • Core Capabilities
      • Core Registry Verbs
      • Workflows
      • What Sunbird RC is and what it's not? (WIP)
      • Possibilities
      • Demo Links
    • Technical Overview
      • High level architecture
      • Technical Specification Draft
      • Tech Stack and Requirements
    • Adopters
    • Roadmap
  • Use
    • Getting started
      • Pre-requisites
      • Installation Guide
        • Registry CLI
          • Setup A Registry Instance
        • Manual installation through docker-compose
        • Production setup through Helm
    • Developer's Guide
      • Configurations
        • Frontend Configurations
        • Frontend - Proxy configuration
        • Audit Configuration
        • Notifications Configuration
        • View Templates Configuration
      • Schema Setup
        • Introduction To Schemas
        • Creating Your Own Schemas
        • Schema Configuration
        • Create Schemas With Custom Password
      • Setup the Backend
      • Setup the Frontend
      • Backup and Restore
        • PostgreSQL
          • SQL Dump
          • File System Level Backup
          • Continuous Archiving and Point-in-Time Recovery (PITR)
        • Cassandra
          • Snapshot-based backup method
          • Incremental backup method
          • Data Restore
      • Generic Identity And Access Management
      • Metrics
      • Custom Keycloak Build
      • Custom QR Code design
      • VC Verification Module
    • Integrations
      • SSO with existing systems
      • Digilocker Meripehchaan SSO
      • Digilocker Integration
    • Release Notes
      • Latest Release - v1.0.0
    • Admin Portal
      • Login
      • Get Started
        • Create Schema
        • Attestation Workflows (WIP)
        • VC Template
          • Custom VC Template (WIP)
        • Ownership (WIP)
        • Publish (WIP)
      • Dashboard
  • API Reference
    • Registry
      • Using The APIs
      • Create An Entity
      • Invite An Entity
      • Generate token
      • Generate admin token
      • Get An Entity
      • Get An Entity By Id
      • Update An Entity
      • Create A Property Of An Entity
      • Update A Property Of An Entity
      • Revoke a Credential
      • Delete An Entity
    • Schema
      • Create Schema
      • Get Schema
      • Update Schema
      • Delete Schema
      • Publish A Schema
    • Attestation API
      • Raise An Attestation
      • Get Attestation Certificate
    • Claims API
      • Get All Claims
      • Get Claim by ID
      • Attest A Claim
    • Discovery API
      • Search An Entity
    • File Storage API
      • Upload A File
      • Get Uploaded File
      • Delete A File/ Multiple Files
    • Bulk Issuance API
      • Get Sample Template
      • Upload CSV
      • Get all uploaded Files
      • Download a Report File
    • Metrics APIs
      • Get Count
      • Get Aggregates
    • Other APIs
      • Sign API
      • Verify API
      • Swagger JSON API
      • Health API
  • Reference Solutions for Functional Registries
    • Education
      • Education Ecosystem
        • Installation
      • Education Registries
        • Installation
    • Health Registries
      • Organ Registries
        • Frontend Setup
        • Backend Setup
        • User Guide
      • Health Facility Registry
    • Govt to Person (G2P)
  • Reference Solution for Digital Credentials
    • Certificate Issuance
      • Installation(WIP)
      • User Guide
    • Vaccination Platform
    • Unified Learners Passport (ULP)
      • ULP Capabilities
      • Example Scenario
      • Technical Components (WIP)
      • Demo/Sandbox Links (WIP)
      • Installation Guide (WIP)
        • Frontend Setup
        • Installation through docker-compose
        • Dummy records setup for refrence
    • eLocker
      • High Level Diagram
      • Installation (WIP)
        • Frontend Setup E-locker
      • User Guide
    • Skills & Work Credentials
  • Links
    • Source Code
    • Releases & Changelogs
    • Website
    • Roadmap
    • Reference links
    • Design
  • Community
    • Discussion Forum
    • Contributors
    • Contributing
    • Contribution Guidebook
    • Code of Conduct
    • Community Events
    • Status By Track
  • HELP
    • Roadmap
    • FAQs
    • Glossary
    • Guide to Electronic Registries and Verifiable Credentials
      • Verifiable Credentials
        • What issues will Verifiable Credentials address?
        • What are the key roles in Verifiable Credentials?
        • What are the components of Verifiable Credentials?
        • What are the benefits of Verifiable Credentials?
        • Digital Credentials vs Verifiable Credentials
        • QR code vs Verifiable QR code
        • Use Cases
      • Electronic Registries
        • Evolution of Electronic Registries
        • What issues will Electronic Registries address?
        • Benefits of Electronic Registries
        • Registry vs Database
        • Design Principles
        • Use Cases
      • Leveraging Existing data stores
    • External Open Source Software Attributions
Powered by GitBook
On this page
  • Knowledge Needed
  • Prerequisites
  • Backend Setup
  • Getting Code for Backend
  • Setting up a Registry Instance
  • Setting up Keycloak
  • Setting up Redash
  • Frontend Setup

Was this helpful?

Edit on GitHub
  1. Reference Solutions for Functional Registries
  2. Education
  3. Education Ecosystem

Installation

PreviousEducation EcosystemNextEducation Registries

Last updated 1 year ago

Was this helpful?

Knowledge Needed

A good understanding of docker, docker-compose & nginx

Prerequisites

Docker

Installation instructions for Docker can be found .

Run docker -v in terminal to check if docker has been installed correctly:

$ docker -v
Docker version 20.10.9, build c2ea9bc90b

Docker Compose

Installation instructions can be found .

Run docker compose version in the terminal to check if docker compose has been installed correctly:

$ docker compose version
Docker Compose version 2.0.1

Backend Setup

Getting Code for Backend

Clone the repo

git clone https://github.com/Sunbird-RC/demo-education-registry.git
git checkout federated_edu_registry

This will create a demo-education-registry folder in the current working directory. Goto that folder

Setting up a Registry Instance

In the demo-education-folder, run the following command

docker compose up -d

Once logged in, navigate to clients. Select admin-api. Go to credentials tab and click on regenerate secret. Copy this secret. Create a .env file in the project repo and add KEYCLOAK_SECRET it as an environment variable with the value of the secret in the following format KEYCLOAK_SECRET=<copied_secret>

Recreate the registry so that it reflects the keycloak secret. This can be done using

docker compose up -d --force-recreate --no-deps registry

If any service has not started you can recreate that service with the same command

docker compose up -d --force-recreate --no-deps <service_name>

Check if all the services are started

docker compose ps
NAME                                                   IMAGE                                                  COMMAND                  SERVICE                      CREATED              STATUS                                 PORTS
demo-education-registry-adhoc_worker-1                 redash/redash:8.0.0.b32245                             "/app/bin/docker-ent…"   adhoc_worker                 About a minute ago   Up About a minute                      5000/tcp
demo-education-registry-certificate-api-1              ghcr.io/sunbird-rc/sunbird-rc-certificate-api                   "docker-entrypoint.s…"   certificate-api              17 hours ago         Up 17 hours (healthy)                  0.0.0.0:8078->8078/tcp, :::8078->8078/tcp
demo-education-registry-certificate-signer-1           ghcr.io/sunbird-rc/sunbird-rc-certificate-signer                "docker-entrypoint.s…"   certificate-signer           17 hours ago         Up 17 hours (healthy)                  0.0.0.0:8079->8079/tcp, :::8079->8079/tcp
demo-education-registry-claim-ms-1                     ghcr.io/sunbird-rc/sunbird-rc-claim-ms:v0.0.13                  "java -jar /app.jar"     claim-ms                     About a minute ago   Up About a minute                      0.0.0.0:8082->8082/tcp, :::8082->8082/tcp
demo-education-registry-clickhouse-1                   clickhouse/clickhouse-server:head-alpine               "/entrypoint.sh"         clickhouse                   17 hours ago         Up 17 hours (healthy)                  8123/tcp, 9009/tcp, 0.0.0.0:9004->9000/tcp, :::9004->9000/tcp
demo-education-registry-db-1                           postgres                                               "docker-entrypoint.s…"   db                           About a minute ago   Up About a minute                      0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
demo-education-registry-digilocker_certificate_api-1   sunbirdrc/sunbird-rc-digilocker-certificate-api        "/go/main"               digilocker_certificate_api   About a minute ago   Up About a minute                      8086/tcp, 0.0.0.0:8087->8087/tcp, :::8087->8087/tcp
demo-education-registry-es-1                           docker.elastic.co/elasticsearch/elasticsearch:7.10.1   "/tini -- /usr/local…"   es                           17 hours ago         Up 17 hours (healthy)                  0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp
demo-education-registry-file-storage-1                 quay.io/minio/minio                                    "/usr/bin/docker-ent…"   file-storage                 17 hours ago         Up 17 hours (healthy)                  0.0.0.0:9003->9000/tcp, :::9003->9000/tcp, 0.0.0.0:9002->9001/tcp, :::9002->9001/tcp
demo-education-registry-kafka-1                        confluentinc/cp-kafka:latest                           "/etc/confluent/dock…"   kafka                        17 hours ago         Up 17 hours (unhealthy)                0.0.0.0:9092->9092/tcp, :::9092->9092/tcp
demo-education-registry-keycloak-1                     ghcr.io/sunbird-rc/sunbird-rc-keycloak:nonce                    "/opt/jboss/tools/do…"   keycloak                     About a minute ago   Up About a minute (health: starting)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:9990->9990/tcp, :::9990->9990/tcp, 8443/tcp
demo-education-registry-metrics-1                      ghcr.io/sunbird-rc/sunbird-rc-metrics:metrics                    "/app/metrics/metric…"   metrics                      17 hours ago         Up 2 minutes                           0.0.0.0:8070->8070/tcp, :::8070->8070/tcp
demo-education-registry-nginx-1                        ghcr.io/sunbird-rc/sunbird-rc-nginx                             "/docker-entrypoint.…"   nginx                        About a minute ago   Restarting (1) 26 seconds ago
demo-education-registry-redis-1                        redis                                                  "docker-entrypoint.s…"   redis                        17 hours ago         Up 17 hours                            0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
demo-education-registry-registry-1                     ghcr.io/sunbird-rc/sunbird-rc-core:metrics                       "java -Xms1024m -Xmx…"   registry                     About a minute ago   Up About a minute                      0.0.0.0:8081->8081/tcp, :::8081->8081/tcp
demo-education-registry-scheduled_worker-1             redash/redash:8.0.0.b32245                             "/app/bin/docker-ent…"   scheduled_worker             About a minute ago   Up About a minute                      5000/tcp
demo-education-registry-scheduler-1                    redash/redash:8.0.0.b32245                             "/app/bin/docker-ent…"   scheduler                    About a minute ago   Up About a minute                      5000/tcp
demo-education-registry-server-1                       redash/redash:8.0.0.b32245                             "/app/bin/docker-ent…"   server                       About a minute ago   Up About a minute                      0.0.0.0:5678->5000/tcp, :::5678->5000/tcp
demo-education-registry-zookeeper-1                    confluentinc/cp-zookeeper:latest                       "/etc/confluent/dock…"   zookeeper                    17 hours ago         Up 17 hours                            2888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 3888/tcp

Setting up Keycloak

Adding Roles

Create admin, scholarship, trial-scholarship roles

Create admin user in keycloak

Update the credential for the admin user. Ex: abcd@123

Assign admin role to this user

Note:-

  • Schemas for EER are present in the following location

Assign `admin` role to the issuer

  • An issuer will require admin role to create schemas in the registry.

  • Goto keycloak admin console, http://localhost:8080/auth/

  • Goto Groups and double-click on Issuer

  • If Issuer group is not found, then you need to create an issuer first. The APIs to create the issuer is documented in the above jupyter notebook.

  • Goto Role Mappings and select admin from Available Roles and click Add Selected

The issuer will require the same roles that are configured in the schema configuration to issue VCs for that schema. In the below sample schema, ScholarshipForTopClassStudents it requires a user to have scholarship role. Only if the issuer contains that role then he will be able to issue VC. Similar to the above steps, you can assign the scholarship roles to the issuer to get access.

Setting up Redash

How to configure

Once all the services are up and running, run the following command

docker compose run --rm server create_db

This command will run migrations for redash

You can create the admin user on this screen. Once you create the admin user, the admin user will be displayed. Here you can create a dashboard, queries etc. Create a dashboard and queries here

Connect to the data source

  • On the home page click on Connect a Data Source

  • Search for Clickhouse

  • Add these details on the form to set up a connection with Clickhouse

Now that you have connected to Clickhouse, you can create queries. Once a query is created, you can add your visualization for the same.

Create a query and visualization

Create a visualization showing the total number of VCs issued for PreMatricScholarship schema.

  • Goto Queries tab

  • Click on Create your first Query

  • Paste the below query and click on Save

select count(*) as count from default.prematricscholarship

  • Rename this query New Query to Total PreMatricScholarship VC Issued

  • Click on Save and click on Publish

  • Click on Show Data Only

  • At the bottom click on Blue Play Button

  • Click on + New Visualization

  • Create a visualization with the below values. And click on Save

  • Click on Create and click on Dashboard. You can give a name to your dashboard and click on Save

  • Click on Add Widget and select the new visualization created. And click Add to Dashboard

  • Click on Done editing and click on Publish

  • Now the dashboard can be shared with other members. Click on Share and enable public access and copy the URL and share it with others for viewing the dashboard

Frontend Setup

  • Navigate to the federated-education-registry folder

  • Make sure your node and npm versions are - node v16.13.1 (npm v8.1.2)

This will start all the required services. Once all the services are started, Go to the browser and open . This will open up the keycloak admin portal. Use username as admin and password as admin.

Open in the browser and navigate to roles in the left side pane. Click on Add Role.

Now you can use the admin user to create issuers, create schemas, issue VCs and view issued VCs You can follow the following which has all the APIs.

Once this is successful, open the in the browser. The following screen should be displayed

Navigate to this repository and create a fork & clone

You can also manage these versions using

here
here
http://localhost:8080/auth/
http://localhost:8080/auth/
jupyter notebook
http://localhost:5678
https://github.com/Sunbird-RC/federated-education-registry
Node Version Manager
Logodemo-education-registry/sample_schemas at federated_edu_registry · Sunbird-RC/demo-education-registryGitHub
Logodemo-education-registry/PreMatricScholarship.json at federated_edu_registry · Sunbird-RC/demo-education-registryGitHub