Startup Configuration File

AIStor supports using a YAML-formatted configuration file for specifying startup server parameters. The configuration file supports specific advanced deployment patterns, such as distributed clusters with non-sequential hostnames or otherwise heterogeneous hostname patterns.

Example config.yaml

The following example configuration lists all available fields and example values for AIStor Server RELEASE.2026-02-02T23-40-11Z and later. Remove any parameters you do not need.

version: v2

# Core settings
address: ":9000"
consoleAddress: ":9001"
rootUser: "minioadmin"
rootPassword: "secret-CHANGE-ME"
license: "/path/to/license.minio"
certsDir: "/etc/minio/certs"

# Behavior settings
api: "S3"
objectNaming: "safe"

# Storage configuration
storage:
  lazyAccessTime: "24h"

# FTP server configuration
ftp:
  address: ":8021"
  passivePortRange: "30000-40000"

# SFTP server configuration
sftp:
  address: ":8022"
  sshPrivateKey: "/etc/minio/sftp-key"

# Storage pools
pools:
  - args:
      - "https://rack1.example.com:9000/mnt/disk{1...4}"
      - "https://rack3.example.com:9000/mnt/disk{1...4}"
      - "https://rack5.example.com:9000/mnt/disk{1...4}"
      - "https://rack7.example.com:9000/mnt/disk{1...4}"
  - args:
      - "https://rack2.example.com:9000/mnt/disk{1...4}"
      - "https://rack4.example.com:9000/mnt/disk{1...4}"
      - "https://rack6.example.com:9000/mnt/disk{1...4}"
      - "https://rack8.example.com:9000/mnt/disk{1...4}"

Parameters

Core settings

The configuration file must include the version and pools fields. All other fields are optional.

# version param

Required

Configuration format version. Must be v2. Specify a string value.

# address param
Bind address and listen port for the S3 API. Specify a string value. Defaults to :9000.
# consoleAddress param
Bind address and listen port for the web console. Specify a string value. Defaults to :9001.
# rootUser param
Root username for initial authentication. Specify a string value. Defaults to minioadmin.
# rootPassword param
Root password for initial authentication. Specify a string value. Defaults to minioadmin.
# license param
Path to the AIStor license file. Specify a string value.
# certsDir param
Directory containing TLS certificates. Specify a string value. Defaults to /etc/minio/certs.
# pools param

Required

Array of storage pool configurations. See Pools.

Behavior settings

# api param

API mode. Set to S3 for standard S3 API compatibility.

Specify a string value.

# objectNaming param

Object naming mode.

Options:

  • safe (default)
  • extended (supports // in names). For more details on the extended mode, see Extended name mode.

This mode cannot be changed after initial AIStor boot.

Specify a string value. Defaults to safe.

# bootstrapLeader param
Bootstrap leader node URL for coordinating cluster formation (for example, https://node1.example.com:9000). Specify a string value.
# idpHttpMode param
IDP HTTP mode setting. Set to on to allow HTTP for IDP endpoints. Specify a string value.
# memLimit param
Memory limit for the server process (for example, 8GiB). Supports standard size suffixes. Specify a string value.

Network configuration

The network object configures network behavior and timeouts. All fields are optional.

# idleTimeout param
Maximum time to wait for the next request when keep-alive is enabled. Specify a duration value. Defaults to 30s.
# readHeaderTimeout param
Time allowed to read request headers. Specify a duration value. Defaults to 10s.
# connUserTimeout param
Custom TCP_USER_TIMEOUT for socket buffers. Specify a duration value. Defaults to 10m.
# interface param
Bind to specific VRF device for AIStor services. Specify a string value for the interface name.
# dnsCacheTTL param
DNS cache TTL. In orchestrated environments, defaults to 30s. Specify a duration value. Defaults to 1h.
# maxIdleConnsPerHost param
Maximum idle connections per host. Specify an integer value. Defaults to 100.
# sendBufSize param
Send buffer size in bytes. Specify an integer value. Defaults to 262144.
# recvBufSize param
Receive buffer size in bytes. Specify an integer value. Defaults to 262144.
# writeBufSize param
Write buffer size in bytes. Specify an integer value. Defaults to 32768.
# readBufSize param
Read buffer size in bytes. Specify an integer value. Defaults to 32768.

Duration values support standard Go duration formats (for example, 30s, 10m, 1h).

Log configuration

The log object configures logging behavior. All fields are optional.

# json param
Enable JSON-formatted logging output. Specify true or false. Defaults to false.
# dir param
Directory path for log files. If not set, logs to stdout.
# size param
Maximum log file size in MB before rotation. Specify an integer. Defaults to 100.
# compress param
Compress rotated log files with gzip. Specify true or false. Defaults to false.
# prefix param
Prefix to use for log files.
# quiet param

Deprecated

Disable startup informational messages. Specify true or false. Defaults to false.

# anonymous param

Deprecated

Hide sensitive information from logs (such as credentials and IPs). Specify true or false. Defaults to false.

Storage configuration

The storage object configures storage behavior. All fields are optional.

# lazyAccessTime param
Interval for lazy access time updates to reduce write load on drives. Specify a duration in a format like 12h or 2d. Defaults to 24h.

FTP configuration

The ftp object configures the optional FTP server. See File Transfer Protocol for more information.

# address param
Bind address for FTP server (for example, :8021).
# passivePortRange param
Port range for FTP passive mode (for example, 30000-40000).

SFTP configuration

The sftp object configures the optional SFTP server. See File Transfer Protocol for more information.

# address param
Bind address for SFTP server (for example, :8022).
# sshPrivateKey param
Path to SSH private key file for authentication.

Pools

The pools field takes an array of args, each of which defines a set of hosts in a server pool. Each arg element is an endpoint string that supports standard ellipsis notation {n...m} for specifying sequential series of IP or hostnames. You can specify any combination of hosts and drives, allowing for more complex topologies without modifying OS settings like /etc/hosts or customized DNS configurations.

For example, the following configuration defines a pool with four hosts with heterogeneous naming conventions:

pools:
  - args:
      - "https://rack2.example.com:9000/mnt/disk{1...4}"
      - "https://rack4.example.com:9000/mnt/disk{1...4}"
      - "https://198.51.100.10:9000/mnt/disk{1...8}"
      - "https://203.0.113.10:9000/mnt/disk{1...8}"

While the pools configuration supports complex topologies, it requires careful planning and consideration around the consequences or outcomes of the selected infrastructure. The uneven drive distribution in this sample configuration results in certain hosts having a higher impact on HA and performance in the event of planned or unexpected downtime.

Configuration settings and CLI equivalents

The following tables map configuration file fields to their corresponding environment variables and command-line flags, along with the precedence order when the same parameter is configured in multiple ways.

Core settings

Config File Environment Variable CLI Flag Precedence Order
pools.args MINIO_VOLUMES minio server DIRS Config > Env
address MINIO_ADDRESS --address Config > Env > CLI
consoleAddress MINIO_CONSOLE_ADDRESS --console-address Config > Env > CLI
license - --license Config > CLI
certsDir - --certs-dir Config > CLI
rootUser MINIO_ROOT_USER - Env > Config
rootPassword MINIO_ROOT_PASSWORD - Env > Config

Behavior settings

Config File Environment Variable CLI Flag Precedence Order
api - --api Config > CLI
objectNaming MINIO_OBJECT_NAMING --object-naming Config > Env > CLI
bootstrapLeader - --bootstrap-leader Config > CLI
idpHttpMode - --idp-http-mode Config > CLI
memLimit - --mem-limit Config > CLI

Storage configuration

Config File Environment Variable CLI Flag Precedence Order
storage.lazyAccessTime - --lazy-access-time Config > CLI

FTP and SFTP configuration

Config File CLI Flag Precedence Order
ftp.address --ftp=“address=:8021” Config > CLI
ftp.passivePortRange --ftp=“passive-port-range=…” Config > CLI
sftp.address --sftp=“address=:8022” Config > CLI
sftp.sshPrivateKey --sftp=“ssh-private-key=…” Config > CLI