1P by GN⁺ 3시간전 | ★ favorite | 댓글 2개
  • 무료 오픈소스 앱으로, 인터넷 연결 없이 로컬 네트워크 안의 가까운 기기들과 파일과 메시지를 안전하게 주고받을 수 있음
  • 외부 서버나 서드파티 서버에 의존하지 않고, 기기 간 통신을 REST APIHTTPS 암호화로 처리해 빠르고 신뢰성 있는 로컬 통신을 지원함
  • 전송 데이터는 모두 HTTPS로 보호되며, TLS/SSL 인증서를 각 기기에서 즉시 생성해 보안을 높임
  • Windows, macOS, Linux, Android, iOS, Fire OS에서 배포되며, 앱 스토어나 패키지 매니저를 통한 설치를 우선 권장함
  • 앱에 자동 업데이트 기능이 없어서, README는 앱 스토어 또는 패키지 매니저 경로 사용을 추천함
  • 배포 채널은 Windows의 Winget, Scoop, Chocolatey, EXE, Portable ZIP, macOS의 App Store와 Homebrew, Linux의 Flathub, Nixpkgs, Snap, AUR, DEB, AppImage, TAR, Android의 Play Store, F-Droid, APK, Fire OS의 Amazon을 포함함
  • 최소 지원 버전은 Android 5.0, iOS 12.0, macOS 11 Big Sur, Windows 10이며, Windows 7을 지원하는 마지막 버전은 v1.15.4
  • Linux에서는 데스크톱 환경에 따라 xdg-desktop-portal 계열 의존성이 필요하며, Gnome은 xdg-desktop-portalxdg-desktop-portal-gtk, KDE는 xdg-desktop-portalxdg-desktop-portal-kde를 요구함
  • 대부분 별도 설정 없이 동작하지만, 송수신 문제가 있으면 방화벽에서 TCP/UDP 53317 인바운드를 허용하고 아웃바운드 TCP/UDP도 허용해야 함
  • 라우터의 AP isolation이 켜져 있으면 기기 간 연결이 막혀서, 기기 검색 문제가 생길 때 이를 비활성화해야 함
  • 포터블 모드는 실행 파일과 같은 디렉터리에 비어 있어도 되는 settings.json 파일을 두면 활성화되며, 설정 저장 위치를 기본 경로 대신 그 파일로 바꿈
  • 트레이에만 숨겨서 시작하려면 --hidden 플래그를 사용할 수 있음
  • 속도가 느릴 때는 5 Ghz 사용과 양쪽 기기에서 암호화 비활성화를 안내하며, Android 수신 속도 저하는 알려진 이슈로 남아 있음
  • 소스 빌드에는 FlutterRust가 필요하고, 프로젝트는 .fvmrc에 지정된 구버전 Flutter를 사용하므로 fvm flutter 사용을 권장함

보드게임 모임할때 찍은 타임랩스 공유용으로 자주 썼는데요.
최근에 갤럭시랑 픽셀이 에어드랍을 공유하면서 살짝 용도가 애매해졌습니다.
물론 데스크탑으로 보낼때는 아직도 좋아요.

Hacker News 의견들
  • 문제는 이런 대안들이 전부 같은 로컬 네트워크에 있어야 한다는 데 있음
    Airdrop의 좋은 점은 그 로컬 네트워크를 뒤에서 자동으로 만들고 처리해준다는 점이라고 이해하고 있음
    그래서 친구들과 하이킹 중이어도 바로 뭔가 보낼 수 있었음
    Android로 바꾼 뒤에는 친구 기기에 테더링해서 LAN을 만든 다음 Localsend를 쓰고 있는데, 경험 자체는 훨씬 덜 매끄러움

    • https://mbarlow.github.io/thinair/
      그냥 정적 GitHub 페이지로 동작하는 device-to-device 전송 도구임
      gh repo: https://github.com/mbarlow/thinair
      각 기기가 스캔할 QR 코드를 만들고, WebRTC 연결을 잡음
      Android끼리는 서로 QR 모드에서 카메라 스캔 모드로 전환하라고 알려주는 오디오 chirp도 씀
      Android↔Apple도 테스트해봤고 동작하긴 하는데, Apple은 그 오디오 chirp를 못 잡음
      그럴 때는 조금 기다리면 QR 코드가 사라져서 스캔 단계로 넘어갈 수 있음
      급하게 만든 거고, 원래는 새소리 같은 chirp나 옛날 모뎀 방식으로 스마트폰끼리 오디오 핸드셰이크를 실험해보고 있었음
      폰을 맞대고 오디오 프레임을 주고받으며 전송 시작을 확인하는 건 재미있었지만, 핸드셰이크가 느리고 신뢰성도 낮았음
      흐름을 더 다듬고 싶고, 지금은 iPhone/Android/PC 사이에서 앱, 이메일, 계정 없이 파일 보낼 때 이미 쓰고 있음
    • 진짜 크로스플랫폼 P2P에 가장 가까웠던 건 FlyingCarpet였음
      다만 아주 안정적이거나 친화적인 편은 아님
      https://github.com/spieglt/FlyingCarpet
    • 이것도 시도해볼 만함: https://github.com/nuwainfo/ffl
      Android 앱이고, 공유할 때 LAN이 필요 없다고 함
      https://play.google.com/store/apps/details?id=com.fastfilelink.wrapper
    • Airdrop도 꽤 이상하게 동작할 때가 있음
      다른 폰을 못 찾는 경우가 있고, 아마 이전 전송이 백그라운드에서 조용히 실패했을 때 그런 듯함
      모바일/Wi-Fi 연결이 없으면 연락처 검색에도 문제가 있었고, 산에서 다른 폰으로 사진 보내려 할 때 겪었음
      가끔은 그냥 멈춰서 아예 안 되기도 해서, 이런 Apple magic은 별로 도움이 안 됨
    • Localsend는 사실 Airdrop이 하는 일 중 마지막 단계만 해줌
      Localsend를 쓰려면 한 기기에서 ad-hoc Wi‑Fi를 만들고, 다른 기기들을 거기에 연결한 다음, 그제야 Localsend를 실행해야 함
      앞의 두 단계가 꽤 번거롭고, Airdrop이 그걸 알아서 처리해주니까 훨씬 마찰 없이 느껴지는 것임
  • 최근에 쓰기 시작했는데 정말 잘 동작하고 Airdrop보다 훨씬 믿을 만했음
    다만 UX는 더 좋아질 여지가 있음
    그래도 Apple이 Airdrop을 좀 고쳐줬으면 좋겠음
    쓸 때마다 신뢰가 너무 낮고, 기기를 못 보거나 Mac 사용자가 여러 명이면 같은 Mac을 두 번 보여주면서 어느 사용자인지도 안 알려줘서 헷갈림

    • 다들 이걸 어디에 쓰는지 궁금함
      그렇게까지 이런 앱이 필요할 정도로 어떤 큰 파일들을 만들고 옮기는 건지 잘 모르겠음
      내 경우 휴대폰에서 생기는 파일은 사진과 영상뿐이고, Immich로 백업한 뒤 링크로 공유하면 됨
      보통 사람들도 iCloud나 Google Photos로 비슷하게 할 것 같음
      문서 같은 다른 파일 동기화는 ownCloud OCIS를 쓰고 있고, 대부분은 DropBox나 iCloud, 아니면 이메일이나 WhatsApp으로도 충분할 것 같음
      로컬 네트워크에서 ISO 같은 걸 옮길 때는 SMB로 복사하면 되고, 사실상 어디서나 되고 별도 앱도 필요 없음
      백업이라면 하드 드라이브를 그냥 꽂아도 됨
      그래서 왜 이걸 써야 하는지 잘 납득이 안 감
    • 그런 문제들 트러블슈팅은 이미 해봤는지 궁금함
      예전엔 나도 비가시성 문제가 있었는데, 요즘은 항상 잘 되는 편임
    • 내 경우엔 기기는 보여도 전송을 시작하면 절반 정도는 상대 기기에 아예 안 뜸
      확실하게 고치는 방법은 아직 못 찾았고, 양쪽에서 Airdrop을 껐다 켜는 게 제일 낫긴 한데 그것도 70% 정도만 통함
  • Sendme https://github.com/n0-computer/sendme와 AltSendme https://github.com/tonyantony300/alt-sendme를 볼 만함
    둘 다 Iroh https://github.com/n0-computer/iroh를 쓰는데, 중앙 서버 없이 데이터를 보내는 오픈소스 암호화 P2P relay 서비스라서 송수신 파일 크기 제한이 사실상 없음
    비슷한 스레드에서 파일 공유 앱 얘기했을 때도 이걸 추천했었음
    https://news.ycombinator.com/item?id=47906587

    • 이런 식으로 seed/code 공유를 요구하는 서비스는 늘 좀 어색함
      코드가 말로 전달할 만큼 짧거나 단순하지도 않고, 그 코드를 보낼 수 있으면 보통 파일 자체도 그냥 보낼 수 있음
  • https://github.com/schlagmichdoch/pairdrop
    비슷한 프로젝트인데, 이건 전부 브라우저에서 동작하고 "public" room을 써서 로컬 네트워크 밖의 클라이언트와도 연결할 수 있음

    • 이건 꼭 써봐야겠음
      iPhone과 Linux 데스크톱 사이 전송용으로 Localsend를 깔아뒀는데, 항상 잘 굴러가진 않음
      Firewalld에서 Localsend 포트를 열어도 기기끼리 서로 보이기까지 10분 넘게 걸릴 때가 있음
      브라우저 기반이면 최소한 discovery는 더 빠를 것 같음
    • Pairdrop은 정말 좋음
      문서가 좀 숨어 있는데 FAQ는 https://github.com/schlagmichdoch/pairdrop/blob/master/docs/faq.md이고,
      Android, iOS, Windows의 공유 메뉴 통합 방법은 https://github.com/schlagmichdoch/PairDrop/blob/master/docs/how-to.md에 있음
      sharedrop과 snapdrop이 LimeWire에 인수된 뒤 망가져서 그걸 포크한 것임
    • 이름은 PearDrop이어야 했음
  • Airdrop 대체제를 자처하는 것들에 대해선 spamsolutions.txt 같은 게 필요하다고 느낌
    이건 기존 Wi‑Fi 네트워크에 두 피어가 모두 붙어 있지 않아야 한다는 기준을 통과하지 못함
    https://craphound.com/spamsolutions.txt

  • 비슷한 형태의 걸 Tauri로 내본 적이 있음
    설치 파일 크기는 Mac 약 27MB, Linux .deb 45MB, Windows 53MB 정도였고, Electron은 바닥이 150MB쯤 됐음
    .AppImage만 예외적으로 110MB 정도인데 런타임을 번들하기 때문임
    이 크기 절감은 OS의 webview를 재사용해서 나오지만, 그게 동시에 비용이기도 함
    Linux의 WebKitGTK는 Mac WebKit이나 Windows Edge WebView와 진짜 다르게 굴러가서, Chromium이 대신 처리해주던 걸 못 받고 크로스플랫폼 디버깅에 시간을 쓰게 됨
    의외로 더 놀라웠던 건 프레임워크보다 Linux 패키징이었음
    AppImage는 어디서나 돌아가지만 대부분 사용자에게는 2등 시민처럼 느껴지고, .deb는 주류 배포판을 커버하지만 계속 움직이는 glibc 버전을 따라가야 함
    Snap/Flatpak은 공식적인 cross-distro 답안처럼 보이지만, 샌드박스와 권한 처리 때문에 인디 개발자는 몇 주를 태우기 쉬움
    결국 .deb와 .AppImage를 배포했더니 몇 시간 안 돼서 "왜 AUR엔 없냐"는 메일이 오기 시작했음

  • 브라우저에서도 동작함
    https://web.localsend.org/
    Windows에서 Android, iOS까지 전송 가능함

    • 내 쪽에서는 이게 안 됐음
      Firefox, Chrome, 휴대폰, 노트북으로 송수신 다 해봤음
      콘솔엔 WebRTC: ICE failed, add a TURN server and see about:webrtc for more details.가 떴고, 이걸 사용자가 어떻게 해결해야 할지는 잘 모르겠더라
      검색해보면 대부분 개발자용 조언뿐이었음
      결국 알아냈는데, Tailscale을 끄면 동작함
    • 브라우저에서 LAN discovery를 어떻게 하는지 궁금함
    • 좋다
      다만 v1.18.0이 아직 F-droid에는 안 올라옴
  • 나도 작년에 이 영역에서 뭔가 만들고 있었음
    기본적으로 peer-to-peer filesystem인 keibidrop을 만들었음: https://keibidrop.com/
    지난주에 공개했고, local send가 하는 일에 더해 WAN으로도 동작함
    모바일 앱은 아직 출시 안 했음
    한 단계 더 나간 부분은 양방향으로 동기화되는 virtual filesystem까지 있다는 점임
    저장소는 여기 있음: https://github.com/KeibiSoft/KeibiDrop
    UI를 제외한 코드는 오픈소스고, loopback 기준으로 localsend와 벤치마크도 해봤는데 local send가 더 빨랐음
    https://keibisoft.com/blog/keibidrop-benchmarks-vs-competition.html
    어제는 /r/golang에도 댓글 스레드를 만들어보려 했음
    내부적으로는 PQC, gRPC, FUSE를 사용했음

  • Linux로 옮긴 뒤 가장 먼저 설치한 앱들 중 하나가 이거였음
    오픈소스 앱이 얼마나 좋은지 확실히 체감하게 해줬음

  • Tailscale이 켜져 있으면 Localsend가 지금은 안정적으로 동작하지 않는 듯함
    아쉬운 부분임
    같은 tailnet 안의 클라이언트끼리 파일 전송도 지원해주면 정말 좋겠음