On Prem Deployment Guide
This guide walks through deploying and configuring eSignet on a Kubernetes-based infrastructure. It assumes you already have Kubernetes infrastructure in place and the tools needed to integrate eSignet with an identity system (MOSIP, Sunbird RC, or a mock system for testing).
eSignet Deployment and Integration Scenarios
eSignet supports a range of use cases — secure digital signatures for online transactions, national ID authentication, e-government services, and identity verification for financial, healthcare, or educational platforms. This guide focuses specifically on deploying eSignet and integrating it with an identity system; the deployment flow and integration steps vary depending on which one you choose.
How eSignet can work with different ID systems:
eSignet + Mock — deploys eSignet with a mock identity provider, letting you simulate authentication and authorization flows without integrating a real ID system. Ideal for development, testing, and demonstrations, with no external dependencies or onboarding steps required.
eSignet + MOSIP — integrates eSignet with an existing (or planned) MOSIP identity system, using MOSIP as the identity provider for authentication and digital-signature workflows based on MOSIP-managed identities.
eSignet + Sunbird RC — integrates eSignet with an existing Sunbird RC identity system, using Sunbird RC for identity management and enabling secure authentication and digital-signature processes on top of it.
Prerequisites
The prerequisites are split into three parts:
Developer Workstation Profile — tools and utilities to install on your own machine to create/manage the Kubernetes cluster and deploy eSignet on it.
Development Environment Setup — the specific configuration your local environment needs to work effectively with eSignet.
Cloud Environment Profile — the hardware/software/network requirements for the Kubernetes-based server infrastructure eSignet will run on.
Developer Workstation Profile
Operating Systems
eSignet can be deployed from a workstation running any of the following, though this guide assumes a Linux machine running Ubuntu 22.04 LTS:
Linux (Ubuntu 22.04 LTS — recommended for production deployments)
Windows
macOS (OSX)
Development Environment Setup
Install the following on the local machine you'll use to run kubectl, connect to the Kubernetes cluster, and manage the deployment:
Ansible — version > 2.12.4
Istioctl — version 1.15.0
A WireGuard client — see the Wireguard client setup guide (link to be added).
Cloud Environment Profile
A Kubernetes-based server infrastructure is required to deploy eSignet. It can either already have the identity system (such as MOSIP) deployed on it, or you can deploy eSignet alongside the identity system.
Deploy eSignet
The subsections below cover deploying eSignet with or without an existing identity system (such as MOSIP).
Get access to the deployment environment
Ask your system administrator for access to the Kubernetes cluster and namespaces where you'll deploy eSignet. This typically includes:
Access to the Kubernetes cluster (a kubeconfig file).
Access to the relevant namespaces (e.g.
mosip,esignet).Permission to create resources in those namespaces.
Access to any required secrets or configuration files.
Deploy eSignet Services
Once the steps above are complete, proceed with the deployment scripts below.
Install Prerequisites
Installing prerequisites gets the environment ready for eSignet's core services and plugins.
The install script prompts you for each component and configuration in turn; some prompts are chained, so answering one may trigger another. Review the prompts below and decide your answers in advance for a smoother run.
What Gets Installed
PostgreSQL — database backend for eSignet services.
Keycloak — identity and access management service.
Redis — in-memory data store for caching and session management.
HSM — software-based key management, or a Hardware Security Module, for secure key storage and cryptographic operations.
apiaccesscontrol — service for API access management and authorization.
ConfigMaps and Secrets — configuration values, domain details, and sensitive credentials (e.g. the
esignet-globalconfigmap,keycloak-client-secrets).Supporting scripts —
install-prereq.shandinitialise-prereq.sh.
Prepare esignet-global
Prepare the esignet-global configmap, which holds environment-specific configuration for eSignet.
Copy the sample configmap file:
Edit esignet-global-cm.yaml:
Update domain names and other configuration values to match your deployment environment.
Set up Google reCAPTCHA v2 by generating site and secret keys for your domain at the reCAPTCHA admin console, and add them to the configmap.
If you're using an external IAM, copy the required secrets and create a Kubernetes secret named
keycloak-client-secretsin theesignetnamespace.
Run install-prereq.sh
Run the script from the deploy folder to install PostgreSQL, Keycloak, Redis, and API access control. You'll be prompted for configuration details based on your environment.
apiaccesscontrol — you'll be asked whether to access-control eSignet's client management APIs (answer n if you don't need this; press Enter for the default, y):
n— internal APIs run without access control.y— Keycloak is initialized for API access control. You're then asked for the IAM server URL (press Enter to install the default Keycloak instance), and, if you choose to initialize Keycloak, an admin username and password.
Redis — you'll be asked whether to deploy Redis in the redis namespace (answer n if you already have a Redis instance; press Enter for the default, y):
y— installs Redis for you.n— you're then asked a follow-up, "Do you want to configure Redis?" Answeryto supply the hostname, port, and password for your existing Redis server below, ornto skip supplying them here.redishostname— the hostname for your Redis server.redisport— the port number for your Redis server.redispassword— the password for your Redis server.
PostgreSQL and captcha validation are auto-deployed by this script with no interactive prompt.
Prerequisite installation is complete once these prompts are answered.
Initialize prerequisites
Run the script from the deploy folder to initialize the eSignet database and Keycloak. You'll be prompted for configuration details such as database credentials, IAM scope, and service endpoints — update the relevant values files before running it.
If the eSignet database isn't already present at the Postgres server URL you provided, the script creates and initializes it.
If you customize the Postgres init values, you must keep a second file in sync, or the eSignet service will fail to connect.
Update the Postgres init values at
postgres/init_values.yaml. If you're creating a new database, set the name, user, and connection details as needed:If the default database name works for you, no edits are needed — proceed with the script as-is.
Important: If you edit
init_values.yaml(e.g. changingdbNameordbUser), also update the matching values inpostgres-config.yamlin the samepostgresdirectory. Otherwise eSignet won't be able to connect to the correct database or user.
eSignet Services Installation
Once prerequisites are installed and initialized, install the eSignet services themselves.
Before running the install script, decide which plugin — which identity system — you want to integrate with:
eSignet Mock Plugin — simulates an identity provider for testing and development; no real identity system required.
MOSIP Identity Plugin — integrates eSignet with an existing MOSIP identity system.
Sunbird RC Plugin — connects eSignet to an existing Sunbird RC identity registry.
Compatibility matrix
MOSIP 1.1.x
1.5.x
1.2.x
Legacy
Legacy MOSIP
Sunbird RC 2.x
1.7.0
1.0.x
Stable
Sunbird Integration
Custom API
1.7.0
Custom
Custom
Plugin Development
To install eSignet with plugins, navigate to the esignet folder inside deploy and run:
The script asks you to choose a plugin:
esignet-mock-pluginmosip-identity-pluginsunbird-rc-plugin
Answer with the option number — 1, 2, or 3.
esignet-mock-plugin
Choosing the mock plugin needs no further chained prompts — installation completes automatically, giving you eSignet with a mock identity provider integration, primarily for testing and demonstration: simulating authentication and authorization flows without connecting to a real identity system.
During installation, the script also prompts you to configure the key manager. You can accept the defaults or provide custom values.
Volume size: 100 MB by default.
Configuration path:
/home/mosip/config, via the MOSIP ConfigMap.PKCS#12 file: defaults to
/home/mosip/config/local.p12, or provide a custom path when prompted:
Key points:
The mock plugin provides sample endpoints and data that mimic real-world identity operations.
Use the mock relying party and OIDC UI to test the complete eSignet flow.
No onboarding with MOSIP or Sunbird RC is required.
Not recommended for production, but useful for development, testing, and API validation.
After installation, test eSignet using the mock relying party tools and the provided Postman collections.
mosip-identity-plugin
Choosing the MOSIP identity plugin prompts you for the following, each with a default in-cluster URL you can override:
mosip.esignet.authenticator.ida.cert-urlmosip.esignet.authenticator.ida.kyc-auth-urlmosip.esignet.authenticator.ida.kyc-exchange-urlmosip.esignet.authenticator.ida.send-otp-urlmosip.esignet.binder.ida.key-binding-urlmosip.esignet.authenticator.ida.get-certificates-urlmosip.esignet.authenticator.ida.auth-token-urlmosip.esignet.authenticator.ida.audit-manager-urlmosip.esignet.authenticator.ida.otp-channels(defaults toemail,phone)
HSM
After the IDA URL prompts, the same install script asks which HSM backend the plugin should use for key management. If you've deployed eSignet before, note that this is a change: HSM selection used to happen earlier, as part of install-prereq.sh; it now happens here, as part of installing the plugin itself.
You're offered two choices:
SoftHSM — software-based, installed via Helm. This is the only path the script currently supports.
Hardware HSM — choosing this exits the script immediately with a message to contact the platform team. There's no option to connect an existing hardware HSM through this prompt; that has to be arranged separately.
sunbird-rc-plugin
Choosing the Sunbird RC plugin prompts you for:
mosip.esignet.sunbird-rc.registry-get-url— the URL for the Sunbird registrygetAPI.
HSM
The same install script then asks which HSM backend to use for key management, with the same two choices and the same caveat as above: SoftHSM is the only supported path today, and Hardware HSM exits the script with a message to contact the platform team.
Once these decisions are made, eSignet installation should complete successfully. If an error occurs, delete the existing chart and retry, or resolve the underlying issue first.
OIDC UI Installation
Once eSignet installation completes, you're prompted for the OIDC UI deployment:
esignetthemes— chooseblueororangefor the default eSignet theme (press Enter for the default), or provide a URL for a custom theme.defaultlang— the default language for eSignet (press Enter foren).idprovidername— the name to display in place of "eSignet" on the login page and elsewhere.
Multi-Plugin Deployment (Same Cluster)
Deploying multiple plugins in the same cluster requires a few manual changes to the deployment scripts:
Create a new database for the plugin from the
db_scriptsdirectory:Update
dbName,dbUser,host, andportininit_values.yaml(indb_scripts) for the plugin being deployed.Run
./init_db.shfrom thedb_scriptsdirectory to create the database.
Update the namespace and
mosip-esignet-hostdomain inesignet-global.yamlfor the plugin being deployed.Update the namespace, eSignet service name, and SoftHSM name in the
esignetdirectory'sinstall.shscript for the plugin being deployed.Update the namespace and service name in the
oidc-uidirectory'sinstall.shscript for the plugin being deployed.If these values change for the MOSIP identity plugin, update the namespace and eSignet service name in the
partner-onboarderinstall script too.
Example: Sunbird plugin deployment
Namespace:
esignet-sunbirdmosip-esignet-host:esignet-sunbird.sandbox.mosip.neteSignet service name:
esignet-sunbirdOIDC service name:
oidc-ui-sunbird
Onboarding
If you installed eSignet with the MOSIP identity plugin, MISP onboarding must be completed next. If you're using the mock plugin, no MISP onboarding is required — skip this step.
Onboarding eSignet as a MISP Partner (MOSIP ID Plugin)
The partner-onboarder exchanges certificates for the eSignet MISP partner. It wraps the mosip/partner-onboarder Helm chart and interactively collects configuration before running the onboarding job. This is a manual step you run yourself — it isn't triggered automatically by install-esignet.sh or any other script.
Prerequisites
Report storage (the install script asks which one you want):
S3 — have ready: S3 host, region, bucket name, access key, secret key.
NFS — on your NFS server:
Add to
/etc/exports:Then apply and restart:
Have the NFS server IP and path ready for the script prompt.
Keycloak (choose one):
External — have ready: Keycloak URL, admin username/password, PMS domain (e.g.
api-internal.sandbox.mosip.net), and PMS client secret.Internal — the script automatically copies
keycloak-env-vars,keycloak, andkeycloak-client-secretsfrom thekeycloaknamespace intoesignet. This requires../deploy/copy_cm_func.shto exist and the source configmaps/secrets to already be present in thekeycloaknamespace.
SSL/domain status — you'll be asked whether you have a public domain with a valid SSL certificate. Answering "no" enables insecure mode for endpoints without valid certificates.
values.yaml — key fields to set
Replace the partner identity fields (PARTNER_ORGANIZATION_NAME, PARTNER_TYPE, PARTNER_DOMAIN, PARTNER_MANAGER_USERNAME/PASSWORD) and EXTERNAL_URL with values for your environment. For S3 or NFS report storage, uncomment the corresponding block in values.yaml.
Run it
You'll be walked through, in order:
Public domain/SSL validation (answer
Yorn— an empty answer fails with'flag' was not provided).values.yamlconfirmation.Report storage selection (complete S3 or complete NFS details, not a partial mix of both).
Keycloak setup (external credentials, or internal auto-copy).
Under the hood, the script creates the esignet namespace, disables Istio sidecar injection, updates Helm repos, installs the mosip/partner-onboarder chart, waits for the job to complete, restarts the esignet deployment, and cleans up temporary configmaps.
Troubleshooting
KER-ATH-401: Authentication Failed
Provide the correct mosip-deployment-client secret key.
Certificate validity error
Ask an admin to add a grace period in the configuration.
ida-cred certificate upload error
Expected on a second run — safe to ignore if the certificate already exists.
'flag' was not provided
Answer the SSL prompt with a non-empty Y or n.
Script exits after the storage prompt
Provide complete S3 or complete NFS details, not a partial mix.
copy_cm_func.sh errors
Verify the script exists at ../deploy/ and the source configmaps/secrets exist in the keycloak namespace.
Reference: partner-onboarder on the release-2.0.x branch.
Onboarding Relying Parties
The onboarder script described here works against PMS (Partner Management Service) 1.3.0-beta5 and above. If your deployment runs an earlier PMS version, use Manually Onboarding Relying Parties for PMS 1.2.2.x and Below instead.
See Onboarding Pre-requisites for detailed onboarding steps.
Manually Onboarding Relying Parties for PMS 1.2.2.x and Below
On PMS (Partner Management Service) version 1.2.2.x or earlier, the standard onboarder run won't complete cleanly on its own: the create-oidc-client step fails with an HTTP 404, because it calls a PMS API path that doesn't exist yet on 1.2.2.x. Every other step succeeds normally — only OIDC client creation needs to be finished manually, against the older PMS path.
Verify Deployment
Check the status of eSignet pods after deployment:
eSignet API Test Rig Installation
esignet-apitestrig tests the APIs and the end-to-end functional flow of the eSignet modules — see esignet-apitestrig.
Uninstalling eSignet
To completely remove eSignet from your Kubernetes environment:
Documentation
Onboarding Pre-requisites — before you request registration as a relying party.
Onboarding Form — requesting registration as a relying party.
Integration and Discovery Endpoint (page to be added)
Development and Integration with eSignet — what it takes to connect your application as a relying party.
Last updated
Was this helpful?