Direct files. No cloud.
DirectDrop은 클라우드에 파일을 올리지 않고 기기에서 기기로 직접 전달하는 파일 공유 프로그램입니다. 데스크톱 앱은 인터넷용 DirectDrop과 같은 네트워크용 LAN Share를 서로 독립된 카테고리로 제공합니다.
share.dlfkd.dev 임시 링크와 QR 코드를 만들고, 수신자는 프로그램 설치 없이 브라우저에서 파일을 저장합니다. 실제 파일은 WebRTC로 직접 전송합니다.
같은 Wi-Fi 또는 Ethernet의 DirectDrop 기기를 mDNS로 찾고 인터넷 없이 직접 전송합니다. 최초 연결은 양쪽의 6자리 코드를 확인하며, 이후에는 인증서 fingerprint와 영구 신뢰 키로 기기를 인증합니다. 파일·폴더 데이터는 인증서 고정 TLS 연결로만 이동합니다. 자세한 프로토콜과 보안 경계는 Nearby LAN Share 문서를 참고하세요.
Nearby 사용 조건: 보내는 기기와 받는 기기 모두에 DirectDrop v0.2.0 이상이 설치되어 있고 앱이 실행 중이어야 합니다. 같은 로컬 네트워크에 연결된 데스크톱 앱끼리만 검색되며, 브라우저만으로는 Nearby를 사용할 수 없습니다. 수신자 앱 설치 없이 보내려면
DirectDrop · Share Link를 사용하세요.
- WebRTC RTCDataChannel 기반 직접 P2P 파일 전송
- 중앙 서버·Cloudflare R2·S3에 사용자 파일을 저장하지 않는 구조
- 임시 공유 링크와 QR 코드
- 1~1000회 또는 무제한 다운로드, 만료 시간, 비밀번호 보호
- 자동 승인 또는 요청별 수동 승인
- 여러 파일과 256 KiB 청크 스트리밍, DataChannel backpressure
- Windows 및 macOS 데스크톱 앱, 모바일 우선 브라우저 수신 화면
- SQLite 기반 서버 메타데이터와 송신자 전용 로컬 경로 레지스트리
_directdrop._tcp.localmDNS 기반 Nearby 기기 검색- 6자리 상호 확인 페어링과 인증서 고정 TLS 1.2/1.3 연결
- 여러 파일·폴더의 1 MiB bounded 스트리밍과 청크 SHA-256 검증
- 수신 승인, 일시정지·이어보내기·취소, 연결 중단 후 offset 재개
- Nearby 속도·ETA·전송 내역·받은 파일과 신뢰 기기 관리
share.dlfkd.dev에서 운영 방식과 기기별 다운로드를 확인하거나 GitHub Releases의 최신 DirectDrop을 직접 받으세요.
Windows 설치 프로그램은 현재 코드 서명되지 않았고 macOS 앱은 ad-hoc 서명 상태라 SmartScreen 또는 Gatekeeper가 경고할 수 있습니다. 릴리스의 SHA256SUMS.txt와 저장소 소스를 확인하세요.
macOS에서 DirectDrop을 Applications 폴더로 복사한 뒤 손상되었다는 경고가 나오면 터미널에서 아래 명령을 실행하세요.
xattr -dr com.apple.quarantine /Applications/DirectDrop.app
open /Applications/DirectDrop.appSender Desktop ── signaling ──▶ share.dlfkd.dev ◀── signaling ── Receiver Browser
Sender Desktop ═══════════════ WebRTC file data ═══════════════▶ Receiver Browser
Nearby Desktop ═══ certificate-pinned TLS on local network ═══▶ Nearby Desktop
Cloudflare Tunnel은 Share Link의 랜딩 페이지, API, WebSocket signaling만 전달합니다. Share Link 파일 바이트는 WebRTC로, Nearby 파일 바이트는 로컬 네트워크 TLS로 이동하며 둘 다 DirectDrop 서버를 통과하지 않습니다.
- 송신자의 DirectDrop 앱이 온라인이어야 합니다.
- Nearby는 양쪽 기기에 DirectDrop v0.2.0 이상이 설치·실행되어 있고 같은 IPv4 사설/링크 로컬 네트워크에 있어야 합니다. 브라우저는 Nearby 기기로 검색되지 않습니다.
- macOS에서는 로컬 네트워크 접근을 허용하고, Windows 방화벽에서는 DirectDrop을
Private network에만 허용하세요. - VPN·게스트 Wi-Fi·AP isolation이 기기 간 통신이나 mDNS를 차단하면 Nearby 검색이 되지 않을 수 있습니다.
- 기본 구성은 STUN을 사용하는 Direct P2P 전용입니다. 일부 NAT·방화벽 환경에서는 연결이 실패할 수 있습니다.
- TURN은 선택 사항이며 명시적으로 설정하고 공유에서 Relay를 허용한 경우에만 사용합니다. 서버 업로드 fallback은 없습니다.
- 대용량 디스크 스트리밍 저장은 File System Access API가 있는 최신 Chrome/Edge에서 가장 잘 동작합니다. 자세한 내용은 브라우저 지원 문서를 참고하세요.
- 현재 Windows 빌드는 코드 서명되지 않았습니다. 요청에 따라 macOS Developer ID 서명·공증은 제외하고 ad-hoc signing으로 배포합니다.
필수 도구는 Node.js 22+, pnpm 11+, Rust stable, Tauri 2 시스템 의존성입니다.
pnpm install
cp .env.example .env
pnpm build
pnpm --filter @directdrop/server start웹과 서버 개발 모드:
pnpm devTauri 개발 모드:
pnpm dev:desktop전체 검증:
pnpm check
cargo fmt --manifest-path apps/desktop/src-tauri/Cargo.toml -- --check
cargo clippy --manifest-path apps/desktop/src-tauri/Cargo.toml --all-targets -- -D warnings
cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml모든 공개 URL, STUN/TURN, cleanup 동작은 환경변수로 분리되어 있습니다. 비밀값 없이 제공되는 .env.example을 기준으로 설정하세요. 운영 구조는 architecture.md, Tunnel 재구성은 cloudflare-setup.md를 참고하세요.
apps/desktop Tauri + React 송신 앱
apps/web React 브라우저 랜딩/수신 화면
apps/server Fastify API + WebSocket signaling + SQLite
packages/ protocol, shared, UI 공통 패키지
docs/ 운영·아키텍처·테스트 문서
MIT License