> For the complete documentation index, see [llms.txt](https://docs.openg2p.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openg2p.org/operations/deployment/deployment-guide/minio-standalone-installation-guide-on-ubuntu-vm.md).

# MinIO Standalone Installation Guide on Ubuntu VM

### Overview

This document guides you through installing **MinIO in standalone mode** on a single Ubuntu-based VM, either from AWS Cloud or a native datacenter/server. This setup is suitable for development, testing, or small production use cases, with flexibility to scale into a distributed cluster later.

### Prerequisites

* Operating System: Ubuntu 20.04+ VM (AWS EC2 or native server)
* 2vCPU / 4 GB RAM / 32 GB storage
* Root or sudo access to the VM
* Filesystem Recommendation: XFS over LVM (preferred for performance; ext4 can also be used initially)

### Minio standalone installation steps

1. Run this to update and install dependencies

   ```bash
   sudo apt update && sudo apt upgrade -y
   sudo apt install -y curl wget
   ```
2. Install MinIO

   Create user and data directory:

   ```bash
   # Create a system user 'minio-user' with no login shell
   sudo useradd -r minio-user -s /sbin/nologin

   # Create the directory for MinIO data
   sudo mkdir -p /data/minio

   # Set ownership of the directory to 'minio-user'
   sudo chown -R minio-user:minio-user /data/min
   ```

   Download MinIO binary:

   ```bash
   wget https://dl.min.io/server/minio/release/linux-amd64/minio
   chmod +x minio
   sudo mv minio /usr/local/bin/
   ```
3. Create MinIO Systemd Service

   Create the service file:

   ```bash
   sudo nano /etc/systemd/system/minio.service
   ```

   Paste the following configuration:

   ```bash
   [Unit]
   Description=MinIO
   After=network.target

   [Service]
   User=minio-user
   Group=minio-user
   ExecStart=/usr/local/bin/minio server /data/minio --console-address ":9001"
   Restart=always
   LimitNOFILE=65536
   Environment="MINIO_ACCESS_KEY=minioadmin"
   Environment="MINIO_SECRET_KEY=minioadmin123"

   [Install]
   WantedBy=multi-user.target
   ```

   > **Note:** Change `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY` to secure values.
4. Start and Enable MinIO

   ```bash
   sudo systemctl daemon-reexec
   sudo systemctl enable minio
   sudo systemctl start minio
   sudo systemctl status minio
   ```
5. Access MinIO Web Console
   1. Open your browser and go to:\
      `http://<your-server-ip>:9001`
   2. Login using the `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY`.

### Scaling later (Distributed MinIO)

* You can scale to a **multi-node distributed setup** by adding VMs and drives.
* MinIO supports **erasure coding**, **high availability**, and **horizontal scalability**.
* Ensure:
  * Consistent hardware across nodes (CPU, RAM, disk)
  * XFS file system across all volumes


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openg2p.org/operations/deployment/deployment-guide/minio-standalone-installation-guide-on-ubuntu-vm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
