19 pontos por GN⁺ 2025-10-25 | 1 comentários | Compartilhar no WhatsApp
  • O Twake Drive oferece recursos de armazenamento e compartilhamento de arquivos semelhantes ao Google Drive em uma plataforma de armazenamento em nuvem open source
  • Suporta implantação baseada em Docker, o que permite executá-lo facilmente em ambiente local, e usa Node.js e MongoDB como principais tecnologias da stack
  • Tem uma arquitetura com frontend e backend separados, além de oferecer ambiente de desenvolvimento baseado em Yarn e configuração de caminho de armazenamento local de arquivos
  • É distribuído sob a licença Affero GPL v3, permitindo que empresas e organizações o customizem livremente em um modelo de self-hosting

Visão geral do projeto

  • O Twake Drive é uma solução open source alternativa ao Google Drive desenvolvida pela Linagora, oferecida para que recursos de armazenamento, compartilhamento e colaboração em arquivos possam ser operados em servidores próprios
    • O foco principal são organizações que querem evitar dependência de serviços em nuvem e manter propriedade dos dados e controle de segurança
  • O repositório público no GitHub já registra mais de 1.000 estrelas e cerca de 70 forks, com manutenção ativa
  • O projeto adota a licença AGPL-3.0, o que exige manter os mesmos termos de licença em caso de modificação e redistribuição do código-fonte

Principais recursos e stack tecnológica

  • O Twake Drive funciona com base em Node.js (18.x ou superior), MongoDB e Yarn, e foi projetado com uma arquitetura de frontend e backend separados
    • O frontend é executado no diretório tdrive/frontend/ com yarn dev:start
    • O backend roda em tdrive/backend/node/ após configurar as variáveis de ambiente, usando yarn dev
  • Oferece uma opção simples de implantação com Docker Compose (docker-compose.minimal.yml), facilitando testes locais e implantações internas
  • O banco de dados pode ser iniciado facilmente com o comando para executar o contêiner MongoDB (docker run -p 27017:27017 -d mongo)
  • As configurações de ambiente podem ser ajustadas em detalhes por meio do arquivo tdrive/backend/node/config/development.json

Estrutura de desenvolvimento e implantação

  • O Twake Drive separa frontend (baseado em React) e backend (baseado em Node.js), e permite definir diretamente o caminho do armazenamento local de arquivos
    • A localização de armazenamento dos documentos é configurada pela variável de ambiente STORAGE_LOCAL_PATH
  • A configuração PUBSUB_TYPE=local dá suporte ao recurso de publish/subscribe em ambiente local
  • Por padrão, a aplicação roda na porta 3000 e tem uma estrutura otimizada para ambientes de desenvolvimento e teste
  • Inclui arquivo de configuração do Docker Bake (docker-bake.hcl) e configuração de GitHub Actions para CI/CD, oferecendo suporte a build e testes automatizados

Código e estado do repositório

  • O repositório é composto por 882 commits, 61 branches e 46 tags, mantendo um histórico de desenvolvimento ativo
  • A distribuição principal de linguagens é TypeScript 58.9%, JavaScript 32.6%, SCSS 3.7%, CSS 2.2%, HTML 1.3% e Less 1.0%

Licença e possibilidades de uso

  • O Twake Drive é distribuído sob a licença Affero GPL v3, o que impõe a mesma obrigação de abertura em caso de modificação e redistribuição do código-fonte
  • Com base nele, empresas podem construir um sistema interno de armazenamento em nuvem ou expandi-lo para um modelo SaaS
  • É avaliado como uma alternativa capaz de oferecer ao mesmo tempo redução de custos com serviços de nuvem comerciais e garantia de soberania dos dados

1 comentários

 
GN⁺ 2025-10-25
Opinião no Hacker News
  • Muita gente aqui fala de recursos essenciais ou de backup, mas o que realmente importa é se dá para construir e manter uma comunidade por muito tempo
    Como armazenamento em nuvem open source pode desaparecer rápido quando os mantenedores se esgotam, um modelo de negócios sustentável ou uma base de contribuidores é tão importante quanto um checklist técnico
    Além disso, a interoperabilidade também é subestimada. Se oferecer suporte a WebDAV ou S3 e integrar com sistemas de autenticação já existentes, as equipes vão experimentar com muito mais facilidade
    No fim, as pessoas querem um serviço que não desapareça quando acabar a “lua de mel”. Isso é muito mais difícil do que adicionar uma barra de progresso

    • Isso pode ser uma fraqueza do modelo organizacional da ferramenta, mas eu não quero participar de comunidade nenhuma. Só quero que funcione bem
      Eu uso Syncthing e nunca me disseram que eu precisava participar da comunidade, mas continua funcionando muito bem
      Pelo visto a Syncthing é financiada pela Kastelo, uma empresa que oferece suporte enterprise
      Eu também administro uma consultoria de open source, e contratos corporativos já bastam para manter tudo, mesmo sem comunidade
      Comunidade é legal, mas no longo prazo acho que modelo de negócios e estratégia de marketing são mais importantes
    • Pessoalmente, acho que a compatibilidade com S3 é o ponto central do armazenamento de objetos
      Se um sistema suporta a API do S3, fica fácil trocar qualquer storage. Backblaze, Wasabi, API S3 local — quase tudo vira substituição direta
    • Não entendo por que a comunidade seria tão importante. Se for uma ferramenta que resolve um problema, a comunidade é só um meio de manutenção
  • Entre as soluções de sincronização de arquivos self-hosted que usei até hoje, o Seafile foi a melhor
    Mas atualizar o servidor ainda é trabalhoso. NextCloud e ferramentas parecidas foram um desastre completo para mim

    • Fiquei curioso sobre por que você acha que foi um desastre. Na nossa empresa usamos NextCloud há 3 anos sem problema nenhum
      Tem todos os plugins de que precisamos, o desempenho é bom e a sincronização é perfeita. A ponto de nem haver motivo para testar outra alternativa
    • Eu rodo o Seafile na versão Docker, então atualizar é bem fácil, basta trocar a tag
      Antigamente o NextCloud engasgava com repositórios grandes e precisava de uma máquina mais potente
      O Seafile roda tranquilamente até numa placa ARM com 2 GB de RAM
    • Instalei o Seafile recentemente direto no meu servidor e dei bastante atenção à estratégia de backup e segurança
      Também testei tudo de forma rigorosa, e a velocidade e a responsividade da sincronização foram impressionantes
      Agora já migrei todos os meus arquivos do Google Drive e uso como minha nuvem principal
    • Resilio também é bom. Syncthing também é ótimo, mas na minha experiência o Resilio é mais rápido e lida melhor com travessia de NAT
    • Também uso Seafile e Seadrive há anos, e com mapeamento de unidade via subst funciona muito bem
  • Teria sido engraçado se o nome fosse Twake Dwive

  • Como outras pessoas perguntaram, queria saber como isso se compara a NextCloud ou ownCloud. E também se há clientes para Windows/Mac/Mobile

    • O ownCloud até tem clientes para todas as plataformas, mas em cada uma delas havia bugs pequenos e problemas de confiabilidade demais, então não consegui usar
    • Tentei instalar o NextCloud e foi uma experiência completamente dolorosa
    • Na minha experiência, o NextCloud parece um monstro inchado em PHP. O desempenho é pior, e o Twake parece muito mais leve e com escopo mais claro
  • A sobrevivência de uma ferramenta open source de drive depende de três coisas

    1. sincronização simples que nunca surpreende
    2. resolução de conflitos que até pessoas não técnicas consigam entender
    3. upgrades sem dor de cabeça
      Se o Twake fizer isso bem e ainda oferecer suporte a S3 e LDAP, pode ter futuro
      Mas a parte realmente difícil é confiança e documentação. Precisa de um modelo de ameaça claro, um guia de migração vindo do Drive ou do Dropbox, e um CLI pequeno que funcione até em ambientes headless
    • Eu acrescentaria uma quarta coisa: facilidade para validar backups
      Já aconteceu na empresa de o backup estar ativado, mas quando fomos restaurar, tudo estava corrompido. Desde então, validação de backup virou prioridade máxima
    • Eu gostaria que houvesse um botão manual de “sincronizar agora”. No Google Drive muitas vezes é frustrante não saber claramente o estado da sincronização
  • Acho estranho fazer um app de alto desempenho desses com 58,9% de TypeScript e 32,6% de JavaScript

    • Então 91,5% é JavaScript, não? É a velha piada de que TypeScript não é uma linguagem de verdade
    • Esse app é I/O-bound, então rodar em TS/JS não tem problema
    • Parece que o backend é TS e o frontend é JS. Eu também separo testes em JS e código de app em TS
      Acho mais importante focar nas partes em que a linguagem não é o gargalo
    • Vendo startups hoje montarem arquiteturas orientadas a eventos com microsserviços em TS/JS, essa escolha não parece estranha
  • Fugindo um pouco do assunto, será que existe alguma forma de fazer Viber ou WhatsApp usarem outro armazenamento de backup em vez do Google Drive? Fico pensando se, com root, daria para enganar a interface de algum jeito

    • No Android isso pode ser implementado simplesmente como um share-target. Também daria para fazer facilmente com PWA
  • Um sistema desses realmente precisa de banco de dados?
    No Unix, parece que CRUD de usuário e arquivo, mais permissões, já seria suficiente. Será que existe algum software mais antigo que só envolva isso com UI ou API? Mesmo que seja baseado no protocolo SAMBA?

    • Para implementar recursos como histórico de versões ou URLs de compartilhamento, você precisa de um BD
      E, se quiser restringir grupos de usuários, rapidinho chega no limite de quantidade de grupos (65536)
    • Vale a pena dar uma olhada no Cockpit. Em Cockpit Applications ele oferece a maior parte do que você quer: navegação de arquivos, edição de permissões, upload/download etc.
    • Para cache de operações em disco ou sincronização entre múltiplos nós, você precisa de armazenamento de metadados. No fim, é difícil escapar de usar um BD
    • Eu também já pensei nisso, mas seria ótimo ter uma interface estilo Google Drive usando Python e fsspec para lidar com sistemas de arquivos locais ou S3/SSH e afins
    • Com BD, fica fácil fazer join entre users e documents ou aproveitar índices e transações do MongoDB
      Também simplifica o gerenciamento de metadados de versão e é mais fácil de hackear no Windows
  • Talvez eu esteja fora do clima do HN, mas para mim o recurso mais importante é a busca
    Quando você começa a guardar vários TB de dados, fica difícil achar até uma única foto
    Precisa ter análise de imagem para permitir buscas como “duas pessoas na Nothing Street”
    Hoje o Google ainda está muito à frente nisso, mas espero que outras nuvens um dia alcancem esse nível

  • Recomendo experimentar o Syncthing

    • Eu também uso Syncthing desde que acabou meu desconto estudantil do Dropbox. Há anos funciona de forma estável
      Só que a experiência no mobile ainda era meio áspera. Mesmo assim, em emergências dá para pegar arquivos pela interface web
    • O Syncthing é excelente, mas não serve bem para lidar com arquivos grandes no mobile. Como sincroniza tudo por completo, isso acaba limitando bastante
    • É a ferramenta FOSS mais confiável que eu uso. Simplesmente funciona e roda em todas as plataformas