Ir para o conteúdo

Hospedando arquivos de mídia no S3

Em vez de hospedar os arquivos de mídia da árvore genealógica no mesmo servidor que o banco de dados Gramps, eles também podem ser hospedados no Amazon S3 ou em um serviço de armazenamento de objetos compatível com API diferente. Isso reduz fortemente os requisitos de armazenamento e tráfego para o servidor Web do Gramps.

Preparando credenciais

Na sua conta AWS (ou em outro serviço de armazenamento de objetos), obtenha um ID de chave de acesso e uma chave de acesso secreta (você pode querer primeiro criar um usuário separado com uma política de segurança que permita apenas o acesso ao S3).

Fazer upload de arquivos de mídia

Para fazer upload dos seus arquivos de mídia existentes para o S3, no Linux você pode usar uma instalação local do Gramps com o Addon S3 Media Uploader, que pode ser instalado diretamente do desktop do Gramps. No entanto, alguma configuração adicional é necessária.

O addon utiliza a biblioteca Python boto3 por trás dos panos. Você precisa instalá-la primeiro com

python3 -m pip install boto3

Na linha de comando, exporte o ID da chave de acesso e a chave secreta para as variáveis de ambiente apropriadas:

export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key

Agora, você pode iniciar o uploader executando o seguinte comando,

gramps -O "Minha Árvore Genealógica" -a tool \
    -p "name=s3uploader,bucket_name=my_bucket_name"

substituindo "Minha Árvore Genealógica" pelo nome da sua árvore genealógica e my_bucket_name pelo nome completo do seu bucket S3. Você precisará de um bucket S3 dedicado para sua instância do Gramps Web. Se o bucket ainda não existir, o Addon S3 Uploader tentará criá-lo.

Configurar Gramps Web

Para usar o novo bucket S3 como fonte de mídia para o Gramps Web, basta definir a opção de configuração MEDIA_BASE_DIR opção de configuração para s3://my_bucket_name.

Ao usar Docker Compose, a opção mais fácil é adicionar todas as variáveis de ambiente ao bloco env:

env:
  AWS_ACCESS_KEY_ID: my_access_key_id
  AWS_SECRET_ACCESS_KEY: my_secret_access_key
  MEDIA_BASE_DIR: s3://my_bucket_name
  AWS_DEFAULT_REGION: eu-central-1

Se você quiser usar um armazenamento de objetos compatível com S3 que não seja AWS (por exemplo, GCP ou para testes locais), defina a variável de ambiente AWS_ENDPOINT_URL.

Sincronizando arquivos de mídia

Para manter os arquivos de mídia sincronizados entre uma instalação local do Gramps e os arquivos de mídia hospedados no Gramps Web no S3, o Addon Gramps Web Sync suporta a sincronização de arquivos via API Web.