Skip to content

Configuration

Corvus is configured in the console. A few settings that must be known before it starts are environment variables: set them under environment: in docker-compose.yml and run docker compose up -d.

services:
  corvus:
    image: 'ghcr.io/corvus-gateway/gateway:latest'
    environment:
      CORVUS_ADMIN_HOSTS: corvus.example.com,203.0.113.10
      PUID: 1000
      PGID: 1000
Variable Description
CORVUS_ADMIN_HOSTS Extra names/IPs for the admin console certificate, e.g. corvus.example.com,203.0.113.10
CORVUS_DB_URL Use PostgreSQL instead of SQLite, e.g. postgres://corvus:…@db:5432/corvus
CORVUS_REDIS_HOST Use an external Redis/Valkey for the access queue (several gateways sharing one queue); with CORVUS_REDIS_PASSWORD. Default: built-in
CORVUS_REDIS_PORT Port of the built-in access-queue store on 127.0.0.1 (default 6379). Change it with network_mode: host if the host already uses 6379
CORVUS_IMPORT_DIR Directory with read-only NPM volumes for Import from NPM
CORVUS_RULES_URL Optional URL of a signed managed-rules bundle
CORVUS_ADMIN_ALLOW_ANY=1 Recovery switch if you locked yourself out with the admin allowlist
CORVUS_RESOLVER DNS server for forward hosts. Default: Docker's DNS, or the first nameserver of /etc/resolv.conf with host networking
CORVUS_LOOPBACK=container Make 127.0.0.1/localhost forward hosts point at the container itself instead of the Docker host
CORVUS_IPV6 auto (default): also listen on IPv6 when the system has it · off: IPv4 only · on: always listen on IPv6 and resolve forward hosts to IPv6 addresses too
PUID / PGID User and group the container runs as and that owns ./data (default 10001), e.g. your NAS user
CORVUS_ACME_DIRECTORY ACME directory URL of another CA instead of Let's Encrypt, e.g. a private step-ca https://ca.internal/acme/acme/directory
LEGO_CA_CERTIFICATES PEM file(s) of a private CA the ACME client should trust (mount it into the container), e.g. /data/ca.pem

Data directory

Path in ./data Contents
corvus.db Settings database (SQLite)
secrets/ Encryption keys. Back this up
certs/ Certificates
nginx/ Generated configuration versions
history/ Traffic history and request logs
geoip/ Country database (downloaded)

The container runs as the unprivileged user 10001 (or PUID) and takes ownership of ./data on first start.