IDEnlight is a sofware to learn the concept of Self-Sovereign Identity. It acts as a controller for the Aries Cloud Agent Python (https://github.com/hyperledger/aries-cloudagent-python).
This application can be served as a multi container application. See figure below.
The following containers are required:
- Aries Cloud Agent (ACA-Py)
- Indy Tails Server
- VON-Network (BCovrin Test Ledger will be used)
- Controller Frontend
- Controller Webhook Microservice
ACA-Py will be served without a storage. It's probably useful to serve it with a storage to get access to e.g. credential definitions after restarting the Agent.
- Pull the ACA-Py image
- Run the container (Example of how to run the container below)
docker run --detach --name=acapy -p 11000:11000 -p <host_name>:8000:8000 bcgovimages/aries-cloudagent:py3.9-indy-1.16.0_0.9.0 start --label idenlight --tails-server-base-url http://<host_name>:6543 --webhook-url http://<host_name>:5001/webhooks -it http 0.0.0.0 8000 -ot http --admin 0.0.0.0 11000 --admin-insecure-mode --genesis-url http://test.bcovrin.vonx.io/genesis --seed <your_seed> --endpoint http://<host_name>:8000/ --debug-connections --auto-provision --wallet-type askar --wallet-name idenlight --wallet-key secret --auto-accept-invites --auto-accept-requests
In this example the indy tails server is running on http://<host_name>:6543. The webhook microservice is running on http://<host_name>:5001/webhooks. Furthermore we connecting to the BCovrin Test Ledger (http://test.bcovrin.vonx.io/). An own VON-Network can be served as well.
The indy tails server is required to revoke credentials. You can deploy it as follows:
- Clone the repository (https://github.com/bcgov/indy-tails-server)
git clone https://github.com/bcgov/indy-tails-server.git
- Navigate to the folder, define the environment variable GENESIS_URL and start the docker script
cd indy-tails-server
GENESIS_URL=http://test.bcovrin.vonx.io/genesis ./docker/manage start
- Clone this repository
git clone https://github.com/bieleric/idenlight.git
or
git clone https://github.com/hensch7/idenlight.git
- Navigate to the folder webhook_service
cd webhook_service
- Build the container
docker build -t webhook_service .
- Run the container
docker run --name=webhook_service -p 5001:5001 -d webhook_service
- After cloning this repository, navigate to the folder frontend
cd frontend
- Create a config.json with the following key values pairs. You probably have to change the ports if you expose the containers on others.
{
"frontend_url": "https://demo.id-ideal.de",
"acapy_api": "http://<host_name>:11000",
"acapy_service_endpoint": "http://<host_name>:8000",
"webhook_service": "ws://<host_name>:5001",
"credential": {
"credentialDefinitionID": "<cred_def_id>",
"credentialSchemaID": "<cred_schema_id>",
"schemaIssuerDID": "<schema_issuer_did>",
"issuerDID": "<issuer_did>",
"verkey": "<verkey>",
"schemaName": "<schema_name>"
}
}
- Build the container
docker build -t frontend .
- Run the container
docker run --detach --name=frontend -p <host_name>:8080:8080 frontend
After deployment there could be an error due to the storage that is not used as mentioned above. Therefore you probably need to create a new credentials definition (and optionally save it in a database if you want to reuse it after a restart of ACA-Py) and add it to the config.json
For development you should also deploy ACA-Py and the Indy Tails Server as described above and edit the config.json properly.
For further informations see