---
title: "Como instalar MinIO na VPS: S3, HTTPS e alternativas"
description: "Instale o MinIO na VPS com dados no NVMe, systemd, domínio e HTTPS, entenda o fim da edição comunitária e compare com Garage e SeaweedFS antes de decidir."
url: "https://streethosting.com.br/guias/vps/instalar-minio-vps"
category: "vps"
slug: "instalar-minio-vps"
datePublished: "2026-09-28"
dateModified: "2026-09-28"
author: "Equipe StreetHosting"
difficulty: "avancado"
language: "pt-BR"
keywords:
  - "instalar minio vps"
  - "minio ubuntu systemd"
  - "armazenamento s3 vps"
  - "minio nginx https"
  - "alternativa minio garage seaweedfs"
---

# MinIO na VPS: armazenamento compatível com S3 e o que mudou no projeto

O MinIO virou sinônimo de armazenamento S3 próprio, mas a edição comunitária foi arquivada e deixou de receber correções. Veja como instalar mesmo assim, com volume, domínio e HTTPS, e quais alternativas mantidas avaliar para projetos novos.

> **Resposta rápida**
>
> Para **instalar MinIO na VPS** hoje, é preciso compilar o servidor a partir do código fonte: a edição comunitária foi arquivada em abril de 2026 e os binários e imagens oficiais deixaram de ser distribuídos. Com o binário pronto, o caminho é o de sempre: dados em um diretório no NVMe, serviço systemd ouvindo só em 127.0.0.1, Nginx com HTTPS na frente e um usuário com política restrita para cada aplicação. Para projetos novos, avalie antes alternativas mantidas e compatíveis com S3, como Garage e SeaweedFS.

## O que mudou no MinIO

Por anos o MinIO foi a resposta padrão para quem queria um armazenamento de objetos compatível com S3 no próprio servidor: um binário único, console web e boa compatibilidade com os SDKs da AWS. Entre 2025 e 2026 a empresa por trás do projeto mudou a forma de distribuir a edição comunitária, em etapas:

- **2025, console reduzido:** a interface web da edição comunitária perdeu as funções de administração, como usuários, políticas e configuração. Ficou só o navegador de objetos, e a administração passou a depender do cliente de linha de comando `mc`.
- **Fim de 2025, só código fonte:** a edição comunitária deixou de ter binários e imagens Docker oficiais, e em dezembro o repositório entrou em modo de manutenção.
- **2026, arquivamento:** o aviso do repositório passou a dizer que o projeto não é mais mantido e, em abril, ele foi arquivado em modo somente leitura. O site de downloads hoje informa que servidor, cliente *mc* e KES comunitários não recebem atualizações nem avisos de segurança.

Na prática, o código continua funcionando e continua sob AGPLv3, mas qualquer vulnerabilidade descoberta daqui em diante fica aberta, a menos que alguém mantenha uma derivação do projeto. Expor na internet um serviço sem correções de segurança é um risco que precisa ser assumido de forma consciente. Como a situação mudou várias vezes em pouco tempo, confira o estado atual no [repositório oficial do MinIO](https://github.com/minio/minio) antes de decidir.

## MinIO ou alternativa

Se você já tem um MinIO rodando, a decisão é quando migrar, não se deve reinstalar do zero. Se o projeto é novo, vale comparar antes. A tabela resume as opções mais citadas para quem quer armazenamento compatível com S3 no próprio servidor.

| Opção | Licença | Situação | Quando faz sentido |
| --- | --- | --- | --- |
| MinIO comunitário compilado | AGPLv3 | Arquivado, sem correções | Instalação existente ou uso em rede interna enquanto planeja a migração |
| AIStor Free | Licença própria da MinIO Inc. | Produto comercial mantido pela empresa | Quem quer seguir no ecossistema MinIO e aceita os termos da licença |
| Garage | AGPLv3 | Projeto ativo, confira os lançamentos | Armazenamento leve em um ou poucos servidores, inclusive em locais diferentes |
| SeaweedFS | Apache 2.0 | Projeto ativo, confira os lançamentos | Muitos arquivos pequenos e crescimento para vários volumes e servidores |

Nenhuma dessas opções implementa a API S3 inteira. O Garage, por exemplo, cobre as operações mais usadas, mas não todos os recursos avançados; se a sua aplicação depende de algo como versionamento ou bloqueio de objetos, confira a tabela de compatibilidade da documentação de cada projeto e teste antes de migrar. A boa notícia é que o resto deste guia vale para qualquer uma delas: disco, serviço ouvindo só localmente, Nginx com HTTPS e credenciais separadas por aplicação são a mesma arquitetura.

## Disco, volumes e capacidade

Em uma VPS, o MinIO roda no modo de servidor único com um único volume: um diretório onde ele grava os objetos. Nesse modo não existe erasure coding, a técnica que espalha pedaços de cada objeto por vários discos para sobreviver à perda de um deles. A durabilidade dos dados passa a ser a do disco da VPS mais os seus backups. Por isso armazenamento de objetos não substitui backup: ele precisa de backup, de preferência seguindo a [estratégia 3 2 1](https://streethosting.com.br/guias/infraestrutura/estrategia-backup-3-2-1-servidor).

- **Diretório dedicado:** use algo como `/srv/minio/data`, de propriedade do usuário do serviço, e não grave arquivos ali por fora do MinIO. O servidor mantém metadados próprios junto dos objetos.
- **Sistema de arquivos:** a documentação do MinIO recomenda XFS para os discos de dados. Em VPS, o disco raiz costuma vir em ext4, que atende instalações pequenas e médias.
- **Folga de espaço:** reserve espaço para o sistema, logs e atualizações, e crie um alerta quando o disco passar de 80%. Disco cheio faz o servidor recusar gravações.
- **Crescimento:** o upgrade de plano aumenta o disco da VPS, e depois é preciso expandir partição e sistema de arquivos, como mostra o guia de [expandir o disco da VPS](https://streethosting.com.br/guias/vps/expandir-disco-vps-linux).

## Compilar e rodar como serviço

### Compilar o servidor e o cliente

O código atual exige Go 1.24 ou mais novo. O Go do apt do Ubuntu 24.04 é mais antigo, então instale uma versão recente pelo snap ou pelo pacote oficial em go.dev. Depois, compile o servidor e o cliente e copie os binários para `/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
```

O `@latest` pega a última versão publicada antes do arquivamento, que inclui as correções feitas até ali. A compilação consome bastante memória: em uma VPS de 2 GB, ative swap antes ou compile no seu computador com `GOOS=linux GOARCH=amd64` e envie o binário com scp ou rsync. Se você usa o Midnight Commander, note que o executável dele também se chama *mc*; instale o cliente do MinIO com outro nome para evitar conflito.

### Usuário, configuração e systemd

O servidor roda com um usuário de sistema sem shell e sem acesso ao resto da máquina:

```
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
```

Crie o arquivo de ambiente `/etc/default/minio` e proteja com `sudo chmod 600 /etc/default/minio`, porque ele guarda a credencial principal:

```
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"
```

O `--address` e o `--console-address` em 127.0.0.1 fazem a API S3 e o console escutarem só localmente: quem vem de fora passa obrigatoriamente pelo Nginx com HTTPS. O `MINIO_SERVER_URL` informa o endereço público, usado em links assinados e pelo console. Depois crie a unidade `/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
```

O último comando deve responder *200 OK*. O `LimitNOFILE` alto existe porque cada objeto e cada conexão consomem descritores de arquivo, e o limite padrão acaba cedo sob carga.

## Domínio e HTTPS com Nginx

Crie um registro A para `s3.seu-dominio.com.br` apontando para o IP da VPS, instale o Nginx e crie `/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;
    }
}
```

Três linhas fazem diferença. O `client_max_body_size 0` remove o limite de 1 MB do Nginx, que sem isso barra qualquer upload maior. O `proxy_request_buffering off` repassa o upload direto para o MinIO, sem gravar uma cópia temporária no disco. E o `Host $http_host` preserva o cabeçalho que entra na assinatura S3. Ative e emita o certificado:

```
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"
```

Não abra as portas 9000 e 9001 no firewall. A emissão e a renovação do certificado estão no guia de [SSL com Let's Encrypt](https://streethosting.com.br/guias/vps/certificado-ssl-vps-lets-encrypt-nginx).

> **Dica**
>
> Como o console comunitário hoje só navega pelos objetos, não vale publicar ele na internet. Quando precisar, abra um túnel com `ssh -N -L 9001:127.0.0.1:9001 usuario@IP_DA_VPS` e acesse `http://127.0.0.1:9001` no seu navegador. Menos superfície exposta em um software que não recebe mais correções.

## Buckets, usuários e aplicações

A credencial principal funciona como a conta root da AWS: serve para administrar, nunca para uma aplicação. Configure o cliente pela própria VPS; sem as chaves na linha de comando, o *mc* pede os dados de forma interativa:

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

Em seguida, crie uma política que só permita mexer no bucket *backups*, salve como `politica-backups.json` e associe ao usuário:

```
{
  "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
```

Na aplicação, três configurações evitam quase todos os problemas de primeira conexão:

- **Endpoint:** `https://s3.seu-dominio.com.br`, nunca o endereço interno.
- **Estilo de caminho:** o MinIO usa por padrão o bucket no caminho da URL, e não como subdomínio. No SDK JavaScript da AWS isso é `forcePathStyle: true`; no boto3, `Config(s3={"addressing_style": "path"})`.
- **Região:** use `us-east-1`, o padrão do MinIO, a menos que você tenha configurado outra.

Um uso clássico é servir de destino para o restic: com as chaves do usuário nas variáveis `AWS_ACCESS_KEY_ID` e `AWS_SECRET_ACCESS_KEY`, o repositório fica em `s3:https://s3.seu-dominio.com.br/backups`. O fluxo completo está no guia de [backup automático com restic e cron](https://streethosting.com.br/guias/vps/automatizar-backup-vps-restic-cron). Só faz sentido se o MinIO estiver em outra máquina: backup gravado na mesma VPS que ele protege some junto com ela.

## Erros comuns

- **SignatureDoesNotMatch:** o proxy alterou o cabeçalho Host ou o relógio da VPS está errado. Confira a linha `proxy_set_header Host $http_host` e a sincronização de hora com `timedatectl`, como no guia de [horário correto com NTP](https://streethosting.com.br/guias/infraestrutura/configurar-ntp-horario-correto-servidor-linux).
- **413 Request Entity Too Large:** faltou o `client_max_body_size` no bloco do Nginx.
- **Bucket não encontrado ou erro de DNS no SDK:** o cliente está montando `backups.s3.seu-dominio.com.br`. Ative o estilo de caminho.
- **Serviço não sobe com erro de acesso a arquivo:** o diretório de dados não pertence ao `minio-user`. Veja com `sudo journalctl -u minio -n 50`.

> **Atenção**
>
> Não torne um bucket público sem necessidade. O comando `mc anonymous set download` libera leitura para qualquer pessoa na internet, e buckets abertos por engano são uma das causas mais comuns de vazamento de dados em armazenamento de objetos.

## Onde hospedar o armazenamento

Para armazenamento de objetos, o primeiro recurso a olhar é disco, depois rede. CPU e RAM contam menos, a não ser que haja muita requisição simultânea. As [VPS da StreetHosting](https://streethosting.com.br/vps) usam NVMe em todos os planos, ficam em São Paulo e têm uplink de 1 Gbps, o que ajuda quem envia e baixa arquivos do Brasil. A StreetHosting não vende armazenamento de objetos pronto: você instala o software que preferir na VPS ou no dedicado.

| Volume de objetos | Opção | Preço mensal |
| --- | --- | --- |
| Até cerca de 30 GB | VPS Xeon 3 vCPU, 4 GB, 40 GB NVMe | R$ 40,00 |
| Até cerca de 140 GB | VPS Xeon 9 vCPU, 16 GB, 160 GB NVMe | R$ 142,00 |
| Até cerca de 290 GB | VPS Xeon 15 vCPU, 32 GB, 320 GB NVMe | R$ 278,00 |
| Até cerca de 600 GB | VPS Xeon 24 vCPU, 64 GB, 640 GB NVMe | R$ 550,00 |
| Acima de 640 GB | Dedicado AMD Budget SM, 64 GB, NVMe de 2 TB | R$ 1.489,00 |
| Vários TB e muita memória | Dedicado Intel Mid Large, NVMe de 4 TB e 2 SSD de 490 GB | R$ 3.799,00 |

Os volumes da tabela já descontam espaço para sistema, logs e folga. A VPS vai até 640 GB de NVMe; acima disso, os [servidores dedicados](https://streethosting.com.br/dedicated) em São Paulo trazem NVMe de 2 TB, uplink de 10 Gbps dedicado e entrega em até 6 dias. A linha [VPS Xeon](https://streethosting.com.br/vps/xeon) costuma ser a escolha para armazenamento porque entrega o mesmo disco por um preço menor que a Ryzen. Lembre que o disco pode crescer pelo painel, mas nem sempre pode diminuir: comece com o necessário e suba quando o uso real pedir.

## Perguntas frequentes

### O MinIO ainda é gratuito e open source?

O código da edição comunitária continua sob AGPLv3, mas o repositório foi arquivado em abril de 2026 e não recebe mais correções de segurança. A empresa direciona os usuários para o AIStor, que tem uma edição gratuita sob licença própria. Confira o estado atual no repositório oficial antes de decidir.

### Ainda dá para baixar o binário ou a imagem Docker do MinIO?

Os binários comunitários e o cliente mc deixaram de ser servidos pelo site de downloads da MinIO, e as imagens oficiais pararam de ser publicadas. O caminho que resta para a edição comunitária é compilar a partir do código fonte, sabendo que ele não recebe atualizações.

### Qual a melhor alternativa ao MinIO para uma VPS?

Garage e SeaweedFS são projetos mantidos e compatíveis com a API S3. O Garage é leve e pensado para poucos servidores; o SeaweedFS lida bem com muitos arquivos pequenos e cresce para vários volumes. Teste a sua aplicação contra a alternativa, porque nenhuma implementa a API S3 inteira.

### Quanto espaço uma VPS oferece para armazenamento de objetos?

As VPS da StreetHosting vão até 640 GB de NVMe. Acima disso, os servidores dedicados trazem NVMe de 2 TB, e o modelo Intel tem um NVMe de 4 TB além de dois SSD de 490 GB.

### Por que meu cliente S3 dá SignatureDoesNotMatch atrás do Nginx?

A assinatura S3 inclui o cabeçalho Host. Se o proxy reverso trocar esse cabeçalho, o servidor calcula outra assinatura e recusa o pedido. Use proxy_set_header Host $http_host no Nginx e confirme que o relógio da VPS está sincronizado.

## Guias relacionados

- [Como configurar backup automático da VPS com restic e cron](https://streethosting.com.br/guias/vps/automatizar-backup-vps-restic-cron.md)
- [Como configurar o Nginx como reverse proxy na VPS](https://streethosting.com.br/guias/vps/configurar-nginx-reverse-proxy-vps.md)
- [Certificado SSL na VPS com Let's Encrypt e Nginx](https://streethosting.com.br/guias/vps/certificado-ssl-vps-lets-encrypt-nginx.md)
- [Estratégia de backup 3 2 1 para servidores](https://streethosting.com.br/guias/infraestrutura/estrategia-backup-3-2-1-servidor.md)
- [Como expandir o disco de uma VPS Linux depois do upgrade](https://streethosting.com.br/guias/vps/expandir-disco-vps-linux.md)

## Produtos citados

- https://streethosting.com.br/vps
- https://streethosting.com.br/dedicated
- https://streethosting.com.br/vps/xeon

## Dados estruturados

```json
[
  {
    "@context": "https://schema.org",
    "@type": [
      "Article",
      "TechArticle"
    ],
    "headline": "MinIO na VPS: armazenamento compatível com S3 e o que mudou no projeto",
    "name": "Como instalar MinIO na VPS: S3, HTTPS e alternativas",
    "abstract": "O MinIO virou sinônimo de armazenamento S3 próprio, mas a edição comunitária foi arquivada e deixou de receber correções. Veja como instalar mesmo assim, com volume, domínio e HTTPS, e quais alternativas mantidas avaliar para projetos novos.",
    "description": "Instale o MinIO na VPS com dados no NVMe, systemd, domínio e HTTPS, entenda o fim da edição comunitária e compare com Garage e SeaweedFS antes de decidir.",
    "datePublished": "2026-09-28",
    "dateModified": "2026-09-28",
    "author": {
      "@type": "Organization",
      "name": "Equipe StreetHosting"
    },
    "publisher": {
      "@type": "Organization",
      "name": "StreetHosting",
      "url": "https://streethosting.com.br"
    },
    "inLanguage": "pt-BR",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://streethosting.com.br/guias/vps/instalar-minio-vps"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "O MinIO ainda é gratuito e open source?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "O código da edição comunitária continua sob AGPLv3, mas o repositório foi arquivado em abril de 2026 e não recebe mais correções de segurança. A empresa direciona os usuários para o AIStor, que tem uma edição gratuita sob licença própria. Confira o estado atual no repositório oficial antes de decidir."
        }
      },
      {
        "@type": "Question",
        "name": "Ainda dá para baixar o binário ou a imagem Docker do MinIO?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Os binários comunitários e o cliente mc deixaram de ser servidos pelo site de downloads da MinIO, e as imagens oficiais pararam de ser publicadas. O caminho que resta para a edição comunitária é compilar a partir do código fonte, sabendo que ele não recebe atualizações."
        }
      },
      {
        "@type": "Question",
        "name": "Qual a melhor alternativa ao MinIO para uma VPS?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Garage e SeaweedFS são projetos mantidos e compatíveis com a API S3. O Garage é leve e pensado para poucos servidores; o SeaweedFS lida bem com muitos arquivos pequenos e cresce para vários volumes. Teste a sua aplicação contra a alternativa, porque nenhuma implementa a API S3 inteira."
        }
      },
      {
        "@type": "Question",
        "name": "Quanto espaço uma VPS oferece para armazenamento de objetos?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "As VPS da StreetHosting vão até 640 GB de NVMe. Acima disso, os servidores dedicados trazem NVMe de 2 TB, e o modelo Intel tem um NVMe de 4 TB além de dois SSD de 490 GB."
        }
      },
      {
        "@type": "Question",
        "name": "Por que meu cliente S3 dá SignatureDoesNotMatch atrás do Nginx?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "A assinatura S3 inclui o cabeçalho Host. Se o proxy reverso trocar esse cabeçalho, o servidor calcula outra assinatura e recusa o pedido. Use proxy_set_header Host $http_host no Nginx e confirme que o relógio da VPS está sincronizado."
        }
      }
    ]
  }
]
```
