.. _minio-software-checklists:
==================
Software Checklist
==================
.. default-domain:: minio
.. contents:: Table of Contents
   :local:
   :depth: 2
Use the following checklist when planning the software configuration for a production, distributed MinIO deployment.
MinIO Pre-requisites
--------------------
.. list-table::
   :widths: auto
   :width: 100%
   * - :octicon:`circle`
     - Servers running a Linux operating system with a 5.x+ kernel, such as Red Hat Enterprise Linux (RHEL) 9 or Ubuntu LTS 20.04+
   * - :octicon:`circle`
     - A method to synchronize time servers across nodes, such as with ``ntp``, ``timedatectl`` or ``timesyncd``.
       The method to use varies by operating system.
       Check with your operating system's documentation for how to synchronize time with a time server.
   * - :octicon:`circle`
     - Disable system services that index, scan, or audit the filesystem, system-level calls, or kernel-level calls (``mlocate``, ``auditd``). 
       These services can reduce performance due to resource contention or interception of MinIO operations.
       You can alternatively configure these services to ignore or exclude MinIO directories and processes.
   * - :octicon:`circle` 
     - System administrator access to the remote servers
   * - :octicon:`circle`
     - A management tool for distributed systems, such as Ansible, Terraform, or Kubernetes for orchestrated environments.
       Kubernetes infrastructures should use the MinIO Operator for best results.
   * - :octicon:`circle`
     - Load balancer to handle routing of requests (for example, `NGINX `__)
   * - :octicon:`circle`
     - :ref:`Prometheus ` or a Prometheus-compatible setup for monitoring and metrics
   * - :octicon:`circle`
     - :ref:`Grafana configured ` for dashboards 
   * - :octicon:`circle` 
     - (optional) :mc:`mc` installed on the local host system
MinIO Install
-------------
Install the MinIO server binary across all nodes, ensuring that each node uses the same version of that binary.
.. cond:: linux
   See the :ref:`Multi Node Multi Drive deployment guide ` for more information.
.. cond:: container or macos or windows
   See the :ref:`Single Node Single Drive deployment guide ` for more information.
.. cond:: k8s
   See the :ref:`Deploy MinIO Operator ` and :ref:`Minio Tenant deployment guide ` for more information.
Post Install Tasks
------------------
.. list-table::
   :widths: auto
   :width: 100%
   * - :octicon:`circle` 
     - (optional) Create an :mc:`mc alias` for each server with :mc:`mc alias set` from your local machine for command line access to work with the MinIO deployment from a local machine
   * - :octicon:`circle`
     - Configure :ref:`Bucket replication ` to duplicate contents of a bucket to another bucket location
   * - :octicon:`circle`
     - Configure :ref:`Site replication ` to synchronize contents of multiple dispersed data center locations
   * - :octicon:`circle`
     - Configure :ref:`Object retention rules with lifecycle management ` to manage when objects should expire
   * - :octicon:`circle`
     - Configure :ref:`Object storage level rules with tiering ` to move objects between hot, warm, and cold storage and maximize storage cost efficiencies
3rd Party Identity Provider Tasks
---------------------------------
.. list-table::
   :widths: auto
   :width: 100%
   * - :octicon:`circle`
     - | Authenticate to MinIO with :ref:`Security Token Service (STS) `
       | Enabling this requires MinIO support.