This directory contains a complete Docker Compose setup to run the Generiek Issuer Portaal with all its dependencies. It is the easiest way to get the Proof of Concept stack running locally.
For general project information, see the main README.
The example setup orchestrates the following services:
| Service | Port | Description |
|---|---|---|
| Generiek Issuer Portaal | 8564 |
The main issuer portal application |
| Issuer API (walt.id) | 8560 |
API for issuing Verifiable Credentials |
| Verifier API (walt.id) | 8561 |
API for verifying Verifiable Credentials |
| Caddy (wallet proxy) | 8562 |
Reverse proxy serving the Dev Wallet and Wallet API |
| Dev Wallet (walt.id) | 8562 |
Development wallet UI for testing credentials (via Caddy) |
| Wallet API (walt.id) | — | Backend API for the wallet (via Caddy) |
| Revocation API | 8565 |
API for credential revocation |
| Source Connector API | 8566 |
API for connecting to data sources |
| PostgreSQL | 8432 |
Database for wallet and other services |
The Dev Wallet (frontend) and Wallet API (backend) are not directly exposed. Instead, they are served through a Caddy reverse proxy on port 8562. Caddy routes frontend requests to the Dev Wallet and /wallet-api/* requests to the Wallet API backend. This allows both services to be accessed from a single endpoint.
- Docker and Docker Compose installed on your system
.npmrcfile with a GitHub personal access token configured in your home directory, required to install the rijksoverheid-ui-theme package from the GitHub npm registry- Related repositories cloned in the same parent directory:
The expected directory layout:
parent_dir/
├── gfmodules-generieke-issuer-portaal/ # This repository
├── gfmodules-generieke-issuer-revocatie-api/
└── gfmodules-source-connector-api/
From within this directory (example-setup/):
docker compose up -dThe portaal will be available at http://localhost:8564.
The setup uses Docker volumes to persist data:
| Volume | Contents |
|---|---|
postgres_data |
PostgreSQL database data |
generieke-issuer-portaal-data |
Portal application data, including generated .env and keys |
On first run, the .env file and cryptographic keys are automatically created and stored in the volume. On subsequent runs, these persisted files are reused, so your configuration remains consistent across container restarts.
To stop the containers and remove all volumes (this will delete all persisted data):
docker compose down -vThe portal configuration is managed through:
compose-services/generieke-issuer-portaal/.env.coordination— Environment variables for the portal
compose-services/waltid/issuer-api/config/— Issuer API configurationcompose-services/waltid/wallet-api/config/— Wallet API configurationcompose-services/waltid/Caddyfile— Caddy reverse proxy configuration (routes to Dev Wallet and Wallet API)
Check that all required repositories are cloned in the correct location (see Prerequisites).
Ensure your ~/.npmrc file is configured correctly for the rijksoverheid-ui-theme package. See the installation instructions.
If services fail to connect to PostgreSQL, wait for the database to be fully initialized. Check its status with:
docker compose ps postgresView logs for all services:
docker compose logs -fView logs for a specific service:
docker compose logs -f generieke-issuer-portaal