---
title: Configuration
description: The environment variables you set to run Human Plugin — your access key and the connection to your PostgreSQL database.
canonical: https://developer.unico.io/human-plugin/self-hosting/configuration
locale: en
generated_by: markdown-export
---

# Configuration

Your access key and the connection to your database. A missing or invalid value stops the startup.

Human Plugin reads its configuration from the environment once, at startup. Changing a value requires restarting the container.

## Quick reference

The minimum `.env` for a database that uses the defaults below:

```bash title=".env"
HUMAN_API_ACCESS_KEY=<your access key>
POSTGRES_ADDRESS_HOST=<database host>
POSTGRES_PASSWORD=<database password>
```

## Access key

| Variable | Required | Notes |
| --- | --- | --- |
| `HUMAN_API_ACCESS_KEY` | Yes | Your access key. It connects the installation to Unico and identifies your account. No whitespace or control characters. Never logged |

The access key is a secret. Keep it in your secret store and inject it into the container at runtime.

## Database connection

| Variable | Required | Default | Notes |
| --- | --- | --- | --- |
| `POSTGRES_ADDRESS_HOST` | Yes | | Host name or IP address of your PostgreSQL server |
| `POSTGRES_PASSWORD` | Yes | | No whitespace, single quotes, backslashes or control characters. Human Plugin refuses to start with one, without logging the value |
| `POSTGRES_ADDRESS_PORT` | No | `5432` | |
| `POSTGRES_USER` | No | `postgres` | Use a role dedicated to Human Plugin |
| `POSTGRES_DATABASE` | No | `human_plugin` | Use a database dedicated to Human Plugin |
| `POSTGRES_SSL_MODE` | No | `require` | Use `disable` only when PostgreSQL runs on the same host or as a sidecar |

The database must be used by Human Plugin only. The role needs permission to create tables in it: Human Plugin creates and updates its own tables at startup, before it accepts requests.

The password is a secret. Keep it in your secret store, as you do with the access key.

## Everything else

The image sets every other value. Do not set other variables unless Unico asks you to: they are not part of the supported configuration.

## Example

```bash
docker run -d --name human-plugin --stop-timeout 60 -p 127.0.0.1:8080:8080 \
  -e HUMAN_API_ACCESS_KEY \
  -e POSTGRES_ADDRESS_HOST=db.internal \
  -e POSTGRES_USER=human_plugin \
  -e POSTGRES_PASSWORD \
  pkg.unico.run/human-plugin-api:latest
```

`-e NAME` without a value passes the variable from your shell, so the secrets do not appear in the command line.