PT
Iniciar sessão Criar conta

Como instalar MinIO na Saplo (S3 próprio para projetos)

O MinIO é um armazenamento de objetos compatível com a API do Amazon S3 que podes instalar no teu próprio Box. Usa as mesmas bibliotecas e o mesmo protocolo, sem faturas pela transferência ou pelo armazenamento na nuvem pública.

Grzegorz Kalmus ·

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

  1. No Painel Saplo, entra no Catálogo de aplicações e seleciona MinIO (categoria "Servidor").
  2. 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.
  3. 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.
  4. 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.
  5. Quando terminares, no catálogo de aplicações do Box vais encontrar o ficheiro MINIO-SETUP.txt com 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.

  1. Inicia sessão na consola com os dados do ficheiro MINIO-SETUP.txt e altera a palavra-passe em Identity -> Users, antes de fazeres mais alguma coisa.
  2. 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.
  3. 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.
  4. 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.1 na 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