Environment Variables

Reference for the environment variables that configure the RustFS server, console, TLS, KMS, observability, scanner, healing, storage classes, credentials, and event targets.

This page lists the environment variables recognized by the rustfs server binary. It covers the operations-relevant subset verified against the RustFS source code; some internal tuning knobs are intentionally omitted. Every variable can also be supplied through the matching command-line flag where one exists (see the CLI reference).

:::note Boolean variables accept true/false. Values shown as "unset" have no default and the corresponding feature stays disabled or falls back to built-in behavior. :::

Core server

VariableDefaultDescription
RUSTFS_VOLUMESunset (required)Storage volumes or endpoints, space-separated. Supports {N...M} ellipses expansion, e.g. /data/rustfs{0...3} or http://node{1...4}:9000/data/rustfs{0...3}. The Docker image defaults to /data.
RUSTFS_ADDRESS:9000Bind address and port for the S3 API listener (also carries internal node RPC).
RUSTFS_SERVER_DOMAINSunsetComma-separated domain name(s) for virtual-hosted-style S3 requests, e.g. s3.example.com so bucket.s3.example.com resolves to bucket bucket. When unset, only path-style addressing works.
RUSTFS_REGIONunsetRegion reported to S3 clients. When unset the server falls back to us-east-1.
RUSTFS_LICENSEunsetLicense string.
RUSTFS_BUFFER_PROFILEGeneralPurposeWorkload profile for adaptive buffer sizing. Options: GeneralPurpose, AiTraining, DataAnalytics, WebWorkload, IndustrialIoT, SecureStorage.
RUSTFS_BUFFER_PROFILE_DISABLEfalseDisable adaptive buffer sizing and use legacy fixed-size buffers.
RUSTFS_HEALTH_ENDPOINT_ENABLEtrueRegister the unauthenticated /health and /health/ready probe endpoints.
RUSTFS_HEALTH_READINESS_CACHE_TTL_MS1000Cache TTL for readiness probe results, in milliseconds.
RUSTFS_HEALTH_CLUSTER_TIMEOUT_MS2000Timeout for cluster health probes (/minio/health/cluster), in milliseconds.
RUSTFS_STARTUP_READINESS_MAX_WAIT_SECS120Maximum time the readiness probe reports "starting" before startup is considered failed.

Console

VariableDefaultDescription
RUSTFS_CONSOLE_ENABLEtrueEnable the embedded web console (served on a separate listener).
RUSTFS_CONSOLE_ADDRESS:9001Bind address and port for the console listener.

TLS & KMS

VariableDefaultDescription
RUSTFS_TLS_PATHunsetDirectory containing the TLS certificate and key (rustfs_cert.pem / rustfs_key.pem) for the S3 API and console. TLS is enabled when set.
RUSTFS_TLS_RELOAD_ENABLEfalseWatch the TLS directory and hot-reload certificates.
RUSTFS_TLS_KEYLOGfalseWrite TLS session keys to a keylog file for debugging. Do not enable in production.
RUSTFS_TRUST_SYSTEM_CAfalseAlso trust the operating system CA store for outbound TLS connections.
RUSTFS_TRUST_LEAF_CERT_AS_CAfalseTrust a leaf certificate as if it were a CA (self-signed setups).
RUSTFS_SERVER_MTLS_ENABLEfalseRequire client certificates (mutual TLS) on the server listeners.
RUSTFS_MTLS_CLIENT_CERTunsetClient certificate presented for internode mTLS connections.
RUSTFS_MTLS_CLIENT_KEYunsetClient private key for internode mTLS connections.
RUSTFS_KMS_ENABLEfalseEnable KMS-backed server-side encryption.
RUSTFS_KMS_BACKENDlocalKMS backend: local, vault / vault-kv2 (Vault KV2 + Transit), or vault-transit.
RUSTFS_KMS_KEY_DIRunsetKey directory for the local backend.
RUSTFS_KMS_LOCAL_MASTER_KEYunsetMaster key protecting local KMS key files.
RUSTFS_KMS_VAULT_ADDRESSunsetVault server address for the Vault backends.
RUSTFS_KMS_VAULT_TOKENunsetVault token for the Vault backends.
RUSTFS_KMS_VAULT_MOUNT_PATHunsetVault mount path for the Vault backends.
RUSTFS_KMS_DEFAULT_KEY_IDunsetDefault KMS key ID used for encryption.
RUSTFS_KMS_ALLOW_INSECURE_DEV_DEFAULTSfalseAllow development-only insecure KMS defaults. Never enable in production.

Observability

The observability pipeline exports traces, metrics, and logs over OTLP/HTTP.

VariableDefaultDescription
RUSTFS_OBS_ENDPOINTemptyRoot OTLP/HTTP base URL for traces, metrics, and logs, e.g. http://otel-collector:4318. When empty, logs go to stdout or local files.
RUSTFS_OBS_TRACE_ENDPOINTunsetPer-signal override for the traces endpoint.
RUSTFS_OBS_METRIC_ENDPOINTunsetPer-signal override for the metrics endpoint.
RUSTFS_OBS_LOG_ENDPOINTunsetPer-signal override for the logs endpoint.
RUSTFS_OBS_TRACES_EXPORT_ENABLEDtrueExport traces to the OTLP endpoint.
RUSTFS_OBS_METRICS_EXPORT_ENABLEDtrueExport metrics to the OTLP endpoint.
RUSTFS_OBS_LOGS_EXPORT_ENABLEDtrueExport logs to the OTLP endpoint.
RUSTFS_OBS_USE_STDOUTunsetForce telemetry output to stdout.
RUSTFS_OBS_SAMPLE_RATIOunsetTrace sampling ratio (0.0–1.0).
RUSTFS_OBS_METER_INTERVALunsetMetrics export interval in seconds.
RUSTFS_OBS_SERVICE_NAMEunsetService name reported in telemetry resource attributes.
RUSTFS_OBS_ENVIRONMENTunsetDeployment environment label (production, development, test, staging).
RUSTFS_OBS_LOGGER_LEVELunsetLog level filter (e.g. info, debug).
RUSTFS_OBS_LOG_STDOUT_ENABLEDunsetAlso mirror logs to stdout when file/OTLP logging is active.
RUSTFS_OBS_LOG_DIRECTORYunsetLocal log directory. Unset means logs go to stdout; a URL value sends logs to a remote endpoint.
RUSTFS_OBS_LOG_FILENAMErustfs.logLog filename inside the log directory.
RUSTFS_OBS_LOG_ROTATION_TIMEhourlyTime-based log rotation: daily, hourly, minutely.
RUSTFS_OBS_LOG_KEEP_FILES30Number of rotated log files to keep.
RUSTFS_OBS_LOG_MAX_TOTAL_SIZE_BYTES2147483648Total size budget (2 GiB) for the log directory before cleanup.
RUSTFS_OBS_LOG_COMPRESS_OLD_FILEStrueCompress rotated log files (zstd by default, controllable via RUSTFS_OBS_LOG_COMPRESSION_ALGORITHM).

Metrics collection intervals follow the pattern RUSTFS_METRICS_<SCOPE>_INTERVAL_SEC with scopes DEFAULT, SYSTEM, CLUSTER, BUCKET, NODE, RESOURCE, AUDIT, NOTIFICATION, and BUCKET_REPLICATION_BANDWIDTH — for example RUSTFS_METRICS_CLUSTER_INTERVAL_SEC=60.

Scanner & Healing

VariableDefaultDescription
RUSTFS_SCANNER_SPEEDdefaultScanner speed preset: fastest, fast, default, slow, slowest. Controls sleep factor, max sleep, and cycle interval.
RUSTFS_SCANNER_DELAYpresetOverrides the scanner sleep multiplier (e.g. 30.0).
RUSTFS_SCANNER_MAX_WAIT_SECSpresetOverrides the maximum scanner sleep in seconds.
RUSTFS_SCANNER_CYCLEpresetOverrides the scan cycle interval in seconds (e.g. 3600).
RUSTFS_SCANNER_START_DELAY_SECSunsetStartup delay in seconds before the first scan cycle.
RUSTFS_SCANNER_CYCLE_MAX_DURATION_SECS0Caps one cycle's runtime in seconds; 0 disables the budget.
RUSTFS_SCANNER_CYCLE_MAX_OBJECTS0Caps objects processed per cycle; 0 disables the budget.
RUSTFS_SCANNER_CYCLE_MAX_DIRECTORIES0Caps directories entered per cycle; 0 disables the budget.
RUSTFS_SCANNER_BITROT_CYCLE_SECS2592000Periodic deep (bitrot) scan cycle in seconds (30 days). 0/true/on makes every cycle deep; false/off disables deep scans.
RUSTFS_SCANNER_IDLE_MODEtrueWhen true the scanner throttles itself; false runs at full speed.
RUSTFS_SCANNER_CACHE_SAVE_TIMEOUT_SECS30Scanner cache save timeout in seconds (minimum 1).
RUSTFS_SCANNER_MAX_CONCURRENT_SET_SCANS0Caps concurrent erasure-set scan tasks; 0 keeps topology-based concurrency.
RUSTFS_SCANNER_MAX_CONCURRENT_DISK_SCANS0Caps concurrent disk bucket walks per set; 0 keeps disk-count-based concurrency.
RUSTFS_SCANNER_YIELD_EVERY_N_OBJECTS128How often scanner object loops yield to the async runtime; 0 disables the extra yield.
RUSTFS_SCANNER_ALERT_EXCESS_VERSIONS100Object version count that triggers scanner alerts.
RUSTFS_SCANNER_ALERT_EXCESS_VERSION_SIZE1099511627776Cumulative version bytes (1 TiB) that trigger scanner alerts.
RUSTFS_SCANNER_ALERT_EXCESS_FOLDERS65538Direct subfolder count that triggers scanner alerts.
RUSTFS_HEAL_AUTO_HEAL_ENABLEtrueEnable automatic background healing of degraded objects.
RUSTFS_HEAL_QUEUE_SIZE10000Capacity of the heal-candidate queue.
RUSTFS_HEAL_INTERVAL_SECS10Interval between heal scheduler runs, in seconds.
RUSTFS_HEAL_TASK_TIMEOUT_SECS300Timeout for a single heal task, in seconds.
RUSTFS_HEAL_MAX_CONCURRENT_HEALS4Maximum concurrent heal tasks.
RUSTFS_HEAL_MAX_CONCURRENT_PER_SET1Maximum concurrent heal tasks per erasure set.

Storage & Erasure

VariableDefaultDescription
RUSTFS_STORAGE_CLASS_STANDARDautoParity for the STANDARD storage class in EC:n format, e.g. EC:4. When unset, parity is derived from the erasure set size.
RUSTFS_STORAGE_CLASS_RRSEC:1Parity for the REDUCED_REDUNDANCY storage class in EC:n format.
RUSTFS_STORAGE_CLASS_OPTIMIZEavailabilityOptimization goal for parity selection.
RUSTFS_STORAGE_CLASS_INLINE_BLOCK131072Threshold (128 KiB) below which object data is inlined into metadata.
RUSTFS_ERASURE_SET_DRIVE_COUNT0Force the number of drives per erasure set; 0 selects the layout automatically.
RUSTFS_DURABILITY_MODEunsetWrite durability mode: strict, relaxed, or none. Takes precedence over the legacy drive-sync switch when set to a valid value.

Credentials & Internal

VariableDefaultDescription
RUSTFS_ACCESS_KEYrustfsadminRoot access key. Mutually exclusive with RUSTFS_ACCESS_KEY_FILE.
RUSTFS_SECRET_KEYrustfsadminRoot secret key. Mutually exclusive with RUSTFS_SECRET_KEY_FILE.
RUSTFS_ACCESS_KEY_FILEunsetPath to a file containing the access key (e.g. a Docker/Kubernetes secret mount).
RUSTFS_SECRET_KEY_FILEunsetPath to a file containing the secret key.
RUSTFS_RPC_SECRETderivedSecret used to authenticate internode RPC. When unset it is derived from the active access/secret key pair; with an all-default credential pair, multi-node clusters must set it explicitly.

:::warning The built-in default credentials rustfsadmin/rustfsadmin are for first-boot convenience only. Always set non-default credentials for production deployments. :::

Event & Audit targets

Module switches:

VariableDefaultDescription
RUSTFS_NOTIFY_ENABLEfalseEnable the bucket event notification module.
RUSTFS_AUDIT_ENABLEfalseEnable the audit logging module.

Target configuration is pattern-based: RUSTFS_NOTIFY_<TARGET>_<KEY> for event notification and RUSTFS_AUDIT_<TARGET>_<KEY> for audit logs. Supported targets in both families: WEBHOOK, KAFKA, MQTT, MYSQL, POSTGRES, NATS, REDIS, AMQP, PULSAR.

Sub-keys for the webhook target (the same keys exist under RUSTFS_AUDIT_WEBHOOK_*):

VariableDefaultDescription
RUSTFS_NOTIFY_WEBHOOK_ENABLEfalseEnable the webhook target.
RUSTFS_NOTIFY_WEBHOOK_ENDPOINTunsetWebhook HTTP(S) endpoint URL.
RUSTFS_NOTIFY_WEBHOOK_AUTH_TOKENunsetBearer token sent with each delivery.
RUSTFS_NOTIFY_WEBHOOK_QUEUE_DIRunsetDirectory for the persistent delivery queue.
RUSTFS_NOTIFY_WEBHOOK_QUEUE_LIMITunsetMaximum queued events.
RUSTFS_NOTIFY_WEBHOOK_CLIENT_CERTunsetClient certificate for mTLS to the endpoint.
RUSTFS_NOTIFY_WEBHOOK_CLIENT_KEYunsetClient private key for mTLS to the endpoint.
RUSTFS_NOTIFY_WEBHOOK_CLIENT_CAunsetCA certificate used to verify the endpoint.
RUSTFS_NOTIFY_WEBHOOK_SKIP_TLS_VERIFYunsetSkip TLS verification of the endpoint (not recommended).

Other targets follow the same shape with target-specific keys, e.g. RUSTFS_NOTIFY_KAFKA_BROKERS, RUSTFS_NOTIFY_KAFKA_TOPIC, RUSTFS_NOTIFY_MQTT_BROKER, RUSTFS_NOTIFY_MQTT_TOPIC, RUSTFS_NOTIFY_MYSQL_DSN_STRING, RUSTFS_NOTIFY_NATS_ADDRESS, RUSTFS_NOTIFY_REDIS_URL, RUSTFS_NOTIFY_AMQP_URL, RUSTFS_NOTIFY_PULSAR_BROKER.

Legacy compatibility

MINIO_* variable mapping

For migration convenience, RustFS maps a fixed allowlist of MINIO_* variables to their RUSTFS_* equivalents at startup:

  • If only the MINIO_-prefixed variable is set, its value is used and a deprecation warning is logged.
  • If both MINIO_* and RUSTFS_* are set with different values, the RUSTFS_* value wins and a conflict is recorded.

The mapped suffixes include ACCESS_KEY, SECRET_KEY, ACCESS_KEY_FILE, SECRET_KEY_FILE, ROOT_USER, ROOT_PASSWORD, ADDRESS, CONSOLE_ADDRESS, VOLUMES, REGION, LICENSE, ERASURE_SET_DRIVE_COUNT, STORAGE_CLASS_STANDARD, STORAGE_CLASS_RRS, STORAGE_CLASS_OPTIMIZE, STORAGE_CLASS_INLINE_BLOCK, SCANNER_SPEED, SCANNER_CYCLE, COMPRESS_ENABLE, COMPRESS_EXTENSIONS, COMPRESS_MIME_TYPES, DRIVE_ACTIVE_MONITORING, ILM_EXPIRATION_WORKERS, API_XFF_HEADER, POLICY_PLUGIN_URL, POLICY_PLUGIN_AUTH_TOKEN, the IDENTITY_OPENID_* keys, and every variable starting with NOTIFY_WEBHOOK_, NOTIFY_MQTT_, AUDIT_WEBHOOK_, or AUDIT_MQTT_. For example, MINIO_ROOT_USER maps to RUSTFS_ROOT_USER and MINIO_NOTIFY_WEBHOOK_ENDPOINT maps to RUSTFS_NOTIFY_WEBHOOK_ENDPOINT.

Deprecated aliases

Deprecated variableUse instead
RUSTFS_ROOT_USERRUSTFS_ACCESS_KEY
RUSTFS_ROOT_PASSWORDRUSTFS_SECRET_KEY
RUSTFS_DATA_SCANNER_START_DELAY_SECSRUSTFS_SCANNER_START_DELAY_SECS

Deprecated aliases still work but log a warning; the canonical RUSTFS_* name always takes precedence when both are set.

On this page