Environment Variable

September 1, 2026 ยท View on GitHub

Env
CONSOLE_MINIO_SERVER"http://localhost:9000"
CONSOLE_MINIO_REGION"us-east-1"
CONSOLE_MINIO_SERVER_TLS_SKIP_VERIFY"off"; standalone only, exempts exactly the CONSOLE_MINIO_SERVER HTTPS origin from certificate verification, see TLS.md
CONSOLE_HOSTNAME""
CONSOLE_PORT9090
CONSOLE_TLS_PORT9443
CONSOLE_SUBPATHi.e. /console
CONSOLE_DEBUG_LOGLEVEL0 - 6; credential-bearing headers, query parameters and path segments are redacted at every level, see Debug.md
CONSOLE_CORRESPONDING_SOURCE_URL"" ; public https URL of the exact corresponding source for a custom or modified build, reported by console version, the page metadata and the License/Login/anonymous pages; must have a host and no credentials, query or fragment, otherwise it is rejected (without suppressing built-in provenance)
CONSOLE_TRUSTED_PROXIESStandalone only: trusted proxy IP/CIDR list; blank falls back to MINIO_API_TRUSTED_PROXIES
CONSOLE_WS_MAX_CONNECTIONS1024; WebSocket connections the process holds at once, see WebSocket connection limits
CONSOLE_WS_MAX_CONNECTIONS_PER_CLIENT256; WebSocket connections one client address holds at once
CONSOLE_WS_MAX_ANONYMOUS_CONNECTIONS64; anonymous WebSocket connections for the process (must be less than the total)
CONSOLE_WS_MAX_ANONYMOUS_CONNECTIONS_PER_CLIENT8; anonymous WebSocket connections from one client address (must be less than the per-client cap and not exceed the anonymous budget)
CONSOLE_SHARE_MINIO_URL"off"
CONSOLE_SECURE_ALLOWED_HOSTS""
CONSOLE_SECURE_ALLOWED_HOSTS_ARE_REGEX"off"
CONSOLE_SECURE_FRAME_DENY"on"
CONSOLE_SECURE_CONTENT_TYPE_NO_SNIFF"on"
CONSOLE_SECURE_BROWSER_XSS_FILTER"on"
CONSOLE_SECURE_CONTENT_SECURITY_POLICY""
CONSOLE_SECURE_CONTENT_SECURITY_POLICY_REPORT_ONLY""
CONSOLE_SECURE_HOSTS_PROXY_HEADERS""
CONSOLE_SECURE_STS_SECONDS0
CONSOLE_SECURE_STS_INCLUDE_SUB_DOMAINS"off"
CONSOLE_SECURE_STS_PRELOAD"off"
CONSOLE_SECURE_TLS_REDIRECT"off"
CONSOLE_SECURE_TLS_HOST""
CONSOLE_SECURE_TLS_TEMPORARY_REDIRECT"off"
CONSOLE_SECURE_FORCE_STS_HEADER"off"
CONSOLE_SECURE_PUBLIC_KEY
CONSOLE_SECURE_REFERRER_POLICY""
CONSOLE_SECURE_FEATURE_POLICY""
CONSOLE_SECURE_EXPECT_CT_HEADER
CONSOLE_PROMETHEUS_URL
CONSOLE_PROMETHEUS_AUTH_TOKEN
CONSOLE_PROMETHEUS_AUTH_USERNAME
CONSOLE_PROMETHEUS_AUTH_PASSWORD
CONSOLE_PROMETHEUS_JOB_ID"minio-job"
CONSOLE_PROMETHEUS_EXTRA_LABELS
CONSOLE_LOG_QUERY_URL
CONSOLE_LOG_QUERY_AUTH_TOKEN""
CONSOLE_MAX_CONCURRENT_UPLOADS"10"
CONSOLE_MAX_CONCURRENT_DOWNLOADS"20"
CONSOLE_DEV_MODE"off"
CONSOLE_BROWSER_REDIRECT_URL
LOGSEARCH_QUERY_AUTH_TOKEN
CONSOLE_IDP_DISPLAY_NAMEMINIO_IDENTITY_OPENID_DISPLAY_NAME
CONSOLE_IDP_URLMINIO_IDENTITY_OPENID_CONFIG_URL
CONSOLE_IDP_CLIENT_IDMINIO_IDENTITY_OPENID_CLIENT_ID
CONSOLE_IDP_SECRETMINIO_IDENTITY_OPENID_CLIENT_SECRET
CONSOLE_IDP_CALLBACKMINIO_BROWSER_REDIRECT_URL
CONSOLE_IDP_CALLBACK_DYNAMICMINIO_IDENTITY_OPENID_REDIRECT_URI_DYNAMIC
CONSOLE_IDP_SCOPESMINIO_IDENTITY_OPENID_SCOPES
CONSOLE_IDP_USERINFOMINIO_IDENTITY_OPENID_CLAIM_USERINFO
CONSOLE_IDP_ROLE_ARN
CONSOLE_IDP_END_SESSION_ENDPOINT
CONSOLE_LDAP_ENABLED
CONSOLE_STS_DURATIONtime.Duration format, ie: 3600s, 2h45m, 1h, etc
CONSOLE_PBKDF_PASSPHRASE
CONSOLE_PBKDF_SALT
CONSOLE_LOGGER_JSON_ENABLE
CONSOLE_LOGGER_ANONYMOUS_ENABLE
CONSOLE_LOGGER_QUIET_ENABLE
CONSOLE_GLOBAL_DEPLOYMENT_ID
CONSOLE_LOGGER_WEBHOOK_ENABLE
CONSOLE_LOGGER_WEBHOOK_ENDPOINT
CONSOLE_LOGGER_WEBHOOK_AUTH_TOKEN
CONSOLE_LOGGER_WEBHOOK_CLIENT_CERT
CONSOLE_LOGGER_WEBHOOK_CLIENT_KEY
CONSOLE_LOGGER_WEBHOOK_QUEUE_SIZE
CONSOLE_AUDIT_WEBHOOK_ENABLE
CONSOLE_AUDIT_WEBHOOK_ENDPOINT
CONSOLE_AUDIT_WEBHOOK_AUTH_TOKEN
CONSOLE_AUDIT_WEBHOOK_CLIENT_CERT
CONSOLE_AUDIT_WEBHOOK_CLIENT_KEY
CONSOLE_AUDIT_WEBHOOK_QUEUE_SIZE

Trusted proxy source addresses

Console uses the resolved client address when it requests STS credentials or calls SILO on a user's behalf. This address can affect aws:SourceIp policy conditions, so forwarded source headers are ignored unless the request's direct TCP peer is explicitly trusted.

CONSOLE_TRUSTED_PROXIES accepts exact IPv4/IPv6 addresses and CIDR blocks separated by commas, semicolons, or whitespace. Bare addresses trust one host. Catch-all 0.0.0.0/0 and ::/0 entries are rejected. Configure proxy addresses, not client networks, and configure the edge proxy to remove every inbound X-Forwarded-For, X-Real-IP, and Forwarded header it does not author.

The secure default is to trust no proxy. If neither applicable variable names a trusted peer, Console uses the TCP peer and ignores all three forwarded source headers. This intentionally changes deployments that previously relied on implicit trust. Set the appropriate variable before upgrading when source IP policies or client attribution must pass through a reverse proxy.

DeploymentConsole inbound policySILO API policyRequired setting
Standalone Console, no reverse proxyTrust no forwarded headersMust trust Console's egress peer to preserve the browser client IPSet CONSOLE_TRUSTED_PROXIES=none whenever MINIO_API_TRUSTED_PROXIES is present in Console's environment; leaving it unset is only equivalent when the SILO setting is absent too
Standalone Console behind a reverse proxyTrust only the Console-facing proxy peersMust trust Console's egress peer to preserve the browser client IPSet CONSOLE_TRUSTED_PROXIES for Console ingress and configure the SILO setting separately
Standalone Console using one shared listFall back to the SILO setting when the Console setting is absent or blankTrust only listed API peersSet MINIO_API_TRUSTED_PROXIES to every required Console-ingress proxy and Console-egress peer; use this only when one list is correct for both listeners
Console embedded in SILOTrust only peers from the SILO settingTrust only peers from the SILO settingSet MINIO_API_TRUSTED_PROXIES

An absent or blank CONSOLE_TRUSTED_PROXIES falls back to MINIO_API_TRUSTED_PROXIES; the two lists are only interchangeable when the same peers front both listeners. CONSOLE_TRUSTED_PROXIES=none or off explicitly suppresses the fallback. A malformed, separators-only, catch-all, or unreadable remote value is an error and fails closed to trust-none. Standalone Console refuses to start; embedded Console logs the error and retains trust-none.

Forwarded chains are read from the peer backwards. The first address outside the trusted list is the client. The walk stops, and the request is attributed to the TCP peer, at the first element that is not a literal IP address: a host name, an RFC 7239 unknown or obfuscated identifier, malformed quoting, a repeated parameter, or a chain longer than 100 elements. Only one header family is consulted per request, chosen by presence in the order X-Forwarded-For, X-Real-IP, Forwarded, so a client cannot choose which proxy-authored header Console believes; the proxy must remove the families it does not author.

In the current embedded server, SILO removes CONSOLE_* variables before it configures Console. CONSOLE_TRUSTED_PROXIES is therefore standalone-only; embedded deployments must use MINIO_API_TRUSTED_PROXIES. That server setting also governs direct S3 API source attribution, which remains a separate ingress path from standalone Console.

When a reverse proxy is not listed, requests are attributed to the proxy itself. This is safe against client spoofing, but a policy that already permits that proxy address may consequently permit every client arriving through it. Review IP allow-lists as well as the proxy setting during migration.

WebSocket origin policy

Browser WebSocket handshakes to /ws/* are accepted only when the Origin authority matches the request Host, matches the authority of CONSOLE_BROWSER_REDIRECT_URL, is asserted by a trusted proxy (the TCP peer is listed in CONSOLE_TRUSTED_PROXIES or, embedded, MINIO_API_TRUSTED_PROXIES, and the first configured CONSOLE_SECURE_HOSTS_PROXY_HEADERS header present carries exactly one host[:port] equal to the Origin authority), or matches CONSOLE_SECURE_ALLOWED_HOSTS (exact, or anchored regular expressions with CONSOLE_SECURE_ALLOWED_HOSTS_ARE_REGEX=on). Requests without an Origin header (non-browser clients) and CONSOLE_DEV_MODE=on are accepted.

Subpath deployments are no longer exempt from this check. A reverse proxy that preserves the full authority (proxy_set_header Host $http_host; for nginx; $host drops a non-default port) needs nothing else; otherwise set CONSOLE_BROWSER_REDIRECT_URL, or trust the proxy and have it overwrite X-Forwarded-Host with CONSOLE_SECURE_HOSTS_PROXY_HEADERS=X-Forwarded-Host, or list the public host in CONSOLE_SECURE_ALLOWED_HOSTS.

The Object Manager WebSocket (/ws/objectManager) allows anonymous connections only when no session cookie is sent at all; an empty or malformed cookie is rejected. Every WebSocket frame is limited to 32 KiB. Object Manager sessions send a ping every 30 seconds and close peers that stay silent for 60 seconds, bound each write to 10 seconds, accept at most 4 concurrent listings, validate every request before allocating anything, and close the session after 10 consecutive invalid frames.

WebSocket connection limits

The per-connection bounds above do not limit how many connections one peer may hold, so Console also caps the number of WebSocket connections. A slot is reserved before the handshake is upgraded and released when the socket closes (including a socket the keepalive deadline declares dead), so the counts are the sockets the process actually holds. A handshake that would exceed a cap is refused before any socket exists, with Retry-After: 5: 429 Too Many Requests when the client's own cap is the one exceeded, 503 Service Unavailable when the process total or the anonymous budget is exhausted.

VariableDefaultScope
CONSOLE_WS_MAX_CONNECTIONS1024every /ws/* connection the process holds, authenticated and anonymous together
CONSOLE_WS_MAX_CONNECTIONS_PER_CLIENT256connections from one client address
CONSOLE_WS_MAX_ANONYMOUS_CONNECTIONS64anonymous /ws/objectManager connections for the process; anonymous connections count against the total too, so they can never take more of it than this
CONSOLE_WS_MAX_ANONYMOUS_CONNECTIONS_PER_CLIENT8anonymous connections from one client address

Anonymous handshakes need no credentials, so their budget is separate and small: public-bucket browsing opens one connection per tab, and nothing else can be opened without a session. Exhausting the anonymous budget therefore never affects signed-in users.

The client address is the trust-resolved one (see Trusted proxy source addresses): IPv4 addresses count individually, IPv6 addresses by their /64, and a peer whose address cannot be parsed shares one key. Behind a reverse proxy that is not listed as trusted, every browser shares the proxy's address and the per-client caps apply to all of them together; configure the trust list, or raise CONSOLE_WS_MAX_CONNECTIONS_PER_CLIENT, for such deployments.

Every value must be an integer between 1 and 1048576. The anonymous budget must be strictly less than the total and the anonymous per-client cap strictly less than the per-client cap, so that signed-in users always keep at least one slot in each; the anonymous per-client cap must not exceed the anonymous budget. Standalone Console refuses to start on an invalid value; an embedded Console logs the error and keeps the defaults.

Outbound TLS verification

Console verifies every outbound HTTPS peer against the system roots plus the certificates in ~/.console/certs/CAs (standalone) or the server's certs/CAs (embedded). Private or self-signed server certificates belong in that directory. CONSOLE_MINIO_SERVER_TLS_SKIP_VERIFY=on is an explicit opt-out that applies only to the configured CONSOLE_MINIO_SERVER HTTPS origin; identity providers, Prometheus, webhooks and every other destination stay verified. The full behaviour, including the embedded-server certificate requirement, is described in TLS.md.