Web Server Configuration

The web.conf file controls the HTTP server: which address and port it binds to, and how JSON responses are encoded. It is always read — there is no feature flag to enable.

File Location

waltid-services/waltid-issuer-api2/config/web.conf

Configuration Options

PropertyTypeDefaultDescription
webHostString"0.0.0.0"Network interface to bind to. 0.0.0.0 = all interfaces; 127.0.0.1 = localhost only.
webPortInt3000TCP port to listen on. The issuer ships a web.conf that sets this to 7002.
humanReadableResultEncodingBooleanfalseWhen true, JSON responses are pretty-printed. Useful for debugging; leave false in production.

3000 is the built-in default in code. The web.conf bundled with the issuer overrides it to 7002, so a standalone issuer listens on 7002 unless you change it.

Example

# web.conf
webHost = "0.0.0.0"
webPort = 7002
humanReadableResultEncoding = false

For local development you can restrict access to your machine and pretty-print responses:

# web.conf
webHost = "127.0.0.1"
webPort = 7002
humanReadableResultEncoding = true

Docker

For the container to be reachable through a published port, the server must bind to all interfaces (webHost = "0.0.0.0", the default) and you map the port on the host:

docker run -p 7002:7002 \
  -v $(pwd)/config:/waltid-issuer-api2/config \
  waltid/issuer-api2:latest

In the bundled Docker Compose stack each service gets its own host port to avoid collisions. Issuer2 is published on 7005 so it doesn't clash with the v1 issuer on 7002:

ServiceCompose port
Wallet API7001
Issuer API (v1)7002
Verifier API (v1)7003
Verifier API27004
Issuer API27005
Wallet API27006

These ports come from .env / docker-compose.yaml, not from web.conf.

Health Check

When the healthchecks feature is enabled (it is by default), the server exposes a liveness endpoint that returns HTTP 200 once it is ready:

curl -i http://localhost:7002/livez
Last updated on July 1, 2026