O Amazon S3 é conveniente, até aparecer a fatura pela transferência de dados, porque é precisamente a transferência, e não o armazenamento em si, que pode surpreender mais. O MinIO é um armazenamento de objetos de código aberto que fala a mesma linguagem que o S3, ou seja, a mesma API, por isso a biblioteca boto3 ou aws-sdk, que já tens no teu projeto, funciona sem alterar uma única linha de código, para além do endereço do endpoint. A diferença é que instalas o MinIO no teu próprio Box, de uma só vez, e pagas apenas pelo Box, sem uma fatura separada por cada gigabyte de transferência. Abaixo, passo a passo, como instalar o MinIO na Saplo.
Porquê MinIO em vez de Amazon S3
O Amazon S3 tem duas características que, na prática, mais incomodam os projetos em crescimento:
- a fatura pela transferência de dados de saída - o simples armazenamento de ficheiros é barato, mas cada ficheiro descarregado e cada imagem apresentada a um utilizador são contabilizados separadamente e, com maior tráfego, podem dominar a fatura,
- a cobrança dependente do número de operações - listar ficheiros, escrever, ler, cada uma destas ações tem a sua tarifa, por isso é difícil prever o custo antecipadamente.
O MinIO implementa o mesmo protocolo S3, por isso, migrar de um para o outro normalmente significa alterar o endereço do endpoint e as chaves de acesso, sem ter de reescrever o código da aplicação. Colocas o MinIO no teu próprio Box, pagas apenas pelo Box, independentemente de quantas vezes os ficheiros sejam descarregados, e os dados permanecem fisicamente na tua infraestrutura.
Requisitos
Para colocar o MinIO no Saplo, precisas de:
- um Box com o Docker em execução (o motor ativa-o automaticamente durante a instalação a partir do catálogo; é necessário ativar o nesting em contentores, algo que o Saplo faz por omissão),
- pelo menos 512 MB de RAM livre no Box e 5 GB de espaço em disco para os dados; a quantidade necessária depende de quantos ficheiros pretendes armazenar,
- um domínio ou subdomínio
*.saploapp.pl, incluído no preço de cada plano, sob o qual ficará a consola administrativa.
O MinIO disponibiliza dois interfaces diferentes que vale a pena distinguir desde o início. O primeiro é a consola web, ou seja, um painel que permite navegar ficheiros, criar buckets e gerir chaves de acesso, disponível num domínio como qualquer outra aplicação do catálogo. O segundo é a própria API S3, ou seja, um endpoint ao qual o código da aplicação se liga através de boto3 ou de uma biblioteca semelhante. O motor atribui à aplicação uma única porta para o domínio público, pelo que a API S3 funciona apenas dentro do Box, em loopback, e não fica visível a partir do exterior.
Instalação passo a passo
- No Painel Saplo, entra no Catálogo de aplicações e seleciona MinIO (categoria "Servidor").
- Indica o Box onde pretendes que fique instalado e o domínio ou subdomínio sob o qual a consola de administração ficará disponível.
- Confirma a instalação. O motor cria um contentor Docker com a imagem oficial
minio/minio, prepara um volume separado para os dados, gera uma conta de administrador aleatória e disponibiliza a consola no domínio indicado através do nginx com SSL gratuito. - O motor verifica se o contentor arrancou efetivamente antes de considerar a instalação concluída, pelo que, se a imagem não arrancar, vais ver um erro em vez de um domínio inativo.
- Quando terminares, no catálogo de aplicações do Box vais encontrar o ficheiro
MINIO-SETUP.txtcom o nome de utilizador e a palavra-passe gerados para a consola.
Primeira configuração
MinIO, tal como o Directus ou o Vaultwarden, gera automaticamente uma conta de administrador durante a instalação, em vez de a solicitar no assistente.
- Inicia sessão na consola com os dados do ficheiro
MINIO-SETUP.txte altera a palavra-passe em Identity -> Users, antes de fazeres mais alguma coisa. - Cria o primeiro bucket no separador Buckets -> Create Bucket, por exemplo, um para os ficheiros dos utilizadores e outro para as cópias de segurança.
- Em Identity -> Service Accounts, gera uma chave de acesso (Access Key e Secret Key) para a aplicação que vai guardar e ler ficheiros. Não uses a conta de administrador no código da aplicação.
- O endpoint da API S3 funciona apenas no loopback do Box e não está publicamente exposto. Se a aplicação que utiliza o MinIO estiver no mesmo Box, liga-se através de
http://127.0.0.1na porta atribuída. O acesso a partir de fora do Box, por exemplo, do teu próprio computador ou de outro servidor, requer um túnel SSH disponível a partir de Box L, ou um extra de porta TCP personalizada a partir do catálogo de extras.
MinIO na Saplo vs Amazon S3
| Amazon S3 | MinIO na Saplo | |
|---|---|---|
| Custo | armazenamento + transferência + operações, cobrados separadamente | incluídos no preço do plano Saplo, sem custo adicional pela transferência |
| Onde ficam os dados | infraestrutura da Amazon | o teu Box |
| Compatibilidade da API | padrão S3 | o mesmo protocolo, as mesmas bibliotecas (boto3 e outras) |
| Acesso remoto à API | endpoint público desde logo | requer um túnel SSH (Box L+) ou a adição de uma porta TCP |
| Quem administra | Amazon | Tu, mas sem teres de configurar manualmente um servidor |
Perguntas frequentes
Preciso de alterar o código da aplicação para passar de S3 para MinIO?
Normalmente não. O MinIO implementa o mesmo protocolo S3, por isso só tens de alterar o endereço do endpoint, a chave de acesso e o segredo na configuração da aplicação. O restante do código que utiliza boto3 ou uma biblioteca semelhante funciona sem alterações.
Porque é que a API S3 não fica disponível fora do Box desde o início? O motor do Saplo expõe através do domínio público exatamente uma porta por aplicação e, no caso do MinIO, essa porta é a consola web. A API S3 permanece no loopback, por isso as aplicações em execução no mesmo Box ligam-se diretamente a ela, enquanto o acesso a partir de fora do Box exige um túnel SSH ou um add-on de porta TCP.
Posso ter mais do que um bucket? Sim, o número de buckets não é limitado pelo próprio MinIO. O único limite é o espaço em disco do Box.
Como protejo o acesso aos ficheiros se a aplicação se ligar a partir de fora do Box? Gera uma chave de acesso exclusiva para cada aplicação em Identity -> Service Accounts e aplica-lhe uma política que a restrinja a um bucket específico, em vez de usares uma conta de administrador. Para te ligares a partir de fora do Box, utiliza um túnel SSH (Box L e superior) ou contrata um add-on de porta TCP própria.
Os dados no MinIO têm cópias de segurança automáticas? Depende do plano do Box que tiveres contratado. O backup funciona ao nível do Box inteiro, tal como nas outras aplicações do Catálogo de aplicações, e não é uma funcionalidade própria do MinIO.
Se tiveres dúvidas sobre como instalar o MinIO no teu próprio Box ou ligá-lo à tua aplicação, escreve-nos. Ajudamos-te com a configuração inicial.
- #Backup
- #MinIO
- #Guia
- #Armazenamento de arquivos
- #S3
