frappe_docker/docs/02-setup/container-setup/04-env-variables.md
0x1B40 724d761eb6 docs: move container-setup to 02-setup and integrate setup-options content
Move container-setup directory from 08-reference/ to 02-setup/ to follow
PR feedback. The container-setup documentation provides a more linear
and coherent flow compared to the previous unstructured setup files.

Changes:
- Move container-setup/ from docs/08-reference/ to docs/02-setup/
- Integrate content from setup-options.md into structured flow:
  - Create new 06-setup-examples.md with practical deployment scenarios
  - Enhance 03-start-setup.md with site creation details from setup-options
  - Remove redundant 01-setup-options.md (content now integrated)
- Rename 02-single-server-example.md to 07-single-server-example.md
- Update all cross-references throughout documentation:
  - Update README.md with new structure under Setup section
  - Fix links in site-operations.md and migration docs
  - Add navigation links between container-setup files and examples
- Maintain container-setup's linear flow: overview → build → start → env → overrides
- Add practical examples document (06-setup-examples.md) that follows the container-setup guide

Result: Documentation now follows a clear progression from conceptual
overview through practical examples, with all setup information properly
organized under 02-setup/.
2025-12-02 13:11:49 +05:30

6.6 KiB

Environment Variables Reference

Environment variables configure your Frappe Docker setup. They can be set directly in the container or defined in a .env file referenced by Docker Compose.

Getting Started:

cp example.env .env

Then edit .env and set variables according to your needs.


Required Variables

Variable Purpose Example Notes
FRAPPE_PATH Frappe framework path https://github.com/frappe/frappe
FRAPPE_BRANCH Frappe Branch version-15 See Frappe releases
ERPNEXT_VERSION ERPNext release version v15.67.0 Required although its never used
DB_PASSWORD Password for database root (MariaDB or Postgres) secure_password_123 Not needed if using DB_PASSWORD_SECRETS_FILE

Database Configuration

Variable Purpose Default When to Set
DB_PASSWORD Database root user password 123 Always (unless using secrets file)
DB_PASSWORD_SECRETS_FILE Path to file containing database password Setup mariadb-secrets overrider
DB_HOST Database hostname or IP db (service name) Only if using external database
DB_PORT Database port 3306 (MariaDB) / 5432 (Postgres) Only if using external database

Redis Configuration

Variable Purpose Default When to Set
REDIS_CACHE Redis hostname for caching redis-cache (service name) Only if using external Redis instance
REDIS_QUEUE Redis hostname for job queues and real-time updates redis-queue (service name) Only if using external Redis instance

HTTPS & SSL Configuration

Variable Purpose Default When to Set
LETSENCRYPT_EMAIL Email for Let's Encrypt certificate registration Required if using HTTPS override
SITES List of domains for SSL certificates Required if using reverse proxy override

Format for SITES:

# Single site
SITES=`mysite.example.com`

# Wildcard (any subdomain)
SITES=`{any:.+}`

Site Configuration

Variable Purpose Default When to Set
FRAPPE_SITE_NAME_HEADER Site name for multi-tenant setup $host (resolved from request hostname) When accessing by IP or need explicit site name

Examples:

If your site is named mysite but you want to access it via 127.0.0.1:

FRAPPE_SITE_NAME_HEADER=mysite

If your site is named example.com and you access it via that domain, no need to set this (defaults to hostname).


Image Configuration

Variable Purpose Default Notes
CUSTOM_IMAGE Custom Docker image repository Frappe official image Leave empty to use default
CUSTOM_TAG Custom Docker image tag Latest stable Corresponds to FRAPPE_VERSION
PULL_POLICY Image pull behavior always Options: always, never, if-not-present
RESTART_POLICY Container restart behavior unless-stopped Options: no, always, unless-stopped, on-failure

Nginx Proxy Configuration

Variable Purpose Default Allowed Values
BACKEND Backend service address and port 0.0.0.0:8000 {host}:{port}
SOCKETIO Socket.IO service address and port 0.0.0.0:9000 {host}:{port}
HTTP_PUBLISH_PORT Published HTTP port 8080 Any available port
PROXY_READ_TIMEOUT Upstream request timeout 120s Any nginx timeout value (e.g., 300s, 5m)
CLIENT_MAX_BODY_SIZE Maximum upload file size 50m Any nginx size value (e.g., 100m, 1g)

Real IP Configuration (Behind Proxy)

Use these variables when running behind a reverse proxy or load balancer:

Variable Purpose Default
UPSTREAM_REAL_IP_ADDRESS Trusted upstream IP address for real IP detection 127.0.0.1
UPSTREAM_REAL_IP_HEADER Request header containing client IP X-Forwarded-For
UPSTREAM_REAL_IP_RECURSIVE Enable recursive IP search off