Configuration
Configuring your Virtual Signer with environment variables
The virtual signer can be configured with environment variables during deployment.
Note: The
VS_*prefix is preferred for all environment variables. LegacyEDG_VS_*variables are supported for backward compatibility.
Contact your io.finnet representative for more information if you would like to understand more about these options.
Configuration | Description |
|---|---|
Port
| The TCP port opened by the Virtual Signer, part of the URL exposed for device registration. |
MPCCoreHost
| The host name, that will be used by Virtual Signer light instance, to connect to Virtual Signer server instance. |
MPCCorePort
| Port number, that will be used by Virtual Signer light instance, to connect to Virtual Signer server instance. |
LogLevel
| The log level of the Virtual Signer. Valid values are |
OrgId
| Optional. The organization ID used when registering a device on launch. Required if |
InitialDevice
| Optional. Device name to be registered on launch. Requires |
AuthClientId
| The client ID used for authentication along with |
AuthClientSecret
| The client secret used for authentication with |
ApprovalMode
| Determines approval mechanism. Valid values: |
ExternalReshareApprovalURL
| The URL of a user API that approves or rejects reshare requests. Required if |
ExternalTransactionApprovalURL
| The URL of a user API that approves or rejects transactions. Required if |
ApprovalHTTPPublicKeyHex
| The EdDSA P256 public key (hex-encoded) used to verify HTTP responses from the user API when |
ApprovalNodeRPCAddress
| Required for |
ApprovalSmartContractAddress
| Required for |
PrometheusPort
| Optional. |
Cloud Storage Configuration
For AWS and Azure deployments, cloud blob storage can be used instead of local filesystem storage.
| Configuration | Description |
|---|---|
STORAGE_BUCKET_URL
| Cloud storage URL. Examples:
When not set, filesystem storage is used ( |
Recommended: For AWS S3, enable bucket encryption using a customer-managed key in AWS KMS.
Azure Secure Key Release (SKR) Configuration
For Azure deployments, SKR provides hardware-attested encryption for data at rest. SKR is automatically enabled when all three required parameters are set.
| Configuration | Required | Description |
|---|---|---|
VS_SKR_AKV_ENDPOINT | Yes* | Azure Key Vault URL (e.g., https://your-vault.vault.azure.net) |
VS_SKR_MAA_ENDPOINT | Yes* | Azure Attestation URL (e.g., https://sharedeus.eus.attest.azure.net) |
VS_SKR_KEY_ID | Yes* | Key identifier in Azure Key Vault (exportable symmetric key) |
VS_SKR_ENDPOINT | No | SKR sidecar endpoint (default: http://localhost:8080) |
VS_SKR_ACCESS_TOKEN | No | Bearer token for sidecar auth (when managed identity unavailable) |
* Required to enable SKR. When all three are set, SKR encryption is automatically enabled.
Self-Hosted Encryption at Rest
For self-hosted deployments without Azure infrastructure, you can enable encryption at rest using a static AES-256-GCM key.
| Configuration | Description |
|---|---|
VS_ENCRYPTION_KEY | Hex-encoded 32-byte (64 character) AES-256 key for encrypting data at rest. Generate with: |
Important: Store this key securely (e.g., Docker secrets, HashiCorp Vault). If lost, encrypted data cannot be recovered.
Note:
VS_ENCRYPTION_KEYand SKR (VS_SKR_*) are mutually exclusive. Use one or the other, not both.
Docker Compose example:
environment:
# Generate with: openssl rand -hex 32
VS_ENCRYPTION_KEY: "your-64-character-hex-key-here"Backward compatibility: When encryption is enabled, the Virtual Signer can still read existing plaintext data. New writes are encrypted. Re-saving a file encrypts it opportunistically.
Updated 8 days ago