인터넷이나 타사 서버 없이 로컬 네트워크의 기기 간에 파일과 메시지를 주고받는 무료 오픈 소스 앱입니다.
n0-computer/iroh
공개 키로 앱을 연결하고 QUIC 전송, 홀 펀칭, 릴레이 대체 경로를 제공하는 Rust 라이브러리입니다.
- 스타
- 12,779
- 포크
- 778
- 열린 이슈
- 183
- 마지막 커밋
- 8시간 전
어떤 프로젝트인가요?
Iroh를 사용하면 IP 주소 대신 피어의 공개 키로 애플리케이션을 호출할 수 있습니다. 라이브러리는 피어에 연결할 수 있는 최적의 경로를 찾아 유지하며, 먼저 홀 펀칭으로 직접 연결을 시도하고 실패하면 공개 릴레이 서버를 사용합니다.
연결은 noq 라이브러리를 통한 QUIC 기반으로, 인증된 암호화, 우선순위가 적용된 동시 스트림, 데이터그램 전송을 지원하며 헤드 오브 라인 블로킹을 방지합니다. 개발자는 이 연결 위에서 직접 프로토콜을 구현할 수 있습니다.
저장소에는 미리 구현된 프로토콜도 포함되어 있습니다. BLAKE3 콘텐츠 주소 지정 전송을 위한 iroh-blobs, 퍼블리시-서브스크라이브 오버레이 네트워크를 위한 iroh-gossip, 최종적 일관성을 제공하는 키-값 저장소인 iroh-docs가 있습니다. 다른 언어용 바인딩은 별도의 iroh-ffi에서 관리합니다.
핵심 기능
- 01IP 주소 대신 공개 키로 피어 호출
- 02홀 펀칭을 통한 직접 연결 및 릴레이 대체 경로
- 03암호화와 멀티플렉싱 스트림을 지원하는 QUIC 연결
- 04블롭 전송, 가십, 키-값 문서용 사전 구현 프로토콜
- 05워크스페이스에 공개 릴레이 서버 구현 포함
활용 사례
- NAT 뒤에 있는 기기를 연결해야 하는 P2P 앱
- 중앙 서버 없이 기기 간 파일 동기화
- 노드 간 실시간 메시징 또는 pub-sub 오버레이 구축
빠른 시작
- 1
cargo로 Rust 라이브러리를 설치하세요
cargo add iroh - 2
전체 코드는 echo 예제를 살펴보세요
사용 전 알아둘 점
- 주로 Rust 라이브러리이며, 다른 언어에서는 별도 프로젝트인 iroh-ffi 바인딩을 사용해야 합니다.
토픽
자주 묻는 질문
- iroh은(는) 무엇인가요?
- 공개 키로 앱을 연결하고 QUIC 전송, 홀 펀칭, 릴레이 대체 경로를 제공하는 Rust 라이브러리입니다. Iroh를 사용하면 IP 주소 대신 피어의 공개 키로 애플리케이션을 호출할 수 있습니다. 라이브러리는 피어에 연결할 수 있는 최적의 경로를 찾아 유지하며, 먼저 홀 펀칭으로 직접 연결을 시도하고 실패하면 공개 릴레이 서버를 사용합니다.
- iroh은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- iroh은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- iroh은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. iroh의 마지막 커밋은 2026년 10월 19일입니다.
- iroh은(는) 어디에 사용할 수 있나요?
- NAT 뒤에 있는 기기를 연결해야 하는 P2P 앱 중앙 서버 없이 기기 간 파일 동기화 노드 간 실시간 메시징 또는 pub-sub 오버레이 구축
- iroh는 어떻게 설치하나요?
- cargo로 Rust 라이브러리를 설치하세요: cargo add iroh 전체 코드는 echo 예제를 살펴보세요
- iroh은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/n0-computer/iroh
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
로컬 TCP 포트를 원격 서버로 연결해 localhost 서비스를 공개 인터넷에서 이용하게 하는 간결한 Rust CLI입니다.
Tailscale 계정이나 제어 플레인 없이 WireGuard 데이터 플레인으로 두 기기를 연결하는 netcat 스타일 CLI 및 Go 라이브러리
실시간 트래픽, 연결, 패킷을 보여주고 한 번의 명령으로 진단하는 Rust 기반 터미널 네트워크 진단 도구입니다.
Android 기기와 무선으로 파일을 주고받는 Google Quick Share 프로토콜용 GTK Linux 클라이언트입니다.
자체 서버 없이 브라우저끼리 WebRTC로 P2P 연결하는 멀티플레이어 웹 앱용 JavaScript 라이브러리입니다.