---
title: "How to install MinIO on a VPS: S3, HTTPS and alternatives | StreetHosting"
description: "Install MinIO on a VPS with data on NVMe, systemd, a domain and HTTPS, understand the end of the community edition and compare Garage and SeaweedFS first."
url: "https://streethosting.com.br/en/guides/vps/install-minio-on-vps"
type: "page"
language: "en-US"
---

VPS · 10 min · Advanced

Published on Sep 28, 2026 · Updated on Sep 28, 2026

# MinIO on a VPS: S3-compatible storage and what changed in the project

MinIO became the go-to name for self-hosted S3 storage, but the community edition was archived and no longer receives fixes. Here is how to install it anyway, with a volume, a domain and HTTPS, and which maintained alternatives to evaluate for new projects.

By [Equipe StreetHosting](https://streethosting.com.br/en/autores#equipe-streethosting) · StreetHosting infrastructure and support team

[Linux administration](https://streethosting.com.br/en/guides/topics/linux) [Databases](https://streethosting.com.br/en/guides/topics/databases) [Network, DNS and domains](https://streethosting.com.br/en/guides/topics/networking) [Certificates and HTTPS](https://streethosting.com.br/en/guides/topics/ssl)

Summarize with:

[](https://chat.openai.com/?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "ChatGPT") [](https://claude.ai/new?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Claude") [](https://www.google.com/search?udm=50&aep=11&q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Google AI Mode") [](https://x.com/i/grok?text=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Grok") [](https://www.perplexity.ai/search/new?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Perplexity")

Share:

[](https://x.com/intent/tweet?text=How%20to%20install%20MinIO%20on%20a%20VPS%3A%20S3%2C%20HTTPS%20and%20alternatives&url=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps "Share on X") [](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps "Share on Facebook") [](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps "Share on LinkedIn") [](https://wa.me/?text=How%20to%20install%20MinIO%20on%20a%20VPS%3A%20S3%2C%20HTTPS%20and%20alternatives%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Finstall-minio-on-vps "Share on WhatsApp")

For agents: Copy as Markdown [.md](https://streethosting.com.br/en/guides/vps/install-minio-on-vps.md)

In this guide 8 sections

* [What changed in MinIO](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#o-que-mudou)
* [MinIO or an alternative](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#minio-ou-alternativa)
* [Disk, volumes and capacity](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#disco-e-volumes)
* [Build and run as a service](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#instalar)
* [Domain and HTTPS with Nginx](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#dominio-https)
* [Buckets, users and applications](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#buckets-usuarios)
* [Common errors](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#erros-comuns)
* [Where to host the storage](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#onde-rodar)

Quick answer

To **install MinIO on a VPS** today, you have to build the server from source: the community edition was archived in April 2026 and the official binaries and images are no longer distributed. With the binary in hand, the path is the usual one: data in a directory on NVMe, a systemd service listening only on 127.0.0.1, Nginx with HTTPS in front and a user with a restricted policy for each application. For new projects, evaluate maintained S3-compatible alternatives such as Garage and SeaweedFS first.

## What changed in MinIO[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#o-que-mudou)

For years MinIO was the default answer for anyone who wanted S3-compatible object storage on their own server: a single binary, a web console and good compatibility with the AWS SDKs. Between 2025 and 2026 the company behind the project changed how it distributes the community edition, in stages:

* **2025, reduced console:** the web interface of the community edition lost its administration features, such as users, policies and configuration. Only the object browser remained, and administration moved to the command-line client `mc`.
* **Late 2025, source code only:** the community edition stopped shipping official binaries and Docker images, and in December the repository entered maintenance mode.
* **2026, archived:** the repository notice changed to say the project is no longer maintained and, in April, it was archived in read-only mode. The download site now states that the community server, _mc_ client and KES receive neither updates nor security advisories.

In practice, the code keeps working and remains under AGPLv3, but any vulnerability discovered from here on stays open unless someone maintains a fork of the project. Exposing a service without security fixes to the internet is a risk you have to take on knowingly. Since the situation changed several times in a short period, check the current state in the [official MinIO repository](https://github.com/minio/minio) before deciding.

## MinIO or an alternative[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#minio-ou-alternativa)

If you already have MinIO running, the decision is when to migrate, not whether to reinstall from scratch. If the project is new, it is worth comparing first. The table summarizes the most cited options for anyone who wants S3-compatible storage on their own server.

| Option                            | License                             | Status                                       | When it makes sense                                                           |
| --------------------------------- | ----------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------- |
| Community MinIO built from source | AGPLv3                              | Archived, no fixes                           | Existing installation or internal network use while you plan the migration    |
| AIStor Free                       | Proprietary license from MinIO Inc. | Commercial product maintained by the company | Anyone who wants to stay in the MinIO ecosystem and accepts the license terms |
| Garage                            | AGPLv3                              | Active project, check the releases           | Lightweight storage on one or a few servers, including in different locations |
| SeaweedFS                         | Apache 2.0                          | Active project, check the releases           | Many small files and growth to multiple volumes and servers                   |

None of these options implements the entire S3 API. Garage, for example, covers the most used operations but not every advanced feature; if your application depends on something like versioning or object locking, check the compatibility table in each project's documentation and test before migrating. The good news is that the rest of this guide applies to any of them: disk, a service listening only locally, Nginx with HTTPS and separate credentials per application are the same architecture.

## Disk, volumes and capacity[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#disco-e-volumes)

On a VPS, MinIO runs in single-server mode with a single volume: a directory where it writes the objects. In this mode there is no erasure coding, the technique that spreads pieces of each object across several disks to survive the loss of one of them. Data durability becomes that of the VPS disk plus your backups. That is why object storage does not replace backup: it needs backup, preferably following the [3-2-1 strategy](https://streethosting.com.br/en/guides/infrastructure/3-2-1-backup-strategy).

* **Dedicated directory:** use something like `/srv/minio/data`, owned by the service user, and do not write files there outside of MinIO. The server keeps its own metadata alongside the objects.
* **File system:** the MinIO documentation recommends XFS for data disks. On a VPS, the root disk usually comes as ext4, which is fine for small and medium installations.
* **Free space:** reserve space for the system, logs and updates, and set up an alert for when the disk passes 80%. A full disk makes the server refuse writes.
* **Growth:** a plan upgrade increases the VPS disk, and then you need to expand the partition and file system, as shown in the guide on [expanding the VPS disk](https://streethosting.com.br/en/guides/vps/expand-linux-vps-disk).

## Build and run as a service[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#instalar)

### Build the server and the client[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#compilar)

The current code requires Go 1.24 or newer. The Go package in the Ubuntu 24.04 apt repositories is older, so install a recent version through snap or the official package from go.dev. Then build the server and the client and copy the binaries to `/usr/local/bin`:

`sudo snap install go --classic go version CGO_ENABLED=0 go install github.com/minio/minio@latest CGO_ENABLED=0 go install github.com/minio/mc@latest sudo install -m 755 ~/go/bin/minio /usr/local/bin/minio sudo install -m 755 ~/go/bin/mc /usr/local/bin/mc minio --version`

The `@latest` picks up the last version published before the archive, which includes the fixes made up to that point. The build uses a lot of memory: on a 2 GB VPS, enable swap first or build on your own computer with `GOOS=linux GOARCH=amd64` and send the binary over with scp or rsync. If you use Midnight Commander, note that its executable is also called _mc_; install the MinIO client under another name to avoid the conflict.

### User, configuration and systemd[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#servico)

The server runs as a system user with no shell and no access to the rest of the machine:

`sudo useradd --system --no-create-home --shell /usr/sbin/nologin minio-user sudo mkdir -p /srv/minio/data sudo chown -R minio-user:minio-user /srv/minio`

Create the environment file `/etc/default/minio` and protect it with `sudo chmod 600 /etc/default/minio`, because it holds the root credential:

`MINIO_VOLUMES="/srv/minio/data" MINIO_OPTS="--address 127.0.0.1:9000 --console-address 127.0.0.1:9001" MINIO_ROOT_USER="admin_minio" MINIO_ROOT_PASSWORD="troque_por_uma_senha_longa_e_aleatoria" MINIO_SERVER_URL="https://s3.seu-dominio.com.br"`

The `--address` and `--console-address` on 127.0.0.1 make the S3 API and the console listen only locally: anyone coming from outside has to go through Nginx with HTTPS. The `MINIO_SERVER_URL` sets the public address, used in presigned links and by the console. Then create the unit `/etc/systemd/system/minio.service`:

`[Unit] Description=MinIO Wants=network-online.target After=network-online.target [Service] User=minio-user Group=minio-user EnvironmentFile=/etc/default/minio ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES Restart=always LimitNOFILE=1048576 [Install] WantedBy=multi-user.target`

`sudo systemctl daemon-reload sudo systemctl enable --now minio sudo systemctl status minio curl -I http://127.0.0.1:9000/minio/health/live`

The last command should answer _200 OK_. The high `LimitNOFILE` is there because every object and every connection consumes file descriptors, and the default limit runs out early under load.

## Domain and HTTPS with Nginx[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#dominio-https)

Create an A record for `s3.seu-dominio.com.br` pointing to the VPS IP, install Nginx and create `/etc/nginx/sites-available/minio`:

`server { listen 80; server_name s3.seu-dominio.com.br; ignore_invalid_headers off; client_max_body_size 0; proxy_buffering off; proxy_request_buffering off; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 300; proxy_http_version 1.1; proxy_set_header Connection ""; chunked_transfer_encoding off; proxy_pass http://127.0.0.1:9000; } }`

Three lines make the difference. The `client_max_body_size 0` removes the 1 MB Nginx limit, which otherwise blocks any larger upload. The `proxy_request_buffering off` passes the upload straight to MinIO without writing a temporary copy to disk. And the `Host $http_host` preserves the header that goes into the S3 signature. Enable the site and issue the certificate:

`sudo ln -s /etc/nginx/sites-available/minio /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d s3.seu-dominio.com.br sudo ufw allow "Nginx Full"`

Do not open ports 9000 and 9001 in the firewall. Issuing and renewing the certificate is covered in the guide on [SSL with Let's Encrypt](https://streethosting.com.br/en/guides/vps/lets-encrypt-ssl-certificate-vps).

Since the community console today only browses objects, there is no point publishing it on the internet. When you need it, open a tunnel with `ssh -N -L 9001:127.0.0.1:9001 usuario@IP_DA_VPS` and open `http://127.0.0.1:9001` in your browser. Less exposed surface on software that no longer receives fixes.

## Buckets, users and applications[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#buckets-usuarios)

The root credential works like the AWS root account: it is for administration, never for an application. Configure the client from the VPS itself; without the keys on the command line, _mc_ prompts for them interactively:

`mc alias set local http://127.0.0.1:9000 mc mb local/backups mc admin user add local app_backups`

Next, create a policy that only allows access to the _backups_ bucket, save it as `politica-backups.json` and attach it to the user:

`{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket", "s3:GetBucketLocation"], "Resource": ["arn:aws:s3:::backups"] }, { "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::backups/*"] } ] }`

`mc admin policy create local backups-rw politica-backups.json mc admin policy attach local backups-rw --user app_backups`

In the application, three settings avoid almost every first-connection problem:

* **Endpoint:** `https://s3.seu-dominio.com.br`, never the internal address.
* **Path style:** MinIO defaults to the bucket in the URL path, not as a subdomain. In the AWS JavaScript SDK that is `forcePathStyle: true`; in boto3, `Config(s3={"addressing_style": "path"})`.
* **Region:** use `us-east-1`, the MinIO default, unless you configured another one.

A classic use is serving as the destination for restic: with the user's keys in the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` variables, the repository lives at `s3:https://s3.seu-dominio.com.br/backups`. The complete flow is in the guide on [automated backup with restic and cron](https://streethosting.com.br/en/guides/vps/vps-backup-restic-cron). It only makes sense if MinIO is on another machine: a backup written to the same VPS it protects disappears along with it.

## Common errors[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#erros-comuns)

* **SignatureDoesNotMatch:** the proxy changed the Host header or the VPS clock is wrong. Check the `proxy_set_header Host $http_host` line and the time sync with `timedatectl`, as in the guide on [correct time with NTP](https://streethosting.com.br/en/guides/infrastructure/configure-ntp-linux-server).
* **413 Request Entity Too Large:** `client_max_body_size` is missing from the Nginx block.
* **Bucket not found or DNS error in the SDK:** the client is building `backups.s3.seu-dominio.com.br`. Enable path style.
* **Service fails to start with a file access error:** the data directory is not owned by `minio-user`. Check with `sudo journalctl -u minio -n 50`.

Do not make a bucket public unless you have to. The `mc anonymous set download` command opens read access to anyone on the internet, and buckets opened by mistake are one of the most common causes of data leaks in object storage.

## Where to host the storage[](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#onde-rodar)

For object storage, the first resource to look at is disk, then network. CPU and RAM matter less, unless there are many concurrent requests. The [StreetHosting VPS](https://streethosting.com.br/en/vps) plans all use NVMe, are located in São Paulo and have a 1 Gbps uplink, which helps anyone uploading and downloading files from Brazil. StreetHosting does not sell ready-made object storage: you install the software you prefer on the VPS or the dedicated server.

| Object volume                 | Option                                                          | Monthly price |
| ----------------------------- | --------------------------------------------------------------- | ------------- |
| Up to about 30 GB             | Xeon VPS 3 vCPU, 4 GB, 40 GB NVMe                               | R$ 43.00      |
| Up to about 140 GB            | Xeon VPS 9 vCPU, 16 GB, 160 GB NVMe                             | R$ 145.00     |
| Up to about 290 GB            | Xeon VPS 15 vCPU, 32 GB, 320 GB NVMe                            | R$ 281.00     |
| Up to about 600 GB            | Xeon VPS 24 vCPU, 64 GB, 640 GB NVMe                            | R$ 553.00     |
| Above 640 GB                  | AMD Budget SM dedicated server, 64 GB, 2 TB NVMe                | R$ 1,499.00   |
| Several TB and lots of memory | Intel Mid Large dedicated server, 4 TB NVMe and two 490 GB SSDs | R$ 3,799.00   |

The volumes in the table already leave room for the system, logs and headroom. The VPS goes up to 640 GB of NVMe; above that, the [dedicated servers](https://streethosting.com.br/en/dedicated) in São Paulo come with 2 TB NVMe, a dedicated 10 Gbps uplink and delivery within 6 days. The [Xeon VPS](https://streethosting.com.br/en/vps/xeon) line is usually the pick for storage because it delivers the same disk for a lower price than Ryzen. Keep in mind that the disk can grow through the control panel but cannot always shrink: start with what you need and move up when real usage calls for it.

In this guide

* [What changed in MinIO](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#o-que-mudou)
* [MinIO or an alternative](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#minio-ou-alternativa)
* [Disk, volumes and capacity](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#disco-e-volumes)
* [Build and run as a service](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#instalar)
* [Domain and HTTPS with Nginx](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#dominio-https)
* [Buckets, users and applications](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#buckets-usuarios)
* [Common errors](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#erros-comuns)
* [Where to host the storage](https://streethosting.com.br/en/guides/vps/install-minio-on-vps#onde-rodar)

## Frequently asked questions

Is MinIO still free and open source?

The community edition code is still under AGPLv3, but the repository was archived in April 2026 and no longer receives security fixes. The company points users to AIStor, which has a free edition under its own license. Check the current state of the official repository before deciding.

Can I still download the MinIO binary or Docker image?

The community binaries and the mc client are no longer served from MinIO's download site, and the official images stopped being published. The only path left for the community edition is building from source, knowing that it does not receive updates.

What is the best alternative to MinIO for a VPS?

Garage and SeaweedFS are maintained projects compatible with the S3 API. Garage is lightweight and designed for a few servers; SeaweedFS handles many small files well and scales to multiple volumes. Test your application against the alternative, because none of them implements the entire S3 API.

How much space does a VPS offer for object storage?

StreetHosting VPS plans go up to 640 GB of NVMe. Above that, the dedicated servers come with 2 TB NVMe, and the Intel model has a 4 TB NVMe plus two 490 GB SSDs.

Why does my S3 client return SignatureDoesNotMatch behind Nginx?

The S3 signature includes the Host header. If the reverse proxy changes that header, the server computes a different signature and rejects the request. Use proxy\_set\_header Host $http\_host in Nginx and confirm that the VPS clock is synchronized.

Next step

See VPS plans

Root VPS in Brazil with NVMe and Anti-DDoS.

[See VPS plans](https://streethosting.com.br/en/vps)

[See dedicated servers Exclusive hardware in São Paulo with NVMe and Anti-DDoS.](https://streethosting.com.br/en/dedicated) [See Xeon VPS Xeon VPS for steady workloads, automation and long-running projects.](https://streethosting.com.br/en/vps/xeon)

## Related guides

[VPS Advanced How to automate VPS backups with restic and cron A backup that depends on you remembering does not work. With restic and cron you create encrypted snapshots, send them off the VPS, control retention and test restores without daily effort. 9 min Read guide](https://streethosting.com.br/en/guides/vps/vps-backup-restic-cron) [VPS Intermediate How to set up Nginx as a reverse proxy on a VPS Your app runs on an internal port and you want to serve it on a domain with HTTPS. Nginx as a reverse proxy solves that and also brings several apps together in one place. 3 min Read guide](https://streethosting.com.br/en/guides/vps/nginx-reverse-proxy-vps) [VPS Beginner SSL certificate on a VPS with Let's Encrypt and Nginx A site without the padlock loses trust and rankings. This guide shows how to issue, renew and audit a free SSL certificate on your VPS with Nginx and Certbot. 4 min Read guide](https://streethosting.com.br/en/guides/vps/lets-encrypt-ssl-certificate-vps)

[← Back to the Guide Center](https://streethosting.com.br/en/guides)
