Skip to main content

Configuration and secrets

Copy .env.example to .env, then replace every development placeholder before any non-local deployment.

Required secret groups​

VariablePurposeProduction guidance
POSTGRES_PASSWORDIndexlume metadata databaseGenerate a unique high-entropy password.
TYPESENSE_API_KEYBundled Typesense administrationKeep server-side; never expose to clients.
SETUP_TOKENOne-time owner bootstrapGenerate randomly and retire after setup.
APP_ENCRYPTION_KEYConnector credential envelopesIndependent random 32-byte base64 value.
APP_HMAC_KEYProjection identity HMACsStable independent 32-byte base64 value.
SEARCH_KEY_PEPPERPublic-key keyed hashesStable independent 32-byte base64 value.

Generate one base64 key on systems with OpenSSL:

openssl rand -base64 32

Run the command separately for each cryptographic variable.

Network policy​

External PostgreSQL and Typesense destinations are denied when they resolve to private or insecure endpoints unless the matching operator-controlled development switch is enabled:

  • ALLOW_PRIVATE_POSTGRES
  • ALLOW_INSECURE_POSTGRES
  • ALLOW_PRIVATE_TYPESENSE
  • ALLOW_INSECURE_TYPESENSE

Do not enable these merely to bypass a failed connection. Use them only when the Indexlume host and target are inside a trusted, isolated network.

Limits​

  • MAX_UPLOAD_BYTES defaults to 25,000,000 bytes.
  • INGEST_BATCH_DOCUMENTS defaults to 500.
  • INGEST_BATCH_BYTES defaults to 1,000,000.
  • INGEST_WORKER_CONCURRENCY defaults to 2.
  • Public search defaults to 120 requests per 60 seconds per key/IP bucket.

Tune only after measuring the complete host—API, worker, PostgreSQL, Redis, Typesense, and source database.