tapeshelf no seu próprio servidor

O tapeshelf é código aberto, sob a licença AGPL-3.0, e o app que roda o tapeshelf.com é o mesmo que você vai poder rodar no seu próprio servidor. O repositório público e o guia de instalação ainda não saíram. Enquanto isso, veja como vai funcionar uma instância própria, para você decidir se ela faz sentido no seu caso e já ir pensando no servidor.
Um único stack
Uma instância é um único stack do Docker Compose:
navegador ──HTTPS──► Caddy ─── o app web, cabeçalhos de segurança
└── /api, /ws ──► api ──► Postgres, Redis
worker (ffmpeg) ──► Postgres, Redis
navegador ──► armazenamento compatível com S3: envios, segmentos de vídeo, imagens
- O Caddy serve o app web e repassa o tráfego da API e do WebSocket. Ele obtém e renova sozinho um certificado Let’s Encrypt. Se você já usa um proxy reverso, o Caddy pode ficar atrás dele, sem TLS.
- O api faz tudo o que o app faz: contas, estantes, verificações de acesso, pedidos e trocas, links temporários e a entrega das chaves dos vídeos.
- O worker é o mesmo código iniciado como um segundo processo, numa imagem com ffmpeg. Ele limpa e converte os envios, criptografa as cópias de streaming, gera os quadros e as prévias, renderiza as edições e envia e-mails e notificações.
- O Postgres guarda os dados. O Redis guarda as filas de tarefas e os caches de curta duração.
- Um contêiner migrate, de execução única, roda a cada inicialização. Ele aplica as migrações do banco de dados, cria a conta de administrador a partir das suas configurações e prepara os buckets: leitura pública sem listagem para as imagens, uma regra de limpeza para envios abandonados e CORS para o seu domínio.
- Um serviço de backup salva um dump do banco no seu bucket uma vez por dia e mantém os 14 mais recentes.
O vídeo nunca passa pela API. Os navegadores enviam direto para o armazenamento e carregam os segmentos direto dele, então o armazenamento precisa de um endereço próprio que os navegadores consigam acessar. Essa é a única parte que pede um pouco de planejamento. Você pode apontar o tapeshelf para um serviço compatível com S3 que já usa ou rodar o armazenamento no mesmo stack.
Do que você vai precisar
- Um servidor Linux com Docker e o plugin Compose. Dois núcleos de CPU e 4 GB de RAM são um mínimo razoável.
- Espaço em disco para os arquivos temporários do worker: cerca de duas vezes e meia o tamanho do maior vídeo, para cada vídeo processado em paralelo.
- Um domínio apontando para o servidor, com as portas 80 e 443 abertas.
- Uma conta SMTP para os e-mails: confirmações, redefinições de senha e notificações.
- Opcionalmente, o seu próprio cliente OAuth do Google para o “Continuar com o Google” e chaves do Cloudflare Turnstile para o captcha em cadastros repetidos e novos convidados.
Converter vídeo é a parte pesada. Um vídeo em H.264 de até 1080p que passa por mais algumas verificações só precisa ser reempacotado, o que leva segundos. Uma conversão completa num servidor pequeno de dois núcleos leva mais ou menos a duração do próprio vídeo, às vezes mais. Quem enviou acompanha o progresso ao vivo e pode continuar usando o site.
O segredo que você não pode perder
Todas as configurações ficam num único arquivo de ambiente: a senha do banco de dados, os segredos de sessão, as credenciais do armazenamento, o SMTP e a chave mestra da qual sai a chave de criptografia de cada vídeo. O post Como o tapeshelf criptografa vídeos explica como isso funciona. Em produção, a API se recusa a iniciar com os valores de exemplo do arquivo modelo.
Guarde a chave mestra num gerenciador de senhas assim que gerá-la. Se ela se perder, nenhum dos vídeos enviados volta a tocar, e restaurar o banco de dados não ajuda. Os códigos do app autenticador para o login em duas etapas também param de funcionar, porque os segredos deles são cifrados com essa chave.
O que muda em relação ao tapeshelf.com
Uma instância própria não tem planos nem pagamentos. Não há Free nem Pro, nem aba Plano, nem convites para assinar o Pro, nem página de espera antes dos downloads. Em detalhes:
- Sem limites, a menos que você os defina. Por padrão, não há teto para o tamanho dos vídeos nem da estante. Como administrador, você pode definir um limite por vídeo e um por estante, iguais para todo mundo.
- Downloads começam na hora, em velocidade máxima, direto do armazenamento.
- O que é Pro no tapeshelf.com fica disponível para todos. Ou seja, o editor de vídeo, a página oculta e as senhas em links temporários. Vídeos excluídos podem ser restaurados por 90 dias.
- A proteção contra abuso continua. O limite diário de pedidos (30 vídeos por padrão, ajustável) e os limites de requisições da API protegem o servidor, então eles ficam.
- O seu nome, as suas regras. A instância tem nome e e-mail de contato próprios e mostra os seus termos e a sua política de privacidade a partir de arquivos que você fornece. Os visitantes veem primeiro uma página de login simples.
Todo o resto é o mesmo app: estantes com pilhas e categorias, envios que continuam de onde pararam, a prévia de 16 quadros, streaming criptografado, pedidos e trocas em várias rodadas, trocas com convidados, links temporários, amigos e chat, login em duas etapas (obrigatório para o administrador), notificações, o app em 20 idiomas, denúncias e um painel de administração.
Lembre-se de que cada instância é uma ilha. As pessoas nela compartilham e trocam só entre si, nunca com contas do tapeshelf.com ou de outras instâncias.
Atualizações e backups
Atualizar significa baixar a nova versão e reiniciar o stack. As migrações são aplicadas na inicialização, e um vídeo que estava sendo processado começa de novo. Mesmo assim, faça um backup antes de uma atualização grande.
Os dumps diários do banco chegam ao seu bucket sozinhos. Os vídeos já ficam no armazenamento, e as chaves deles vêm da chave mestra. Então as três coisas a proteger são o bucket, os dumps do banco e essa única chave.
A licença em um parágrafo
Você pode rodar o tapeshelf, estudar e modificar o código. Se você modificar o tapeshelf e deixar outras pessoas usarem a sua versão modificada pela rede, a AGPL exige que você ofereça a elas o código-fonte dessa versão. Para rodar sem alterações, para você, a sua família ou os seus amigos, basta manter a licença junto.
Quando
Em breve vamos publicar o repositório, imagens de contêiner prontas e um guia de instalação que cobre armazenamento, e-mail, backups e solução de problemas. A página Hospede você mesmo e este blog vão avisar no dia, e o feed RSS é o jeito mais fácil de não perder. Enquanto isso, o tapeshelf.com é o jeito mais rápido de experimentar o app, e a página de preços tem os detalhes.