LocalSend - aplicativo local, open source e multiplataforma de compartilhamento de arquivos que substitui o AirDrop
(github.com/localsend)Repository: https://github.com/localsend/localsend
- Aplicativo gratuito e open source que permite trocar arquivos e mensagens com segurança entre dispositivos próximos na rede local, sem conexão com a internet
- Sem depender de servidores externos ou de terceiros, a comunicação entre dispositivos é feita com REST API e criptografia HTTPS, oferecendo comunicação local rápida e confiável
- Todos os dados transferidos são protegidos por HTTPS, e os certificados TLS/SSL são gerados instantaneamente em cada dispositivo para reforçar a segurança
- Disponível para Windows, macOS, Linux, Android, iOS e Fire OS, com recomendação prioritária de instalação via loja de aplicativos ou gerenciador de pacotes
- O app não tem atualização automática, por isso o README recomenda usar os caminhos via loja de aplicativos ou gerenciador de pacotes
- Os canais de distribuição incluem Winget, Scoop, Chocolatey, EXE e Portable ZIP no Windows; App Store e Homebrew no macOS; Flathub, Nixpkgs, Snap, AUR, DEB, AppImage e TAR no Linux; Play Store, F-Droid e APK no Android; e Amazon no Fire OS
- As versões mínimas suportadas são Android 5.0, iOS 12.0, macOS 11 Big Sur e Windows 10, e a última versão com suporte ao Windows 7 é a v1.15.4
- No Linux, dependendo do ambiente desktop, são necessárias dependências da família xdg-desktop-portal: no Gnome,
xdg-desktop-portalexdg-desktop-portal-gtk; no KDE,xdg-desktop-portalexdg-desktop-portal-kde - Na maioria dos casos funciona sem configuração extra, mas se houver problemas de envio ou recebimento, é preciso permitir entrada em TCP/UDP 53317 no firewall e também liberar saída em TCP/UDP
- Se o AP isolation do roteador estiver ativado, a conexão entre dispositivos pode ser bloqueada; se houver problema na descoberta de dispositivos, isso deve ser desativado
- O modo portátil é ativado ao colocar um arquivo
settings.json, mesmo vazio, no mesmo diretório do executável, passando a salvar as configurações nesse arquivo em vez do caminho padrão - Para iniciar oculto apenas na bandeja do sistema, é possível usar a flag
--hidden - Quando a velocidade estiver baixa, a orientação é usar 5 Ghz e desativar a criptografia em ambos os dispositivos; a lentidão no recebimento no Android continua sendo um problema conhecido
- Para compilar a partir do código-fonte, são necessários Flutter e Rust; como o projeto usa uma versão antiga do Flutter definida em
.fvmrc, recomenda-se usarfvm flutter
2 comentários
Eu costumava usar bastante para compartilhar time-lapses que tirava em encontros de jogos de tabuleiro.
Recentemente, como Galaxy e Pixel passaram a compartilhar via AirDrop, o uso dele ficou um pouco ambíguo.
Claro, para enviar para o desktop, ainda é muito bom.
Comentários do Hacker News
O problema é que todas essas alternativas exigem que tudo esteja na mesma rede local
Pelo que entendo, o legal do Airdrop é justamente que ele cria e gerencia essa rede local automaticamente nos bastidores
Por isso eu conseguia enviar coisas na hora mesmo durante trilhas com amigos
Depois que troquei para Android, tenho usado o Localsend criando uma LAN via tethering no aparelho de um amigo, mas a experiência é bem menos fluida
É uma ferramenta de transferência de dispositivo para dispositivo que funciona só com uma página estática no GitHub
repo no GitHub: https://github.com/mbarlow/thinair
Cada aparelho gera um QR code para ser escaneado e estabelece uma conexão WebRTC
Entre Androids, ele também usa um chirp de áudio para dizer a cada aparelho para alternar do modo QR para o modo de escanear com a câmera
Também testei Android↔Apple e funciona, mas a Apple não capta esse chirp de áudio
Nesses casos, é só esperar um pouco e o QR code some, passando para a etapa de escaneamento
Foi algo feito às pressas, e originalmente eu estava experimentando handshakes de áudio entre smartphones com chirps tipo canto de pássaro ou estilo modem antigo
Encostar os telefones e trocar frames de áudio para confirmar o início da transferência era divertido, mas o handshake era lento e pouco confiável
Quero refinar melhor o fluxo, e hoje já uso isso para enviar arquivos entre iPhone/Android/PC sem app, e-mail ou conta
Só que não é exatamente muito estável nem amigável
https://github.com/spieglt/FlyingCarpet
É um app para Android e diz que não precisa de LAN para compartilhar
https://play.google.com/store/apps/details?id=com.fastfilelink.wrapper
Tem horas em que ele não encontra o outro telefone, e acho que isso acontece quando uma transferência anterior falhou silenciosamente em segundo plano
Sem conexão móvel/Wi‑Fi, eu também já tive problema com descoberta de contatos, quando tentei mandar fotos para outro telefone na montanha
Às vezes ele simplesmente trava e não funciona, então essa magia da Apple ajuda pouco
Para usar o Localsend, você precisa criar um Wi‑Fi ad-hoc em um aparelho, conectar os outros nele e só então abrir o Localsend
Essas duas etapas anteriores são bem incômodas, e o Airdrop parece muito mais sem atrito porque resolve isso sozinho
Comecei a usar recentemente e funciona muito bem, sendo bem mais confiável que o Airdrop
Mas ainda dá para melhorar a UX
Mesmo assim, eu queria que a Apple consertasse um pouco o Airdrop
A confiança nele é muito baixa toda vez que uso; às vezes ele não vê os aparelhos, ou quando há vários usuários de Mac ele mostra o mesmo Mac duas vezes sem dizer qual usuário é qual, o que confunde
Não entendo muito bem que tipo de arquivos grandes elas estão criando e movendo para precisar tanto de um app assim
No meu caso, os arquivos que surgem no celular são só fotos e vídeos, faço backup no Immich e compartilho por link
Imagino que a maioria das pessoas faça algo parecido com iCloud ou Google Photos
Para sincronizar outros arquivos, como documentos, uso ownCloud OCIS, e para a maioria dos casos DropBox, iCloud, ou até e-mail e WhatsApp já devem bastar
Para mover algo como ISO na rede local, dá para copiar por SMB, funciona praticamente em qualquer lugar e nem precisa de app separado
Se for backup, também dá para simplesmente conectar um HD externo
Então ainda não consigo ver muito bem por que eu usaria isso
Antigamente eu também tinha problemas de visibilidade, mas hoje em dia quase sempre funciona
Ainda não achei um jeito definitivo de corrigir isso; desligar e ligar o Airdrop nos dois lados é o que mais ajuda, mas mesmo assim só funciona em uns 70% dos casos
Vale olhar o Sendme https://github.com/n0-computer/sendme e o AltSendme https://github.com/tonyantony300/alt-sendme
Ambos usam o Iroh https://github.com/n0-computer/iroh, um serviço relay P2P criptografado open source para enviar dados sem servidor central, então na prática não há limite relevante para o tamanho dos arquivos enviados ou recebidos
Eu também já tinha recomendado isso quando surgiu papo sobre apps de compartilhamento de arquivos em um tópico parecido
https://news.ycombinator.com/item?id=47906587
O código não é curto nem simples o suficiente para passar falando, e se você já consegue mandar esse código, normalmente também conseguiria mandar o próprio arquivo
https://github.com/schlagmichdoch/pairdrop
É um projeto parecido, mas este roda todo no navegador e pode usar uma sala "public" para se conectar com clientes fora da rede local
Tenho o Localsend instalado para transferir entre iPhone e desktop Linux, mas ele nem sempre funciona bem
Mesmo abrindo a porta do Localsend no Firewalld, às vezes leva mais de 10 minutos para os aparelhos se enxergarem
Sendo baseado em navegador, imagino que pelo menos a descoberta seja mais rápida
A documentação está meio escondida, mas o FAQ fica em https://github.com/schlagmichdoch/pairdrop/blob/master/docs/faq.md, e
a integração com o menu de compartilhamento no Android, iOS e Windows está em https://github.com/schlagmichdoch/PairDrop/blob/master/docs/how-to.md
Ele é um fork do sharedrop e do snapdrop, que ficaram arruinados depois de serem adquiridos pela LimeWire
Para essas coisas que se dizem substitutas do Airdrop, sinto que precisava existir algo como spamsolutions.txt
Isto falha no critério de que os dois peers não deveriam precisar estar conectados a uma rede Wi‑Fi já existente
https://craphound.com/spamsolutions.txt
Já publiquei algo parecido usando Tauri
O instalador ficava em cerca de 27 MB no Mac, 45 MB no Linux .deb e 53 MB no Windows, enquanto o piso do Electron era por volta de 150 MB
A única exceção era o .AppImage, com cerca de 110 MB, porque ele empacota o runtime
Essa redução de tamanho vem de reutilizar o webview do sistema operacional, mas isso também tem seu custo
O WebKitGTK no Linux se comporta bem diferente do WebKit no Mac ou do Edge WebView no Windows, então você perde muito do que o Chromium costuma resolver e acaba gastando tempo com debug multiplataforma
Surpreendentemente, o mais chocante nem foi o framework, e sim o empacotamento no Linux
O AppImage roda em qualquer lugar, mas para a maioria dos usuários ainda parece algo de segunda classe, e o .deb cobre as distros principais, só que você precisa acompanhar as mudanças contínuas da versão do glibc
Snap/Flatpak parecem a resposta oficial cross-distro, mas por causa de sandbox e permissões é fácil um desenvolvedor indie perder semanas nisso
No fim, publiquei .deb e .AppImage, e em poucas horas já começaram a chegar e-mails perguntando "por que não está no AUR?"
Também funciona no navegador
https://web.localsend.org/
Dá para transferir do Windows para Android e iOS
Testei envio e recebimento com Firefox, Chrome, celular e notebook
No console apareceu
WebRTC: ICE failed, add a TURN server and see about:webrtc for more details., e não ficou claro para mim como um usuário comum deveria resolver issoQuando fui pesquisar, quase tudo era orientação voltada para desenvolvedor
No fim descobri que, se desligar o Tailscale, funciona
Mas a v1.18.0 ainda não chegou ao F-droid
Eu também estava construindo algo nessa área no ano passado
Basicamente fiz o keibidrop, um filesystem peer-to-peer: https://keibidrop.com/
Lancei na semana passada, e além do que o local send faz, ele também funciona por WAN
O app mobile ainda não foi lançado
O passo além é que ele também tem um filesystem virtual sincronizado nos dois sentidos
O repositório está aqui: https://github.com/KeibiSoft/KeibiDrop
O código, tirando a UI, é open source, e eu também fiz benchmark com o localsend em loopback; o local send foi mais rápido
https://keibisoft.com/blog/keibidrop-benchmarks-vs-competition.html
Ontem eu também tentei abrir um tópico de comentários no /r/golang
Internamente, ele usa PQC, gRPC e FUSE
Foi um dos primeiros apps que instalei depois de migrar para Linux
Isso realmente me fez perceber como um app open source pode ser bom
Parece que o Localsend atualmente não funciona de forma estável quando o Tailscale está ativado
É uma pena
Seria ótimo se ele também suportasse transferência de arquivos entre clientes da mesma tailnet