Presswerk is configured via environment variables in the .env file.
| Variable | Required | Default | Description |
|---|
APP_DOMAIN | Yes | — | Public domain for the application |
APP_VERSION | No | latest | Docker image tag |
APP_PORT | No | 8080 | Host port for the application |
| Variable | Required | Default | Description |
|---|
DB_PASSWORD | Yes | — | PostgreSQL password |
DB_USER | No | presswerk | PostgreSQL username |
DB_NAME | No | presswerk | PostgreSQL database name |
| Variable | Required | Default | Description |
|---|
KEYCLOAK_HOSTNAME | Yes | — | Public domain for Keycloak (e.g. auth.your-domain.com) |
KEYCLOAK_PUBLIC_URL | Yes | — | Full public URL (e.g. https://auth.your-domain.com) |
KEYCLOAK_ADMIN_PASSWORD | Yes | — | Keycloak admin console password |
KEYCLOAK_ADMIN_USER | No | admin | Keycloak admin username |
KEYCLOAK_PORT | No | 8081 | Host port for Keycloak |
Email is required for scheduled report delivery.
| Variable | Required | Default | Description |
|---|
SMTP_HOST | No | — | SMTP server hostname |
SMTP_PORT | No | 587 | SMTP port (587 for STARTTLS) |
SMTP_USERNAME | No | — | SMTP authentication username |
SMTP_PASSWORD | No | — | SMTP authentication password |
SMTP_FROM | No | noreply@presswerk.app | Sender email address |
| Provider | Host | Port | Notes |
|---|
| Resend | smtp.resend.com | 587 | API key as password |
| Microsoft 365 | smtp.office365.com | 587 | Requires app password or OAuth |
| Google Workspace | smtp.gmail.com | 587 | Requires app password |
| Custom | any | 587 | Any server supporting STARTTLS |
Without a license, Presswerk runs in the Free tier (1 user, 5 reports, 1 data source, no schedules).
| Variable | Required | Default | Description |
|---|
LICENSE_FILE | No | — | Path to license key file inside the container |
LICENSE_PUBLIC_KEY | No | — | Base64-encoded public key for license verification |
Via UI: Log in as admin → License in the sidebar → paste license key → Activate
Via API:
curl -X POST https://your-domain.com/api/license/activate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"licenseKey":"<your-license-key>"}'
Via file mount:
# Add to the app service in docker-compose.yml
- ./license.key:/app/license.key:ro
LICENSE_FILE: /app/license.key
| Tier | Users | Reports | Data Sources | Schedules |
|---|
| Free | 1 | 5 | 1 | No |
| Starter | 5 | Unlimited | Unlimited | Yes |
| Business | 15 | Unlimited | Unlimited | Yes |
| Enterprise | 50 | Unlimited | Unlimited | Yes |
| Role | Description |
|---|
admin | Tenant administrator — manages users, environments, permissions |
| (none) | Regular user — access controlled by folder permissions |