This page lists the variables of the node environment template deploy/env.example and maps each one to its field in src/cluster_erp/config/settings.py. It also lists the variables that the gunicorn configuration and the shell scripts read straight from the environment. Values are never shown: every value cell is the placeholder <value>. Types, defaults, and the readers of every field are in the settings reference.
Scope and source¶
- Defined in:
deploy/env.example(the template) andsrc/cluster_erp/config/settings.py(Settings). - Count: 88 distinct
CLUSTER_ERP_names in the template, counted withgrep -oE "CLUSTER_ERP_[A-Z0-9_]+" deploy/env.example | sort -u. Of these, 77 are value lines, 6 are commented value lines, and 5 appear only inside a comment (the S3 variables). Every one of the 88 maps to aSettingsfield.
The Template column gives the line in deploy/env.example and whether the line is commented. The Meaning column is one sentence taken from the code comment of the field. The Source column is the field line in settings.py. A variable name is CLUSTER_ERP_ followed by the field name in upper case, read case-insensitively (src/cluster_erp/config/settings.py:64-70).
File format¶
- systemd reads the file with
EnvironmentFile=. A line that starts with#or;is a comment; a#after a value becomes part of the value. A value with spaces,#, or double quotes is wrapped in single quotes (deploy/env.example:6-10). - The same file works as a
.envfile for a local run (deploy/env.example:11). install.shrefuses to start the service while any value line still contains a<...>placeholder; comment lines are ignored by this check (deploy/install.sh:176-179).- systemd hands the file to the process only at start, so
install.shrestarts instead of reloading when the file is newer than the running service (deploy/install.sh:228-243).
Variables of the template¶
Mode, secrets, and database¶
Template lines 13 to 38: the run mode, the signing and sealing keys, two optional switches, and the database connection.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_DEBUG |
debug |
<value> |
line 13 | Debug mode: reload, API docs pages, verbose logs. | src/cluster_erp/config/settings.py:176 |
CLUSTER_ERP_MULTI_TENANT |
multi_tenant |
<value> |
line 15 | Turns on one database per tenant with a control-plane database. | src/cluster_erp/config/settings.py:82 |
CLUSTER_ERP_SECRET_KEY |
secret_key |
<value> |
line 18 | Signing secret; must be set, at least 32 characters, and not weak outside debug mode. | src/cluster_erp/config/settings.py:186 |
CLUSTER_ERP_MAIL_ENCRYPTION_KEY |
mail_encryption_key |
<value> |
line 23 | Key that seals stored mail account secrets; required in multi-tenant mode. | src/cluster_erp/config/settings.py:408 |
CLUSTER_ERP_CONTROL_ENCRYPTION_KEY |
control_encryption_key |
<value> |
line 24 | Seals control-plane secrets that must be read back. | src/cluster_erp/config/settings.py:362 |
CLUSTER_ERP_RFQ_PORTAL_TOKEN_DAYS |
rfq_portal_token_days |
<value> |
line 26, commented | Lifetime of supplier-portal invitation links. | src/cluster_erp/config/settings.py:364 |
CLUSTER_ERP_CONSOLE_BACKUP_ENABLED |
console_backup_enabled |
<value> |
line 28, commented | Allows on-demand backups from the operator console. | src/cluster_erp/config/settings.py:225 |
CLUSTER_ERP_DB_HOST |
db_host |
<value> |
line 31 | Host of the default PostgreSQL server. | src/cluster_erp/config/settings.py:72 |
CLUSTER_ERP_DB_USER |
db_user |
<value> |
line 33 | Database role of the application. | src/cluster_erp/config/settings.py:75 |
CLUSTER_ERP_DB_PASSWORD |
db_password |
<value> |
line 34 | Password of the database role. | src/cluster_erp/config/settings.py:76 |
CLUSTER_ERP_CONTROL_DB_NAME |
control_db_name |
<value> |
line 35 | Name of the control-plane database. | src/cluster_erp/config/settings.py:83 |
CLUSTER_ERP_TENANT_DB_PREFIX |
tenant_db_prefix |
<value> |
line 36 | Prefix of tenant database names. | src/cluster_erp/config/settings.py:84 |
CLUSTER_ERP_PUBLIC_BASE_URL |
public_base_url |
<value> |
line 38 | Absolute base URL used in verification links; empty means relative links. | src/cluster_erp/config/settings.py:292 |
Files and request size¶
Template lines 40 to 60: where the node stores files, the S3 alternative, and the request body limit.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_STORAGE_BACKEND |
storage_backend |
<value> |
line 45 | File storage: local or s3. | src/cluster_erp/config/settings.py:347 |
CLUSTER_ERP_STORAGE_ENCRYPTION_KEY |
storage_encryption_key |
<value> |
line 51 | Key for encryption at rest of stored files; 64 hex characters; required in multi-tenant mode. | src/cluster_erp/config/settings.py:359 |
CLUSTER_ERP_STORAGE_PATH |
storage_path |
<value> |
line 52 | Folder of the local storage backend. | src/cluster_erp/config/settings.py:348 |
CLUSTER_ERP_SIGNUP_MAIL_SPOOL_DIR |
signup_mail_spool_dir |
<value> |
line 53 | Folder of spooled verification mails. | src/cluster_erp/config/settings.py:284 |
CLUSTER_ERP_S3_BUCKET |
s3_bucket |
<value> |
line 56, comment only | S3 bucket; required when storage_backend is s3. | src/cluster_erp/config/settings.py:349 |
CLUSTER_ERP_S3_ENDPOINT_URL |
s3_endpoint_url |
<value> |
line 57, comment only | S3 endpoint for S3-compatible stores. | src/cluster_erp/config/settings.py:353 |
CLUSTER_ERP_S3_REGION |
s3_region |
<value> |
line 57, comment only | S3 region. | src/cluster_erp/config/settings.py:350 |
CLUSTER_ERP_S3_ACCESS_KEY |
s3_access_key |
<value> |
line 58, comment only | S3 access key. | src/cluster_erp/config/settings.py:351 |
CLUSTER_ERP_S3_SECRET_KEY |
s3_secret_key |
<value> |
line 58, comment only | S3 secret key. | src/cluster_erp/config/settings.py:352 |
CLUSTER_ERP_MAX_REQUEST_BODY_BYTES |
max_request_body_bytes |
<value> |
line 60 | Largest accepted request body; larger bodies get HTTP 413. | src/cluster_erp/config/settings.py:345 |
Signup and domain verification¶
Template lines 62 to 74: the self-service signup door and the mail that verifies domain ownership.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_SIGNUP_ENABLED |
signup_enabled |
<value> |
line 65 | Opens or closes self-service signup on a multi-tenant node. | src/cluster_erp/config/settings.py:271 |
CLUSTER_ERP_SIGNUP_VERIFY_EMAIL |
signup_verify_email |
<value> |
line 68 | Requires domain verification by e-mail before provisioning. | src/cluster_erp/config/settings.py:277 |
CLUSTER_ERP_SIGNUP_MAIL_TRANSPORT |
signup_mail_transport |
<value> |
line 69 | Transport of verification mail: smtp or spool. | src/cluster_erp/config/settings.py:283 |
CLUSTER_ERP_SIGNUP_SMTP_HOST |
signup_smtp_host |
<value> |
line 70 | SMTP host for verification mail. | src/cluster_erp/config/settings.py:285 |
CLUSTER_ERP_SIGNUP_SMTP_PORT |
signup_smtp_port |
<value> |
line 71 | SMTP port for verification mail. | src/cluster_erp/config/settings.py:286 |
CLUSTER_ERP_SIGNUP_SMTP_USER |
signup_smtp_user |
<value> |
line 72 | SMTP user for verification mail. | src/cluster_erp/config/settings.py:287 |
CLUSTER_ERP_SIGNUP_SMTP_PASSWORD |
signup_smtp_password |
<value> |
line 73 | SMTP password for verification mail. | src/cluster_erp/config/settings.py:288 |
CLUSTER_ERP_SIGNUP_MAIL_FROM |
signup_mail_from |
<value> |
line 74 | Sender of verification mail. | src/cluster_erp/config/settings.py:289 |
System mailbox¶
Template lines 76 to 90: the relay for mail that the application itself sends.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_MAIL_RELAY_NONE |
mail_relay_none |
<value> |
line 83 | Declares that the node sends no system mail. | src/cluster_erp/config/settings.py:384 |
CLUSTER_ERP_SMTP_HOST |
smtp_host |
<value> |
line 84 | SMTP host of the system mailbox; empty means not configured. | src/cluster_erp/config/settings.py:394 |
CLUSTER_ERP_SMTP_PORT |
smtp_port |
<value> |
line 85 | SMTP port of the system mailbox. | src/cluster_erp/config/settings.py:395 |
CLUSTER_ERP_SMTP_USER |
smtp_user |
<value> |
line 86 | SMTP user of the system mailbox. | src/cluster_erp/config/settings.py:396 |
CLUSTER_ERP_SMTP_PASSWORD |
smtp_password |
<value> |
line 87 | SMTP password of the system mailbox. | src/cluster_erp/config/settings.py:397 |
CLUSTER_ERP_SMTP_USE_TLS |
smtp_use_tls |
<value> |
line 88 | Uses STARTTLS for the system mailbox. | src/cluster_erp/config/settings.py:398 |
CLUSTER_ERP_SMTP_FROM_EMAIL |
smtp_from_email |
<value> |
line 89 | Sender address; required when smtp_host is set. | src/cluster_erp/config/settings.py:399 |
CLUSTER_ERP_SMTP_FROM_NAME |
smtp_from_name |
<value> |
line 90 | Sender display name. | src/cluster_erp/config/settings.py:400 |
Backups and archives¶
Template lines 92 to 128: the backup role, the dump folder, retention, encryption, and the optional archives. See backups and restore.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_BACKUP_DB_USER |
backup_db_user |
<value> |
line 100 | Database role of the backup runner. | src/cluster_erp/config/settings.py:216 |
CLUSTER_ERP_BACKUP_DB_PASSWORD_FILE |
backup_db_password_file |
<value> |
line 104, commented | File holding the backup role's password. | src/cluster_erp/config/settings.py:222 |
CLUSTER_ERP_BACKUP_DB_PASSWORD |
backup_db_password |
<value> |
line 105 | Password of the backup role. | src/cluster_erp/config/settings.py:217 |
CLUSTER_ERP_BACKUP_DIR |
backup_dir |
<value> |
line 106 | Folder of database dumps. | src/cluster_erp/config/settings.py:226 |
CLUSTER_ERP_WAL_ARCHIVE_DIR |
wal_archive_dir |
<value> |
line 113, commented | Folder of the optional WAL archive. | src/cluster_erp/config/settings.py:392 |
CLUSTER_ERP_COLD_STORAGE_DIR |
cold_storage_dir |
<value> |
line 114, commented | Folder of the optional cold CSV export. | src/cluster_erp/config/settings.py:393 |
CLUSTER_ERP_MAIL_RELAY_COUNTRY |
mail_relay_country |
<value> |
line 116, commented | Country of the system mail relay. | src/cluster_erp/config/settings.py:388 |
CLUSTER_ERP_BACKUP_KEEP |
backup_keep |
<value> |
line 122 | Newest dumps kept per database. | src/cluster_erp/config/settings.py:227 |
CLUSTER_ERP_BACKUP_KEEP_DAYS |
backup_keep_days |
<value> |
line 123 | Age guard for pruning dumps; 0 is off. | src/cluster_erp/config/settings.py:233 |
CLUSTER_ERP_BACKUP_ENCRYPTION_KEY |
backup_encryption_key |
<value> |
line 127 | Key for encrypted dumps; required in multi-tenant mode. | src/cluster_erp/config/settings.py:377 |
CLUSTER_ERP_PG_BIN_DIR |
pg_bin_dir |
<value> |
line 128 | Folder of pg_dump and pg_restore. | src/cluster_erp/config/settings.py:234 |
Processes, pool, and proxy¶
Template lines 130 to 148: worker count, connection pool, and trust of the reverse proxy. See service and process manager.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_SERVER_WORKERS |
server_workers |
<value> |
line 133 | Number of worker processes; clamped to 1 on Windows. | src/cluster_erp/config/settings.py:149 |
CLUSTER_ERP_DB_POOL_SIZE |
db_pool_size |
<value> |
line 135 | Pool size of the default engine. | src/cluster_erp/config/settings.py:243 |
CLUSTER_ERP_DB_POOL_MAX_OVERFLOW |
db_pool_max_overflow |
<value> |
line 136 | Extra connections the default pool may open. | src/cluster_erp/config/settings.py:244 |
CLUSTER_ERP_DB_POOL_TIMEOUT_SECONDS |
db_pool_timeout_seconds |
<value> |
line 138 | Seconds a request waits for a pooled connection. | src/cluster_erp/config/settings.py:248 |
CLUSTER_ERP_TRUST_PROXY_HEADERS |
trust_proxy_headers |
<value> |
line 142 | Lets uvicorn interpret forwarded headers from trusted proxies. | src/cluster_erp/config/settings.py:158 |
CLUSTER_ERP_TRUSTED_PROXY_IPS |
trusted_proxy_ips |
<value> |
line 143 | Proxies allowed to set forwarded headers; the default is the loopback address. | src/cluster_erp/config/settings.py:162 |
CLUSTER_ERP_SERVER_ACCESS_LOG |
server_access_log |
<value> |
line 145 | Turns on uvicorn's own access log. | src/cluster_erp/config/settings.py:167 |
CLUSTER_ERP_SERVER_KEEP_ALIVE_SECONDS |
server_keep_alive_seconds |
<value> |
line 148 | Seconds an idle keep-alive connection stays open. | src/cluster_erp/config/settings.py:175 |
Storage limitation and data-subject requests¶
Template lines 150 to 166: retention windows and the privacy request settings. See scheduled jobs and retention.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_ACTIVITY_LOG_RETENTION_DAYS |
activity_log_retention_days |
<value> |
line 152 | Days activity-log rows are kept. | src/cluster_erp/config/settings.py:640 |
CLUSTER_ERP_ERROR_LOG_RETENTION_DAYS |
error_log_retention_days |
<value> |
line 153 | Days error-log rows are kept. | src/cluster_erp/config/settings.py:641 |
CLUSTER_ERP_CONTROL_SIGNUP_RETENTION_DAYS |
control_signup_retention_days |
<value> |
line 156 | Days an unfinished signup is kept on the control plane. | src/cluster_erp/config/settings.py:718 |
CLUSTER_ERP_CONTROL_RATE_LIMIT_RETENTION_HOURS |
control_rate_limit_retention_hours |
<value> |
line 157 | Hours rate-limit rows are kept. | src/cluster_erp/config/settings.py:721 |
CLUSTER_ERP_CONTROL_ACTIONS_RETENTION_YEARS |
control_actions_retention_years |
<value> |
line 158 | Years operator action records are kept. | src/cluster_erp/config/settings.py:724 |
CLUSTER_ERP_SIGNUP_MAIL_SPOOL_RETENTION_DAYS |
signup_mail_spool_retention_days |
<value> |
line 159 | Days spooled verification mails are kept. | src/cluster_erp/config/settings.py:727 |
CLUSTER_ERP_PRIVACY_RESPONSE_DAYS |
privacy_response_days |
<value> |
line 163 | Days within which a data-subject request must be answered. | src/cluster_erp/config/settings.py:733 |
CLUSTER_ERP_PRIVACY_ANONYMISED_MARKER |
privacy_anonymised_marker |
<value> |
line 166 | Value written over identifying fields on anonymisation. | src/cluster_erp/config/settings.py:737 |
Sessions¶
Template lines 168 to 175: session length and the sign-in rate limit.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_JWT_SESSION_HOURS |
jwt_session_hours |
<value> |
line 172 | Lifetime of a refresh chain without "remember me". | src/cluster_erp/config/settings.py:312 |
CLUSTER_ERP_LOGIN_RATE_LIMIT_PER_MINUTE |
login_rate_limit_per_minute |
<value> |
line 175 | Sign-in attempts per client per minute before HTTP 429. | src/cluster_erp/config/settings.py:316 |
Signup notice and security contact¶
Template lines 177 to 192: the privacy notice shown at signup and the security.txt document. See security.txt and readiness.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_SIGNUP_NOTICE_DIR |
signup_notice_dir |
<value> |
line 183 | Folder of the privacy notice shown before signup. | src/cluster_erp/config/settings.py:305 |
CLUSTER_ERP_SIGNUP_NOTICE_VERSION |
signup_notice_version |
<value> |
line 184 | Version recorded with every notice acceptance. | src/cluster_erp/config/settings.py:306 |
CLUSTER_ERP_SECURITY_CONTACT |
security_contact |
<value> |
line 190 | Contact of /.well-known/security.txt; empty answers 404. | src/cluster_erp/config/settings.py:296 |
CLUSTER_ERP_SECURITY_POLICY_URL |
security_policy_url |
<value> |
line 191 | Policy URL in security.txt. | src/cluster_erp/config/settings.py:297 |
CLUSTER_ERP_SECURITY_EXPIRES_DAYS |
security_expires_days |
<value> |
line 192 | Days until the Expires field of security.txt. | src/cluster_erp/config/settings.py:298 |
Request cost and analytics¶
Template lines 194 to 208: caching of permissions, list counting, and the analytics summary loop.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_AUTH_CACHE_SECONDS |
auth_cache_seconds |
<value> |
line 197 | Seconds a request may reuse cached permissions and policies. | src/cluster_erp/config/settings.py:320 |
CLUSTER_ERP_LIST_COUNT_CAP |
list_count_cap |
<value> |
line 201 | Lists count matching rows up to this cap; 0 means exact counts. | src/cluster_erp/config/settings.py:324 |
CLUSTER_ERP_ANALYTICS_SUMMARY_REFRESH_SECONDS |
analytics_summary_refresh_seconds |
<value> |
line 207 | Interval of the summary-cell refresh; 0 turns it off. | src/cluster_erp/config/settings.py:530 |
CLUSTER_ERP_ANALYTICS_SUMMARY_REBUILD_MINUTES |
analytics_summary_rebuild_minutes |
<value> |
line 208 | Interval of a full summary-cell rebuild. | src/cluster_erp/config/settings.py:533 |
First administrator¶
Template lines 210 to 213: where a generated first password is written.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_BOOTSTRAP_PASSWORD_FILE |
bootstrap_password_file |
<value> |
line 213 | File that receives a generated first password. | src/cluster_erp/config/settings.py:205 |
Residency, console origins, and regions¶
Template lines 215 to 244: the node's country, the country nodes, the console origins, and the data regions. See data residency check.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_NODE_COUNTRY |
node_country |
<value> |
line 221 | ISO 3166-1 alpha-2 country this node serves; empty means no residency policy. | src/cluster_erp/config/settings.py:111 |
CLUSTER_ERP_COUNTRY_NODES |
country_nodes |
<value> |
line 225 | JSON object mapping countries to their node base URLs. | src/cluster_erp/config/settings.py:114 |
CLUSTER_ERP_CONSOLE_ORIGINS |
console_origins |
<value> |
line 238 | Comma list of https origins allowed to read the fleet endpoint from a browser. | src/cluster_erp/config/settings.py:122 |
CLUSTER_ERP_REGIONS |
regions |
<value> |
line 243 | Comma list of region codes; the first is the default. | src/cluster_erp/config/settings.py:93 |
CLUSTER_ERP_REGION_DB_URLS |
region_db_urls |
<value> |
line 244 | JSON object naming the database server of each non-default region. | src/cluster_erp/config/settings.py:94 |
Licensing and operator console¶
Template lines 246 to 269: the licence verification key and the first operator account. See operator console.
| Variable | Setting | Value | Template | Meaning | Source |
|---|---|---|---|---|---|
CLUSTER_ERP_LICENSE_PUBLIC_KEY |
license_public_key |
<value> |
line 253 | Public key that license files must be signed with; empty disables licensing. | src/cluster_erp/config/settings.py:569 |
CLUSTER_ERP_VENDOR_ADMIN_USERNAME |
vendor_admin_username |
<value> |
line 258 | First operator account created at boot when none exists. | src/cluster_erp/config/settings.py:126 |
CLUSTER_ERP_VENDOR_ADMIN_PASSWORD |
vendor_admin_password |
<value> |
line 259 | Password of that first operator account. | src/cluster_erp/config/settings.py:127 |
CLUSTER_ERP_VENDOR_REQUIRE_TOTP |
vendor_require_totp |
<value> |
line 264 | Requires a second factor for every operator sign-in. | src/cluster_erp/config/settings.py:131 |
CLUSTER_ERP_VENDOR_ALLOWED_IPS |
vendor_allowed_ips |
<value> |
line 269 | Addresses allowed to reach the operator console API. | src/cluster_erp/config/settings.py:134 |
Variables read by gunicorn and the scripts¶
These names are read straight from the environment by deploy/gunicorn.conf.py or by shell scripts. The first five are also Settings fields; the others are not.
| Variable | Value | Reader | Meaning | Source |
|---|---|---|---|---|
CLUSTER_ERP_SERVER_HOST |
<value> |
gunicorn | Bind address of the gunicorn master. | deploy/gunicorn.conf.py:26 |
CLUSTER_ERP_SERVER_PORT |
<value> |
gunicorn | Bind port of the gunicorn master. | deploy/gunicorn.conf.py:26 |
CLUSTER_ERP_SERVER_WORKERS |
<value> |
gunicorn | Worker count; 0 or unset means one per processor core, at most eight. |
deploy/gunicorn.conf.py:29-30 |
CLUSTER_ERP_SERVER_KEEP_ALIVE_SECONDS |
<value> |
gunicorn | Idle keep-alive seconds of the workers. | deploy/gunicorn.conf.py:46 |
CLUSTER_ERP_TRUSTED_PROXY_IPS |
<value> |
gunicorn | Peers whose forwarded headers gunicorn accepts. | deploy/gunicorn.conf.py:48-49 |
CLUSTER_ERP_BACKUP_ENCRYPTION_KEY_FILE |
<value> |
crypto_at_rest, WAL and CSV scripts |
File holding the backup key for scripts that run outside the service. | src/cluster_erp/core/crypto_at_rest.py:155, scripts/backup/pg_wal_archive.sh:28-40 |
CLUSTER_ERP_COLD_RETENTION_DAYS |
<value> |
cold CSV export | Days a CSV export folder is kept. | scripts/backup/pg_cold_storage_export.sh:44 |
CLUSTER_ERP_HOME |
<value> |
backup scripts | Checkout folder the scripts change into. | scripts/backup/pg_full_backup.sh:27 |
CLUSTER_ERP_PYTHON |
<value> |
backup scripts | Python interpreter that runs the product runner. | scripts/backup/pg_full_backup.sh:28 |
CLUSTER_ERP_REPO_URL |
<value> |
install.sh |
Repository address; otherwise the origin of the existing checkout is used. | deploy/install.sh:47-54 |
CLUSTER_ERP_ADMIN_CIDR |
<value> |
bootstrap-node.sh |
Networks allowed to reach SSH; the --admin-cidr flag overrides it. |
deploy/bootstrap-node.sh:28-30 |
Constraints and validation¶
Settings validates the loaded values and refuses to start when a rule fails (src/cluster_erp/config/settings.py:737-834):
- Region codes match
[a-z0-9-]{2,8};CLUSTER_ERP_REGION_DB_URLSnames only known regions; every non-default region has a server (src/cluster_erp/config/settings.py:748-755). CLUSTER_ERP_NODE_COUNTRYis a two-letter code, andCLUSTER_ERP_COUNTRY_NODESlists the node's own country (src/cluster_erp/config/settings.py:756-767).CLUSTER_ERP_MULTI_TENANT=truetogether withCLUSTER_ERP_DEBUG=trueis refused (src/cluster_erp/config/settings.py:768-772).- The secret key must not be the default outside debug mode, must have at least 32 characters, and must not be weak outside debug mode (
src/cluster_erp/config/settings.py:773-806). - In multi-tenant mode the storage, backup, and mail encryption keys are required (
src/cluster_erp/config/settings.py:807-823). - The storage and backup keys must parse as 32 bytes of hex (
src/cluster_erp/config/settings.py:824-829). CLUSTER_ERP_S3_BUCKETis required with thes3backend;CLUSTER_ERP_SMTP_FROM_EMAILis required whenCLUSTER_ERP_SMTP_HOSTis set (src/cluster_erp/config/settings.py:830-837).CLUSTER_ERP_CONSOLE_ORIGINSentries must behttpsorigins, andCLUSTER_ERP_COUNTRY_NODESmust be a JSON object of two-letter codes (src/cluster_erp/config/settings.py:867-898).
Discrepancies¶
Terms introduced¶
| Term | Code identifier | Definition | Turkish term | Source |
|---|---|---|---|---|
| environment template | deploy/env.example |
The file copied to a new node as its environment file, with every site value as a <...> placeholder. |
ortam şablonu | deploy/install.sh:171-175 |
Related pages¶
Verified against commit 92f8051 on 2026-11-13.