---
title: "Web"
description: "Reference for the web.conf configuration file."
stack: "Community Stack (open source) — version 0.21.0"
stack_version: "0.21.0"
stack_comparison: https://docs.walt.id/community-vs-enterprise.md
canonical_url: https://docs.walt.id/community-stack/issuer2/configurations/config-files/web
generated: 2026-07-20
---
# 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

| Property | Type | Default | Description |
|----------|------|---------|-------------|
| `webHost` | String | `"0.0.0.0"` | Network interface to bind to. `0.0.0.0` = all interfaces; `127.0.0.1` = localhost only. |
| `webPort` | Int | `3000` | TCP port to listen on. The issuer ships a `web.conf` that sets this to `7002`. |
| `humanReadableResultEncoding` | Boolean | `false` | When `true`, JSON responses are pretty-printed. Useful for debugging; leave `false` in production. |

**Info:**

`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

```hocon
# 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:

```hocon
# 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:

```bash
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`:

| Service | Compose port |
|---------|--------------|
| Wallet API | 7001 |
| Issuer API (v1) | 7002 |
| Verifier API (v1) | 7003 |
| Verifier API2 | 7004 |
| Issuer API2 | 7005 |
| Wallet API2 | 7006 |

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:

```bash
curl -i http://localhost:7002/livez
```

## Related Configuration

- [Issuer Service](https://docs.walt.id/community-stack/issuer2/configurations/config-files/issuer-service.md) – Set `baseUrl` to match your public endpoint
- [Features](https://docs.walt.id/community-stack/issuer2/configurations/config-files/features.md) – Enable/disable API features
