Configuration
Environmental variables
Required
Variable | Example | Description |
---|---|---|
STAGE |
prod |
Stage is used for building widget js code (e.g. minification) and for separation in logging. |
PC_PORTAL_BASE_URL |
portal.yourdomain.com |
(Sub)domain where you will host PrivateCaptcha portal. |
PC_API_BASE_URL |
api.yourdomain.com |
(Sub)domain where CAPTCHA API (puzzles, verification etc.) will be hosted. |
PC_CDN_BASE_URL |
cdn.yourdomain.com |
(Sub)domain where CDN assets will be hosted (e.g., client-side widget package, pictures, email assets etc.). |
PC_ADMIN_EMAIL |
admin@yourdomain.com |
Email that will be used for admin user to login. Must be valid and functioning. |
PC_EMAIL_FROM |
no-reply@yourdomain.com |
Sender address for various transactional emails (2FA auth, welcome email etc.) |
PC_POSTGRES |
postgres://username:pass@postgres:5432/privatecaptcha |
Postgres connection string for backend DB. You can also specify separate values (see note below). |
PC_CLICKHOUSE_HOST |
clickhouse |
Host (or IP address) where ClickHouse DB is running. |
PC_CLICKHOUSE_DB |
privatecaptcha |
Database for connecting to ClickHouse. |
PC_CLICKHOUSE_USER |
captcha |
Username for connecting to PC_CLICKHOUSE_DB . |
PC_CLICKHOUSE_PASSWORD |
qwerty12345 |
Password for PC_CLICKHOUSE_USER . |
PC_USER_FINGERPRINT_KEY |
abcdef... |
HEX-encoded 64 -character string, used as IV value for hashing user fingerprints. |
PC_API_SALT |
asdf... |
String used as salt for creating puzzle signatures. |
SMTP_ENDPOINT |
smtp://your.provider.com:587 |
Endpoint used for sending transactional email. |
SMTP_USERNAME |
foobar |
Username for SMTP_ENDPOINT . |
SMTP_PASSWORD |
qwerty12345 |
Password for SMTP_USERNAME . |
Note
Instead of PC_POSTGRES
as a connection string, you can specify PC_POSTGRES_HOST
, PC_POSTGRES_DB
, PC_POSTGRES_USER
, PC_POSTGRES_PASSWORD
separately.
Optional
Variable | Example | Description |
---|---|---|
PC_HOST |
localhost |
Host where to listen for HTTP connections. |
PC_PORT |
8080 |
Port where to listen for HTTP connections. |
PC_LOCAL_ADDRESS |
localhost:9090 |
Local “admin” endpoint that hosts Prometheus metrics, manual maintenance jobs triggers and kubernetes liveness/readiness probes. Does not have any auth and must not be exposed publicly. |
PC_RATE_LIMIT_HEADER |
X-Real-Ip |
HTTP header which will contain IP address of the connecting user. Is expected to come from CDN or proxy (e.g., nginx, caddy). If empty, righmost non-private address of X-Forwarded-For will be used. |
PC_RATE_LIMIT_RPS |
1.0 |
Leak rate per second (float) of default API rate limiter. |
PC_RATE_LIMIT_BURST |
20 |
Burst of default API rate limiter. |
PC_CLICKHOUSE_ADMIN |
captcha_admin |
Separate username for ClickHouse to run migrations with. If empty, PC_CLICKHOUSE_USER will be used. |
PC_CLICKHOUSE_ADMIN_PASSWORD |
qwerty12345 |
Password for PC_CLICKHOUSE_ADMIN . |
PC_POSTGRES_ADMIN |
captcha_admin |
Separate username for Postgres to run migrations with. If empty, PC_POSTGRES_USER (or PC_POSTGRES ) will be used. |
PC_POSTGRES_ADMIN_PASSWORD |
qwerty12345 |
Password for PC_POSTGRES_ADMIN . |
PC_MAINTENANCE_MODE |
true |
Boolean (1 , y , true ) value if server is in maintenance mode, during which communications with databases are offline, but APIs (and cache) are functional. |
PC_REGISTRATION_ALLOWED |
true |
Boolean (1 , y , true ) value if this instance of PrivateCaptcha has registration page open. |
PC_HEALTHCHECK_INTERVAL |
60 |
Integer value that defines how frequently in seconds we perform internal health check of DB instances and http server. Defaults to 5 in prod and 60 in dev. |
PC_VERBOSE |
true |
Boolean (1 , y , true ) to indicate verbose logging (trace level). |
Note
“Default” rate limiter means the one for public APIs (/puzzle
, /siteverify
and some others). Various other APIs have pre-configured hardcoded limits, compiled in.
Warning
It’s not recommended to modify leak rate configuration unless you really know what you’re doing.
Last updated on