1 điểm bởi GN⁺ 1 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp

Repository: https://github.com/localsend/localsend

  • ứng dụng mã nguồn mở miễn phí, cho phép gửi nhận tệp và tin nhắn an toàn với các thiết bị ở gần trong mạng cục bộ mà không cần kết nối Internet
  • Không phụ thuộc vào máy chủ bên ngoài hay máy chủ bên thứ ba, ứng dụng xử lý giao tiếp giữa các thiết bị bằng REST APImã hóa HTTPS, hỗ trợ liên lạc cục bộ nhanh và đáng tin cậy
  • Dữ liệu truyền tải đều được bảo vệ bằng HTTPS, đồng thời chứng chỉ TLS/SSL được tạo tức thì trên từng thiết bị để tăng cường bảo mật
  • Được phát hành cho Windows, macOS, Linux, Android, iOS và Fire OS; ưu tiên khuyến nghị cài đặt qua app store hoặc package manager
  • Ứng dụng không có tính năng tự động cập nhật, vì vậy README khuyến nghị dùng đường dẫn cài đặt qua app store hoặc package manager
  • Các kênh phân phối bao gồm Winget, Scoop, Chocolatey, EXE, Portable ZIP trên Windows; App Store và Homebrew trên macOS; Flathub, Nixpkgs, Snap, AUR, DEB, AppImage, TAR trên Linux; Play Store, F-Droid, APK trên Android; và Amazon trên Fire OS
  • Phiên bản hỗ trợ tối thiểu là Android 5.0, iOS 12.0, macOS 11 Big Sur, Windows 10; phiên bản cuối cùng hỗ trợ Windows 7 là v1.15.4
  • Trên Linux, tùy theo môi trường desktop có thể cần các phụ thuộc thuộc họ xdg-desktop-portal; Gnome yêu cầu xdg-desktop-portalxdg-desktop-portal-gtk, KDE yêu cầu xdg-desktop-portalxdg-desktop-portal-kde
  • Phần lớn trường hợp ứng dụng hoạt động mà không cần cấu hình thêm, nhưng nếu có vấn đề gửi/nhận thì cần cho phép inbound TCP/UDP 53317 trên tường lửa và cũng phải cho phép outbound TCP/UDP
  • Nếu AP isolation trên router đang bật, kết nối giữa các thiết bị sẽ bị chặn, vì vậy cần tắt nó khi gặp vấn đề phát hiện thiết bị
  • Chế độ portable được kích hoạt nếu đặt tệp settings.json trong cùng thư mục với tệp thực thi, kể cả khi tệp đó rỗng; khi đó vị trí lưu cài đặt sẽ chuyển sang tệp này thay vì đường dẫn mặc định
  • Nếu muốn khởi động ứng dụng và chỉ ẩn trong khay hệ thống, có thể dùng cờ --hidden
  • Khi tốc độ chậm, tài liệu hướng dẫn dùng 5 Ghz và tắt mã hóa trên cả hai thiết bị; tình trạng tốc độ nhận chậm trên Android vẫn là một vấn đề đã biết
  • Để build từ source cần FlutterRust; dự án sử dụng phiên bản Flutter cũ được chỉ định trong .fvmrc, nên khuyến nghị dùng fvm flutter

2 bình luận

 

Tôi từng hay dùng nó để chia sẻ timelapse chụp trong các buổi tụ họp chơi board game.
Gần đây Galaxy và Pixel đã chia sẻ được AirDrop nên mục đích sử dụng của nó hơi trở nên mơ hồ.
Dĩ nhiên khi gửi sang desktop thì nó vẫn rất ổn.

 
Ý kiến trên Hacker News
  • Vấn đề là mọi phương án thay thế kiểu này đều phải ở trên cùng một mạng cục bộ
    Theo tôi hiểu, điểm hay của Airdrop là nó tự động tạo và xử lý mạng cục bộ đó ở phía sau
    Vì thế ngay cả khi đang đi leo núi cùng bạn bè thì vẫn có thể gửi gì đó ngay lập tức
    Từ khi chuyển sang Android, tôi phải phát tethering sang thiết bị của bạn để tạo LAN rồi mới dùng Localsend, nhưng trải nghiệm rõ ràng kém mượt hơn nhiều

    • https://mbarlow.github.io/thinair/
      Đây là một công cụ truyền thiết bị-tới-thiết bị chạy đơn giản trên trang GitHub tĩnh
      gh repo: https://github.com/mbarlow/thinair
      Mỗi thiết bị tạo một mã QR để quét, rồi thiết lập kết nối WebRTC
      Giữa các máy Android với nhau còn dùng cả âm thanh chirp để báo cho nhau chuyển từ chế độ hiển thị QR sang chế độ quét bằng camera
      Tôi cũng đã thử Android↔Apple và đúng là vẫn hoạt động, nhưng Apple không bắt được âm thanh chirp đó
      Khi ấy chỉ cần đợi một chút là mã QR sẽ biến mất để chuyển sang bước quét
      Đây là thứ được làm rất gấp, ban đầu tôi chỉ đang thử nghiệm bắt tay âm thanh giữa điện thoại với nhau bằng kiểu chirp như tiếng chim hoặc kiểu modem cũ
      Việc áp hai điện thoại lại gần nhau, trao đổi khung âm thanh để xác nhận bắt đầu truyền thì khá vui, nhưng quá trình bắt tay vừa chậm vừa thiếu ổn định
      Tôi vẫn muốn trau chuốt luồng này hơn nữa, nhưng hiện giờ đã dùng nó để gửi file giữa iPhone/Android/PC mà không cần app, email hay tài khoản
    • Thứ từng gần nhất với P2P đa nền tảng thực sự là FlyingCarpet
      Chỉ là nó không quá ổn định hay thân thiện
      https://github.com/spieglt/FlyingCarpet
    • Cái này cũng đáng thử: https://github.com/nuwainfo/ffl
      Đây là ứng dụng Android, và họ nói rằng không cần LAN để chia sẻ
      https://play.google.com/store/apps/details?id=com.fastfilelink.wrapper
    • Airdrop đôi khi cũng hoạt động rất kỳ quặc
      Có lúc nó không tìm thấy điện thoại còn lại, có lẽ vì lần truyền trước đã âm thầm thất bại trong nền
      Nếu không có kết nối di động/Wi‑Fi thì việc dò danh bạ cũng gặp vấn đề, tôi từng gặp khi định gửi ảnh cho điện thoại khác trên núi
      Thỉnh thoảng nó còn đứng luôn và không làm gì được, nên mấy kiểu Apple magic như vậy chẳng giúp ích mấy
    • Localsend thật ra chỉ làm bước cuối cùng trong những gì Airdrop làm
      Để dùng Localsend, bạn phải tạo Wi‑Fi ad-hoc trên một thiết bị, kết nối các thiết bị khác vào đó, rồi lúc ấy mới chạy Localsend
      Hai bước đầu khá phiền, còn Airdrop tự lo hết nên cảm giác ít ma sát hơn nhiều
  • Tôi mới bắt đầu dùng gần đây, và nó hoạt động cực tốt, đáng tin hơn Airdrop rất nhiều
    Dù vậy UX vẫn còn chỗ để cải thiện
    Nhưng tôi vẫn ước Apple sửa Airdrop đi một chút
    Mỗi lần dùng độ tin cậy quá thấp, hoặc là không thấy thiết bị, hoặc nếu có nhiều người dùng Mac thì nó hiện cùng một máy Mac hai lần mà không nói là của người dùng nào nên rất rối

    • Tôi tò mò mọi người dùng cái này vào việc gì
      Không rõ mọi người tạo ra và di chuyển những tệp lớn kiểu gì mà lại cần đến ứng dụng thế này
      Với tôi, file sinh ra trên điện thoại chỉ có ảnh và video, tôi sao lưu bằng Immich rồi chia sẻ bằng link là đủ
      Có lẽ người bình thường cũng sẽ dùng iCloud hoặc Google Photos theo cách tương tự
      Với đồng bộ những file khác như tài liệu, tôi dùng ownCloud OCIS, và với đa số người thì DropBox hay iCloud, hoặc thậm chí email hay WhatsApp chắc cũng đã đủ
      Nếu cần chuyển thứ như ISO trong mạng nội bộ thì chỉ cần copy bằng SMB, gần như ở đâu cũng làm được và không cần app riêng
      Nếu là sao lưu thì cắm thẳng ổ cứng vào cũng được
      Nên tôi thật sự chưa bị thuyết phục vì sao phải dùng cái này
    • Không biết bạn đã thử khắc phục sự cố những vấn đề đó chưa
      Trước đây tôi cũng từng gặp lỗi không hiển thị, nhưng dạo gần đây thì hầu như lúc nào cũng hoạt động tốt
    • Trường hợp của tôi là thiết bị vẫn hiện ra, nhưng khi bắt đầu truyền thì khoảng một nửa số lần bên thiết bị kia chẳng hiện gì cả
      Tôi vẫn chưa tìm ra cách sửa dứt điểm, cách tốt nhất là tắt rồi bật lại Airdrop ở cả hai bên, nhưng cách đó cũng chỉ hiệu quả khoảng 70%
  • Đáng xem thử Sendme https://github.com/n0-computer/sendme và AltSendme https://github.com/tonyantony300/alt-sendme
    Cả hai đều dùng Iroh https://github.com/n0-computer/iroh, một dịch vụ relay P2P mã hóa mã nguồn mở để gửi dữ liệu mà không cần máy chủ trung tâm, nên trên thực tế gần như không có giới hạn kích thước file gửi nhận
    Tôi cũng từng khuyên dùng cái này trong một thread tương tự khi bàn về ứng dụng chia sẻ file
    https://news.ycombinator.com/item?id=47906587

    • Những dịch vụ yêu cầu chia sẻ seed/code kiểu này lúc nào cũng hơi gượng gạo
      Mã không đủ ngắn hay đơn giản để đọc miệng cho nhau, mà nếu đã gửi được cái mã đó thì thường cũng có thể gửi luôn chính file rồi
  • https://github.com/schlagmichdoch/pairdrop
    Đây là một dự án tương tự, nhưng chạy hoàn toàn trong trình duyệt và có thể dùng room "public" để kết nối với các client ở ngoài mạng cục bộ

    • Cái này tôi nhất định phải thử
      Tôi đã cài Localsend để chuyển file giữa iPhone và desktop Linux, nhưng nó không phải lúc nào cũng chạy tốt
      Ngay cả khi đã mở cổng Localsend trong Firewalld, đôi lúc phải mất hơn 10 phút các thiết bị mới nhìn thấy nhau
      Nếu dựa trên trình duyệt thì ít nhất phần discovery có lẽ sẽ nhanh hơn
    • Pairdrop thực sự rất tốt
      Tài liệu hơi bị giấu, nhưng FAQ ở https://github.com/schlagmichdoch/pairdrop/blob/master/docs/faq.md,
      còn cách tích hợp vào menu chia sẻ của Android, iOS, Windows ở https://github.com/schlagmichdoch/PairDrop/blob/master/docs/how-to.md
      Nó là bản fork của sharedrop và snapdrop sau khi hai dự án đó bị LimeWire mua lại rồi hỏng luôn
    • Đáng ra tên phải là PearDrop
  • Tôi cảm thấy với những thứ tự nhận là thay thế Airdrop thì cần một kiểu spamsolutions.txt
    Cái này không vượt qua được tiêu chí là hai peer không được cùng phụ thuộc vào mạng Wi‑Fi sẵn có
    https://craphound.com/spamsolutions.txt

  • Tôi từng phát hành một thứ tương tự bằng Tauri
    File cài đặt cỡ khoảng 27MB trên Mac, 45MB với Linux .deb, 53MB với Windows, còn Electron thì mức sàn đã khoảng 150MB
    Chỉ riêng .AppImage là ngoại lệ ở tầm 110MB vì nó bundle runtime
    Mức tiết kiệm dung lượng này đến từ việc tái sử dụng webview của hệ điều hành, nhưng đó cũng chính là cái giá phải trả
    WebKitGTK trên Linux cư xử thực sự khác Mac WebKit và Windows Edge WebView, nên thay vì được Chromium xử lý giúp thì bạn phải tốn thời gian cho debug đa nền tảng
    Điều bất ngờ hơn nữa là không phải framework mà là đóng gói trên Linux
    AppImage chạy được ở hầu như mọi nơi, nhưng với đa số người dùng thì nó vẫn như công dân hạng hai; .deb bao phủ được các distro chính nhưng lại phải bám theo các phiên bản glibc luôn thay đổi
    Snap/Flatpak trông như câu trả lời chính thống cho cross-distro, nhưng sandbox và cách xử lý quyền hạn có thể dễ dàng đốt vài tuần của một indie developer
    Cuối cùng tôi phát hành .deb và .AppImage, rồi chỉ vài tiếng sau đã bắt đầu nhận email hỏi "sao không có trên AUR"

  • Nó cũng chạy trong trình duyệt
    https://web.localsend.org/
    Có thể truyền từ Windows sang Android, iOS

    • Bên tôi thì cái này không chạy
      Tôi đã thử cả gửi lẫn nhận bằng Firefox, Chrome, điện thoại và laptop
      Trong console hiện WebRTC: ICE failed, add a TURN server and see about:webrtc for more details. và tôi cũng không rõ người dùng phải xử lý việc này thế nào
      Tìm kiếm thì hầu hết chỉ ra lời khuyên dành cho developer
      Cuối cùng tôi tìm ra là chỉ cần tắt Tailscale thì nó hoạt động
    • Tôi thắc mắc trình duyệt làm LAN discovery bằng cách nào
    • Hay đấy
      Chỉ là v1.18.0 vẫn chưa lên F-droid
  • Năm ngoái tôi cũng đang làm gì đó trong mảng này
    Về cơ bản tôi đã tạo ra keibidrop, một filesystem peer-to-peer: https://keibidrop.com/
    Tôi public nó vào tuần trước, và ngoài những gì local send làm được thì nó còn chạy qua WAN
    Ứng dụng di động thì vẫn chưa phát hành
    Đi xa hơn một bước ở chỗ nó còn có cả virtual filesystem được đồng bộ hai chiều
    Repo ở đây: https://github.com/KeibiSoft/KeibiDrop
    Phần code trừ UI là mã nguồn mở, và tôi cũng benchmark với localsend trên loopback thì local send nhanh hơn
    https://keibisoft.com/blog/keibidrop-benchmarks-vs-competition.html
    Hôm qua tôi cũng thử tạo một thread bình luận trên /r/golang
    Bên trong nó dùng PQC, gRPC, FUSE

  • Đây là một trong những ứng dụng đầu tiên tôi cài sau khi chuyển sang Linux
    Nó thực sự khiến tôi cảm nhận rõ ứng dụng mã nguồn mở tuyệt vời đến mức nào

  • Có vẻ Localsend hiện không hoạt động ổn định khi Tailscale đang bật
    Khá đáng tiếc
    Sẽ rất tuyệt nếu nó hỗ trợ truyền file giữa các client trong cùng tailnet