Guarde audiolivros em armazenamento compatível com S3
Atualizado em 27 de outubro de 2026
O Berth pode guardar os livros em qualquer bucket compatível com S3 em vez do disco do servidor. O servidor mantém a biblioteca e decide quem pode ouvir; o áudio em si pode ir do bucket ou de uma CDN direto para os celulares.
Por que object storage
- Um VPS pequeno ou um Raspberry Pi não precisa de um disco grande.
- Os celulares baixam direto do armazenamento, então a banda do servidor não vira gargalo.
- O banco de dados e os backups dele continuam pequenos; com S3, o servidor também pode colocar uma cópia diária do banco no bucket.
Provedores compatíveis
Qualquer serviço compatível com S3 funciona. O painel web tem predefinições que preenchem o endpoint e a região para: AWS S3, Cloudflare R2, Yandex Cloud, Backblaze B2, Bunny Storage e MinIO. Para o Cloudflare R2 há também um assistente que cria o bucket e as chaves para você.
Conectar um bucket
- No console do seu provedor, crie um bucket e uma chave de acesso com permissão de leitura e gravação nele.
- Adicione uma regra CORS ao bucket: origem é o seu endereço do Berth, métodos GET, HEAD, PUT, cabeçalhos
*. O painel web envia os arquivos do navegador direto para o bucket, então essa regra é obrigatória. - No painel web do Berth, abra as configurações de armazenamento, adicione um armazenamento, escolha “Bucket S3” e selecione uma predefinição ou preencha os campos você mesmo.
- Preencha nome, bucket, endpoint (vazio para AWS), região (
us-east-1se vazia), ID da chave de acesso e chave de acesso secreta. Ative os endereços no estilo path para o MinIO; eles são ativados sozinhos para um endereço IP ou localhost. - Clique em “Verificar conexão”: o Berth grava, lê de volta e apaga um pequeno arquivo de teste e verifica o CORS a partir dos endereços do seu servidor.
- Torne o armazenamento padrão: livros novos vão para o armazenamento padrão.
As chaves ficam guardadas criptografadas com a chave do servidor secret.key e nunca são mostradas de novo.
Como o áudio chega aos celulares
Sem assinatura, os arquivos atrás de uma CDN abrem por um link que nunca expira. Os nomes deles são hashes SHA-256 e não podem ser adivinhados, mas revogar um dispositivo não fecha os links que ele já tem. A autenticação por token da Bunny CDN faz os links expirarem após 6 horas.
| Modo | Como funciona | Quando usar |
|---|---|---|
| Links diretos (padrão) | Os celulares recebem um link assinado para o bucket que dura 15 minutos | Tira a carga do servidor |
| Pelo servidor | O servidor transmite o arquivo; os links duram 6 horas e param de funcionar na hora quando um dispositivo é revogado | Os celulares não conseguem acessar o bucket |
| Por uma CDN | Os links apontam para uma CDN ou um endereço público do bucket | O mais rápido quando o bucket tem uma CDN |
Bom saber
- Você pode ter vários armazenamentos ao mesmo tempo; cada livro mostra em qual deles está.
- Ainda não é possível mover livros existentes entre armazenamentos: escolha o armazenamento padrão antes de enviar.
- Um armazenamento que contém livros não pode ser excluído. Remover um perfil nunca apaga arquivos do bucket.
Perguntas
O Berth precisa de acesso público ao bucket?
Não. No modo padrão, o bucket continua privado e os celulares recebem links assinados que expiram após 15 minutos.
A verificação diz que o bucket não aceita envios de um navegador. E agora?
Adicione a regra CORS: origem é o endereço do Berth, métodos GET, HEAD, PUT, cabeçalhos *. Depois rode a verificação de novo.