Files
Panama/user/agents/skills/infisical-self-host/references/environment-variables.md
T
Gabriel Brown 89761a7da3 Keep the personal half of the desktop in one place, and ask before installing it
Agent instructions, skills, SSH host aliases and expansion triggers are worth
having identical on every machine one person owns, and belong in none of the
shared configuration. They live in user/ now, with a manifest saying where each
piece goes and a link-user stage that puts it there.

That stage does nothing unless the machine said yes. Somebody who clones Panama
to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was;
the question names the destinations and defaults to no. Anything displaced goes
to config/old rather than being deleted.

~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one
file, which is the drift this exists to prevent.

Also adds the vitals toggles for the battery and Claude usage readouts, which
had preferences and no way to reach them.
2026-08-22 08:54:43 -04:00

295 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Environment Variables Reference
This guide covers all environment variables used to configure Infisical self-hosted deployments.
## Essential Security Keys
### ENCRYPTION_KEY
**Required** Master encryption key for all secrets at rest.
- **Format**: 16 bytes as hex (32 hex characters)
- **Example**: `a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8`
- **Generation**: `openssl rand -hex 16`
- **Critical Notes**:
- Cannot be recovered if lost
- Must be stable across deployments and upgrades
- Rotate using Infisical's key rotation procedures (enterprise feature)
- Back up securely in a separate location
### AUTH_SECRET
**Required** Secret key for signing session tokens and JWTs.
- **Format**: 32 bytes as base64
- **Example**: `VUJrQV9FbmNyeXB0aW9uS2V5XzMyQnl0ZXNfQmFzZTY0RW5jb2RlZA==`
- **Generation**: `openssl rand -base64 32`
- **Notes**:
- Used for all authentication tokens
- Must be stable and unique per deployment
## Database Configuration
### DB_CONNECTION_URI
**Required** PostgreSQL connection string.
- **Format**: `postgresql://user:password@host:port/database`
- **Example**: `postgresql://infisical:[email protected]:5432/infisical`
- **Requirements**:
- PostgreSQL 14 or newer
- `uuid-ossp` extension enabled: `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`
- `pgcrypto` extension enabled: `CREATE EXTENSION IF NOT EXISTS pgcrypto;`
### DB_ROOT_CERT
Optional Base64-encoded PEM certificate for SSL/TLS verification of PostgreSQL.
- **Format**: Base64-encoded SSL certificate
- **Usage**: For databases with self-signed or custom CA certificates
- **Example**:
```bash
cat /path/to/ca.pem | base64 -w 0
```
- **Notes**: Verify SSL/TLS connections for managed database services (RDS, Cloud SQL, Azure Database)
### DB_READ_REPLICAS
Optional JSON array of read-only database replicas.
- **Format**: JSON array of connection objects
- **Example**:
```json
[
{"connectionString": "postgresql://user:pass@replica1:5432/infisical"},
{"connectionString": "postgresql://user:pass@replica2:5432/infisical"}
]
```
- **Use Case**: Distribute read-heavy workloads across multiple database replicas
- **Requirements**: Read replicas must be in sync with primary
## Redis Configuration
### REDIS_URL
**Required** Redis connection string.
- **Format**: `redis://[:password@]host:port[/db]` or `rediss://...` for TLS
- **Examples**:
- Standard: `redis://redis.example.com:6379`
- With auth: `redis://:password@redis.example.com:6379`
- TLS: `rediss://redis.example.com:6380`
- **Requirements**: Redis 6.2 or newer
- **Important**: Redis Cluster mode is NOT supported; use standalone or Sentinel
### Redis Sentinel (High Availability)
Use these variables to configure Redis Sentinel for HA without Cluster mode.
#### REDIS_SENTINEL_HOSTS
Comma-separated list of Sentinel node addresses.
- **Format**: `host1:port1,host2:port2,host3:port3`
- **Example**: `sentinel1.example.com:26379,sentinel2.example.com:26379,sentinel3.example.com:26379`
#### REDIS_SENTINEL_MASTER_NAME
Name of the Redis master monitored by Sentinel.
- **Example**: `mymaster`
- **Default**: `mymaster` (if not specified)
#### REDIS_SENTINEL_ENABLE_TLS
Enable TLS for Sentinel connections.
- **Format**: `true` or `false`
- **Default**: `false`
#### REDIS_SENTINEL_USERNAME
Username for Sentinel authentication (if required).
#### REDIS_SENTINEL_PASSWORD
Password for Sentinel authentication.
## SMTP Configuration
SMTP is required for email-based features. Without SMTP configured, the following features are disabled:
- Multi-factor authentication (MFA) via email
- Email invitations
- Suspicious login alerts
- Password reset emails
### SMTP_HOST
**Required if SMTP enabled** SMTP server hostname.
- **Example**: `smtp.gmail.com`
### SMTP_PORT
SMTP server port.
- **Default**: `587` (STARTTLS)
- **Common Values**:
- `587` — STARTTLS (recommended)
- `465` — SMTPS (implicit TLS)
- `25` — Unencrypted (not recommended for production)
### SMTP_USERNAME
Username for SMTP authentication.
### SMTP_PASSWORD
Password for SMTP authentication.
### SMTP_FROM_ADDRESS
**Required if SMTP enabled** Email address from which emails are sent.
- **Example**: `noreply@infisical.com`
### SMTP_FROM_NAME
Display name for the sender.
- **Example**: `Infisical`
- **Default**: `Infisical`
### SMTP_REQUIRE_TLS
Require TLS connection (STARTTLS).
- **Format**: `true` or `false`
- **Default**: `true`
### SMTP_IGNORE_TLS
Ignore TLS certificate errors (useful for self-signed certificates in development).
- **Format**: `true` or `false`
- **Default**: `false`
- **Warning**: Do not use in production
## OAuth/SSO Configuration
### Google Login
To enable Google OAuth login, register an OAuth 2.0 application in Google Cloud Console.
#### CLIENT_ID_GOOGLE_LOGIN
Google OAuth client ID.
#### CLIENT_SECRET_GOOGLE_LOGIN
Google OAuth client secret.
### GitHub Login
Register an OAuth application at https://github.com/settings/developers.
#### CLIENT_ID_GITHUB_LOGIN
GitHub OAuth client ID.
#### CLIENT_SECRET_GITHUB_LOGIN
GitHub OAuth client secret.
### GitLab Login
Register an OAuth application in your GitLab instance (or gitlab.com).
#### CLIENT_ID_GITLAB_LOGIN
GitLab OAuth client ID.
#### CLIENT_SECRET_GITLAB_LOGIN
GitLab OAuth client secret.
## Authentication Timeouts
### JWT_AUTH_LIFETIME
Lifetime of access tokens.
- **Default**: `15m` (15 minutes)
- **Format**: Valid Node.js duration string (e.g., `30m`, `1h`)
### JWT_REFRESH_LIFETIME
Lifetime of refresh tokens.
- **Default**: `24h` (24 hours)
- **Format**: Valid Node.js duration string
## Enterprise and Licensing
### LICENSE_KEY
License key for Infisical Enterprise features.
- **Format**: Provided by Infisical upon enterprise subscription
- **Features Enabled**: SAML, RBAC advanced features, audit logs, IP allowlisting, etc.
## FIPS 140-2 Compliance
FIPS mode is enabled using the `infisical/infisical:latest-fips` image with additional Node.js configuration.
### FIPS_ENABLED
Enable FIPS 140-2 mode.
- **Format**: `true` or `false`
- **Default**: `false`
- **Requirement**: Must use `infisical/infisical:latest-fips` image
### NODE_OPTIONS
Node.js runtime options for FIPS compliance.
- **For FIPS Mode**:
```
NODE_OPTIONS="--max-old-space-size=8192 --force-fips"
```
- **Notes**:
- `--force-fips` enables FIPS mode
- `--max-old-space-size` allocates memory for the Node.js heap (adjust based on load)
## Telemetry
### TELEMETRY_ENABLED
Enable or disable telemetry collection.
- **Format**: `true` or `false`
- **Default**: `true`
### OTEL_EXPORT_TYPE
Export destination for OpenTelemetry metrics.
- **Options**: `prometheus`, `otlp`
- **Example**: `prometheus` exports metrics on `/metrics` endpoint for Prometheus scraping
## Web and Security
### SITE_URL
**Required** Public URL of the Infisical instance.
- **Format**: Full URL (e.g., `https://secrets.example.com`)
- **Usage**: Used for email links, OAuth redirects, and frontend configuration
### CORS_ALLOWED_ORIGINS
Comma-separated list of allowed CORS origins.
- **Format**: Full URLs (e.g., `https://app.example.com,https://admin.example.com`)
- **Default**: Allows same origin
- **Notes**: Whitelist specific origins in production; avoid wildcards (`*`)
### ALLOW_INTERNAL_IP_CONNECTIONS
Allow connections to internal IP addresses (useful for Kubernetes).
- **Format**: `true` or `false`
- **Default**: `false`
- **Use Case**: Kubernetes nodes using internal IPs, local Redis/PostgreSQL on private networks
## Summary: Minimal Configuration
For a minimal production deployment, these environment variables are required:
```bash
# Security
ENCRYPTION_KEY="<16-byte-hex>"
AUTH_SECRET="<base64-32-byte>"
# Database
DB_CONNECTION_URI="postgresql://user:pass@host:5432/infisical"
# Redis
REDIS_URL="redis://host:6379"
# Web
SITE_URL="https://secrets.example.com"
# SMTP (required for email features)
SMTP_HOST="smtp.example.com"
SMTP_PORT="587"
SMTP_USERNAME="[email protected]"
SMTP_PASSWORD="password"
SMTP_FROM_ADDRESS="[email protected]"
```
For additional features (OAuth, FIPS, Sentinel, etc.), add the relevant variables from the sections above.