Skip to main content

Configuration

Each component is configured independently. This page documents the key settings for deploying on your own origin.

Wallet Frontend

The frontend is configured entirely through environment variables passed to the Docker container. These are injected into the served HTML at container startup — no rebuild required.

Required Variables

VariableExampleDescription
WALLET_BACKEND_URLhttps://wallet.example.com/apiURL of the wallet backend REST API
WEBAUTHN_RPIDwallet.example.comWebAuthn Relying Party ID — must match your domain
STATIC_PUBLIC_URLhttps://wallet.example.comPublic URL of this wallet instance
STATIC_NAMEMy Org WalletDisplay name shown in the wallet UI

Transport Configuration

VariableDefaultDescription
WALLET_ENGINE_URLSame as WALLET_BACKEND_URLWebSocket engine URL (set if running engine on a separate host)
WS_URLAuto-derived from WALLET_ENGINE_URLExplicit WebSocket URL override
ALLOWED_TRANSPORTShttp_proxy,websocket,directComma-separated list of enabled OID4VCI/VP transports
TRANSPORT_PREFERENCETransport priority order

Protocol Settings

VariableDefaultDescription
OPENID4VCI_REDIRECT_URIOID4VCI redirect URI for authorization code flows
OPENID4VCI_PROOF_TYPE_PRECEDENCEattestation,jwtProof type preference order
OPENID4VP_SAN_DNS_CHECKEnable SAN DNS verification for OID4VP verifier certificates
OPENID4VP_SAN_DNS_CHECK_SSL_CERTSEnable SSL certificate SAN validation
DID_KEY_VERSIONjwk_jcs-pubDID key format

Trust and Registry

VariableDefaultDescription
DELEGATE_TRUST_TO_BACKENDDelegate trust evaluation to the backend's AuthZEN proxy instead of direct evaluation
VCT_REGISTRY_URLURL of the VCTM registry for credential type metadata

Privacy (OHTTP)

VariableDescription
OHTTP_KEY_CONFIGOblivious HTTP key configuration endpoint
OHTTP_RELAYOHTTP relay endpoint for privacy-preserving metadata fetches

UI and Branding

VariableDefaultDescription
I18N_WALLET_NAME_OVERRIDEOverride wallet name in all translations
MULTI_LANGUAGE_DISPLAYEnable language selector
LOGIN_WITH_PASSWORDShow legacy username/password login (not recommended)
SHOW_PWA_INSTALL_PROMPTPrompt users to install as PWA on login page
POLICY_LINKSTerms of service and policy links (LABEL::URL,LABEL::URL)
DISPLAY_CONSOLEEnable browser console output
LOG_LEVELFrontend log level

Mobile App Association

VariableDescription
WELLKNOWN_APPLE_APPIDSApple app association for iOS deep linking
WELLKNOWN_ANDROID_PACKAGE_NAMES_AND_FINGERPRINTSAndroid asset links for app deep linking

Nginx Security Headers

VariableDefaultDescription
NGINX_SEC_HEADER_FILECustom security headers file
NGINX_CSP_ENFORCE_RESOURCE_HTTPSEnforce HTTPS in Content-Security-Policy
NGINX_ENABLE_HSTSEnable HTTP Strict Transport Security

Wallet Backend

The backend is configured via a YAML config file and/or environment variables with the prefix WALLET_. Environment variables override config file values.

Server

Env VarConfig KeyDefaultDescription
WALLET_SERVER_HOSTserver.host0.0.0.0Bind address
WALLET_SERVER_PORTserver.port8080HTTP API port
WALLET_SERVER_BASE_URLserver.base_urlPublic base URL of the backend
WALLET_SERVER_RP_IDserver.rp_idlocalhostWebAuthn Relying Party ID — must match frontend's WEBAUTHN_RPID
WALLET_SERVER_RP_ORIGINserver.rp_originhttp://localhost:8080WebAuthn RP origin — must match the user-facing origin
WALLET_SERVER_ENGINE_PORTserver.engine_port8082WebSocket engine port
WALLET_SERVER_ADMIN_PORTserver.admin_port8081Admin API port
WALLET_SERVER_ADMIN_TOKENserver.admin_tokenAuto-generatedBearer token for admin API access

Storage

Env VarConfig KeyDefaultDescription
WALLET_STORAGE_TYPEstorage.typememoryStorage backend: memory, mongodb
WALLET_STORAGE_MONGODB_URIstorage.mongodb.urimongodb://localhost:27017MongoDB connection string
WALLET_STORAGE_MONGODB_DATABASEstorage.mongodb.databasewalletMongoDB database name

For production, always use mongodb. The memory backend is for development only.

MongoDB Password from File

For Kubernetes deployments, use storage.mongodb.password_path to load the password from a mounted secret file rather than embedding it in the connection string.

Authentication

Env VarConfig KeyDefaultDescription
WALLET_JWT_SECRETjwt.secretJWT signing secret — must be set in production
WALLET_JWT_SECRET_PATHjwt.secret_pathLoad JWT secret from file

Trust

Env VarConfig KeyDefaultDescription
WALLET_TRUST_PDP_URLtrust.pdp_urlURL of the go-trust AuthZEN PDP (e.g., http://go-trust:6001)
WALLET_TRUST_REGISTRY_URLtrust.registry_urlURL of the VCTM registry

Session Store

Env VarConfig KeyDefaultDescription
WALLET_SESSION_STORE_TYPEsession_store.typememorymemory or redis
WALLET_SESSION_STORE_REDIS_ADDRESSsession_store.redis.addresslocalhost:6379Redis address (required if type is redis)

Use redis when running multiple backend replicas to share WebSocket session state.

HTTP Client Security

Env VarConfig KeyDefaultDescription
WALLET_HTTP_CLIENT_ALLOW_PRIVATE_IPShttp_client.allow_private_ipsfalseAllow HTTP requests to private/loopback IPs (SSRF protection)
WALLET_HTTP_CLIENT_ALLOW_HTTPhttp_client.allow_httpfalseAllow plain HTTP for metadata resolution
Security Defaults

Both SSRF protection and HTTPS enforcement are enabled by default. Only disable these in controlled development environments.

Features

Env VarConfig KeyDefaultDescription
WALLET_FEATURES_PROXY_ENABLEDfeatures.proxy_enabledtrueEnable the /proxy endpoint for OID4VCI/VP protocol proxying
WALLET_FEATURES_CREDENTIAL_STORAGE_ENABLEDfeatures.credential_storage_enabledfalseEnable server-side credential storage

Multi-Role Deployment

When running roles in separate containers, configure cross-service discovery:

external_urls:
backend_url: "https://wallet-api.example.com"
engine_url: "wss://wallet-ws.example.com"
registry_url: "https://wallet-registry.example.com"
admin_url: "https://wallet-admin.internal.example.com"

Logging

Env VarConfig KeyDefaultDescription
WALLET_LOGGING_LEVELlogging.levelinfoLog level: debug, info, warn, error

Go-Trust

Go-trust is configured via CLI flags, environment variables (prefix GT_), or a YAML config file. Full documentation is at Go-Trust Configuration.

Essential Settings

Env VarDefaultDescription
GT_HOST0.0.0.0Listen address
GT_PORT6001Listen port
GT_EXTERNAL_URLPublic URL for the AuthZEN discovery endpoint
GT_LOG_LEVELinfoLog level
GT_LOG_FORMATtextLog format (text or json)

Trust Registries

Go-trust supports multiple trust registry types simultaneously. Configure them via CLI flags or config file:

Registry TypePurposeInput
ETSI TSLEU Trusted Lists (X.509 certificate validation)PEM certificate bundle file
ETSI LoTELists of Trusted Entities (JSON-based)URLs or local files
OpenID FederationTrust chain resolutionFederation anchor URLs
DID:webDecentralized Identifier resolutionAutomatic (network)
DID:webvhDID with verifiable historyAutomatic (network)
WhitelistSimple URL-based trustYAML/JSON file

Example with an ETSI certificate bundle:

gt --etsi-cert-bundle=/etc/go-trust/trusted-certs.pem

For detailed registry configuration, see the go-trust example config.