Documentation

Use MinIO for object storage

Use MinIO as the object store for your InfluxDB 3 Enterprise instance. InfluxDB uses the MinIO S3-compatible API to interact with your MinIO server or cluster.

MinIO is a high-performance, S3-compatible object storage solution released under the GNU AGPL v3.0 license. Designed for speed and scalability, it powers AI/ML, analytics, and data-intensive workloads with industry-leading performance.

MinIO GitHub repository

MinIO provides both an open source version (MinIO Community Edition) and an enterprise version (MinIO AIStor). While both can be used as your InfluxDB 3 Enterprise object store, this guide walks through using MinIO Community Edition.

Set up MinIO

  1. Install and deploy a MinIO server or cluster.

    You can install MinIO locally for testing and development or you can deploy a production MinIO cluster across multiple machines. The MinIO documentation provides detailed instructions for installing and deploying MinIO based on your target operating system:

  2. Download and install the MinIO Client (mc).

    The MinIO client, or mc CLI, lets you perform administrative tasks on your MinIO server or cluster like creating users, assigning access policies, and more. Download and install the mc CLI for your local operating system and architecture.

    See the MinIO Client section of the MinIO downloads page.

  3. Configure the mc CLI to connect to your MinIO server or cluster.

    The mc CLI uses “aliases” to connect to a MinIO server or cluster. The alias refers to a set of connection credentials used to connect to and authorize with your MinIO server.

    Use the mc alias set command and provide the following:

    • Alias: A unique name or identifier for this credential set (ALIAS)
    • MinIO URL: The URL of your MinIO server or cluster (https://localhost:9000 if running locally)
    • Root username: The root username you specified when setting up your MinIO server or cluster (ROOT_USERNAME)
    • Root password: The root password you specified when setting up your MinIO server or cluster (ROOT_PASSWORD)
    mc alias set 
    ALIAS
    http://localhost:9000
    ROOT_USERNAME
    ROOT_PASSWORD
  4. Create a MinIO bucket.

    Use the MinIO Console or the mc mb command to create a new bucket in your MinIO server or cluster.

    The MinIO Console is a graphical user interface that lets you manage and browse buckets in your MinIO server or cluster. By default, the console is served on port 9001.

    If running MinIO on your local machine, visit http://localhost:9001 to access the MinIO Console. If MinIO is running on a remote server, use your custom domain or IP to access the MinIO console.

    1. In the Minio Console, click Create Bucket.
    2. Enter a bucket name. For this guide, use influxdb3.
    3. Click Create Bucket.

    Use the mc mb command to create a new MinIO bucket named influxdb3. Provide the MinIO alias configured in step 3 and the bucket name using the ALIAS/BUCKET_NAME syntax–for example:

    mc mb 
    ALIAS
    /influxdb3
  5. Create a MinIO user.

    Use the mc admin user add command to create a new user. Provide the following:

    • MinIO alias: The MinIO server alias (created in step 3) to add the user to (ALIAS)
    • Username: A unique username for the user (MINIO_USERNAME)
    • Password: A password for the user (MINIO_PASSWORD)
    mc admin user add 
    ALIAS
    MINIO_USERNAME
    MINIO_PASSWORD

    MinIO user credentials are equivalent to credentials you would typically use to authorize with AWS S3:

    • A MinIO username is equivalent to an AWS access key ID
    • A MinIO password is equivalent to an AWS secret key
  6. Create an access policy that grants full access to the influxdb3 bucket.

    MinIO uses S3 compatible access policies to authorize access to buckets. To create a new access policy:

    1. Create a file named influxdb3-policy.json that contains the following JSON:

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Action": [
              "s3:GetBucketLocation",
              "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::influxdb3"]
          },
          {
            "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::influxdb3/*"]
          }
        ]
      }
    2. Use the mc admin policy create command to create the new access policy in your MinIO server or cluster. Provide the following:

      • MinIO alias: The MinIO server alias (created in step 3) to add the access policy to (ALIAS)
      • Policy name: A unique name for the policy (POLICY_NAME)
      • Policy file: The relative or absolute file path of your influxdb3-policy.json policy file (/path/to/influxdb3-policy.json)
      mc admin policy create \
        
      ALIAS
      \
      POLICY_NAME
      \
      /path/to/influxdb3-policy.json
  7. Attach the access policy to your user.

    Use the mc admin policy attach command to attach the access policy to your user.

    MinIO supports attaching access policies to both users and user groups. All users in a user group inherit policies attached to the group. For information about managing MinIO user groups, see MinIO Group Management.

    Provide the following:

    • MinIO alias: The MinIO server alias created in step 3 (ALIAS)
    • Policy name: A unique username for the user (POLICY_NAME)
    • Username or group name: The user or user group to assign the policy to (MINIO_USERNAME or MINIO_GROUP_NAME)
    mc admin policy attach 
    ALIAS
    POLICY_NAME
    --user
    MINIO_USERNAME
    mc admin policy attach 
    ALIAS
    POLICY_NAME
    --group
    MINIO_GROUP_NAME

Your MinIO server or cluster is now set up and ready to be used with InfluxDB 3 Enterprise.

Configure InfluxDB to connect to MinIO

To use your MinIO server or cluster as the object store for your InfluxDB 3 Enterprise instance, provide the following options or environment variables with the influxdb3 serve command:

  • --cluster-id: Your InfluxDB 3 Enterprise cluster ID (INFLUXDB_CLUSTER_ID)
  • --node-id: Your InfluxDB 3 Enterprise node ID (INFLUXDB_NODE_ID)
  • --object-store: s3
  • --bucket: influxdb3
  • --aws-endpoint: Your MinIO URL (http://localhost:9000 if running locally)
  • --aws-access-key-id: Your MinIO username (MINIO_USERNAME)
  • --aws-secret-access-key: Your MinIO password (MINIO_PASSWORD)
  • --aws-allow-http: (Optional) Include if not using HTTPS to connect to your MinIO server or cluster
influxdb3 serve \
  --cluster-id 
INFLUXDB_CLUSTER_ID
\
--node-id
INFLUXDB_NODE_ID
\
--object-store s3 \ --bucket influxdb3 \ --aws-endpoint
http://localhost:9000
\
--aws-access-key-id
MINIO_USERNAME
\
--aws-secret-access-key
MINIO_PASSWORD
\
--aws-allow-http
  • INFLUXDB3_ENTERPRISE_CLUSTER_ID: Your InfluxDB 3 Enterprise cluster ID (INFLUXDB_CLUSTER_ID)
  • INFLUXDB3_NODE_IDENTIFIER_PREFIX: Your InfluxDB 3 Enterprise node ID (INFLUXDB_NODE_ID)
  • INFLUXDB3_OBJECT_STORE: s3
  • INFLUXDB3_BUCKET: influxdb3
  • AWS_ENDPOINT: Your MinIO URL (http://localhost:9000 if running locally)
  • AWS_ACCESSKEY_ID: Your MinIO username (MINIO_USERNAME)
  • AWS_SECRET_ACCESS_KEY: Your MinIO password (MINIO_PASSWORD)
  • AWS_ALLOW_HTTP: (Optional) Set to true if not using HTTPS to connect to your MinIO server or cluster (default is false)
export INFLUXDB3_ENTERPRISE_CLUSTER_ID=
INFLUXDB_CLUSTER_ID
export INFLUXDB3_NODE_IDENTIFIER_PREFIX=
INFLUXDB_NODE_ID
export INFLUXDB3_OBJECT_STORE=s3 export INFLUXDB3_BUCKET=influxdb3 export AWS_ENDPOINT=
http://localhost:9000
export AWS_ACCESS_KEY_ID=
MINIO_USERNAME
export AWS_SECRET_ACCESS_KEY=
MINIO_PASSWORD
export AWS_ALLOW_HTTP=true influxdb3 serve

Confirm the object store is working

When InfluxDB 3 Enterprise starts, it will seed your MinIO object store with the necessary directory structure and begin storing data there. Confirm the object store is functioning properly:

  1. View the influxdb3 serve log output to confirm that the server is running correctly.

  2. Inspect the contents of your MinIO influxdb3 bucket to confirm that the necessary directory structure is created. You can use the MinIO Console or the mc ls command to view the contents of a bucket–for example:

    mc ls 
    ALIAS
    /influxdb3

Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

New in InfluxDB 3.4

Key enhancements in InfluxDB 3.4 and the InfluxDB 3 Explorer 1.2.

See the Blog Post

InfluxDB 3.4 is now available for both Core and Enterprise, which introduces offline token generation for use in automated deployments and configurable license type selection that lets you bypass the interactive license prompt. InfluxDB 3 Explorer 1.2 is also available, which includes InfluxDB cache management and other new features.

For more information, check out: