>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak wysłać 50 gigabajtów koledze bez chmury i ograniczeń prędkości

DashBeam Header

Znana sytuacja: musisz wysłać koledze świeży zrzut bazy danych o wadze dwudziestu gigabajtów lub archiwum z ciężkimi logami. Telegram narzeka na limit rozmiaru pliku. Google Drive i Yandex Disk wymagają najpierw wgrania wszystkiego do własnej pamięci, zjadając Twój limit dyskowy, a potem zmuszą odbiorcę do czekania na pobranie. Znany LocalSend przydaje się w biurze, ale zawodzi, gdy druga osoba jest u innego dostawcy internetu.

Ostatnio natknąłem się na ciekawy projekt o nazwie DashBeam (wcześniej rozwijany jako AltSendme). Program rozwiązuje dokładnie ten problem: przekazuje pliki i całe foldery bezpośrednio z jednego komputera na drugi przez internet, bez przechowywania czegokolwiek na pośrednich serwerach.

DashBeam working demo

Pod maską

DashBeam jest zbudowany na stosie sieciowym Iroh. To open-source'owy silnik P2P napisany w Rust. Zamiast klasycznego HTTP czy kapryśnego WebRTC, używa protokołu QUIC przez UDP z szyfrowaniem TLS 1.3.

Transfer danych jest sprytnie zaprojektowany:

  • Pliki i foldery są dzielone na bloki adresowane treścią (blobs). Każdy blok jest weryfikowany szybkim kryptograficznym haszem BLAKE3. Jeśli połączenie zostanie przerwane, DashBeam nie pobiera pliku od nowa — wysyła tylko brakujące fragmenty.
  • Dla sparowania generowany jest bilet tekstowy. Ciąg zawiera identyfikator nadawcy (klucz Ed25519), adresy do połączenia bezpośredniego oraz hasz żądanego pliku.
  • Urządzenia najpierw próbują przebić się przez NAT poprzez QUIC hole punching, aby kierować ruch bezpośrednio. Jeśli oba węzły są za ścisłymi firewallami, ruch przechodzi przez przekaźnik, ale jest zaszyfrowany. Przekaźnik widzi tylko szum i nie może odczytać ładunku.
  • Do regularnej wymiany między własnymi urządzeniami dostępne jest trwałe parowanie. Połącz raz kodem służbowego laptopa i telefon, a potem pliki wysyłasz jednym kliknięciem bez ręcznego kopiowania biletów.

W benchmarkach developer pokazuje prędkości do 125 MB/s (ograniczone przez łącze gigabitowe), a największy zarejestrowany transfer to 452 GB.

+----------------+                               +------------------+
| Sender (NodeA) | <====== QUIC / TLS 1.3 =====> | Receiver (NodeB) |
+----------------+        (Direct P2P Link)      +------------------+
        \                                                 /
         \-- [Fallback via encrypted Relay if NAT fails]-/

Czym DashBeam wyróżnia się na tle alternatyw

Rynek transferów P2P nie narzeka na brak rozwiązań, ale każde ma swoje haczyki:

LocalSend świetnie działa w ramach jednej sieci lokalnej, ale nie potrafi przebić się przez internet bez konfiguracji VPN, a przerwane transfery trzeba zaczynać od nowa.

Magic Wormhole jest cudowny w terminalu, jednak brakuje mu porządnego oficjalnego GUI i nie potrafi wznawiać przerwanych transferów plików.

Narzędzia bazujące na przeglądarce, jak PairDrop, są ograniczone przez ograniczenia WebRTC i pamięć karty przeglądarki, dlatego foldery o rozmiarze kilku gigabajtów często wywalają stronę.

DashBeam łączy wszystkie scenariusze. Aplikacja jest dostępna jako klient desktopowy na Windows, macOS i Linux, samodzielny APK na Androida, lekki terminal CLI, a nawet okrojona wersja webowa na wypadek, gdy instalacja oprogramowania nie wchodzi w grę.

Jak z tego korzystać

Przepływ pracy jest prosty:

  1. Przeciągnij i upuść plik lub katalog w okno programu.
  2. Otrzymaj wygenerowany bilet i wyślij go do odbiorcy przez dowolny komunikator.
  3. Odbiorca wkleja bilet do swojego klienta, widzi podgląd plików i potwierdza pobieranie.

Jeśli często dzielisz się buildami testowymi lub archiwami między własnymi maszynami, wygodniej jest przejść do sekcji ustawień, połączyć urządzenia trwałym pairem i wysyłać dane bezpośrednio jednym kliknięciem przycisku Wyślij.

Komu przyda się ten projekt? Developerom i DevOpsom do szybkiego przesyłania maszyn wirtualnych, backupów i zrzutów bez zaśmiecania firmowych dysków. Montażystom wideo i designerom, którzy muszą dostarczać pliki źródłowe klientom bez ograniczeń rozmiaru chmury.

Kod źródłowy jest rozpowszechniany na licencji AGPL-3.0. Jeśli chcesz, możesz wdrożyć własny serwer przekaźnikowy i DNS discovery na swoim VPS — dokumentacja i konfiguracje są dostępne w repozytorium projektu.

Powiązane projekty