Configuration and secrets
Copy .env.example to .env, then replace every development placeholder before any non-local deployment.
Required secret groups
| Variable | Purpose | Production guidance |
|---|---|---|
POSTGRES_PASSWORD | Indexlume metadata database | Generate a unique high-entropy password. |
TYPESENSE_API_KEY | Bundled Typesense administration | Keep server-side; never expose to clients. |
SETUP_TOKEN | One-time owner bootstrap | Generate randomly and retire after setup. |
APP_ENCRYPTION_KEY | Connector credential envelopes | Independent random 32-byte base64 value. |
APP_HMAC_KEY | Projection identity HMACs | Stable independent 32-byte base64 value. |
SEARCH_KEY_PEPPER | Public-key keyed hashes | Stable 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_POSTGRESALLOW_INSECURE_POSTGRESALLOW_PRIVATE_TYPESENSEALLOW_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_BYTESdefaults to 25,000,000 bytes.INGEST_BATCH_DOCUMENTSdefaults to 500.INGEST_BATCH_BYTESdefaults to 1,000,000.INGEST_WORKER_CONCURRENCYdefaults 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.