- ExTracker는 Elixir로 만든 BitTorrent 트래커로, 현재 작업 진행 중이지만 동작하며 전체 산업용 사용에는 아직 준비되지 않았다고 명시함
- 성능 목표는 사용 가능한 모든 코어를 활용하는 고성능, 인메모리 저장소 기반 동작, 100만 peer당 약 200MB RAM 사용, 별도 설정 없이 실행 가능한 구조임
- BitTorrent 관련 BEP는 BEP 0, BEP 15, BEP 23, BEP 7, BEP 21, BEP 24, BEP 41, BEP 48, BEP 52를 구현했고, Private Torrents 등 일부는 미구현 또는 부분 구현 상태임
- HTTPS, 디스크 데이터베이스 백업, Docker 실행을 지원하며, WebTorrent는 지원하지 않고 whitelist/blacklist, peer 관리, metrics, GeoIP는 부분 구현 상태임
- 실행 방식은 소스 직접 실행, 직접 릴리스 빌드, Docker 이미지 실행의 세 가지이며, 컨테이너에서는
runtime.exs대신 환경 변수로 설정할 수 있음
ExTracker의 상태와 목표
- ExTracker는 “The Bittorrent Tracker made in Elixir”로 소개되는 BitTorrent 트래커 구현체임
- 프로젝트는 Work In Progress 상태임
- 전체 산업용 사용에는 아직 준비되지 않았다고 명시함
- 현재 동작은 가능함
- 테스트 인스턴스가
extracker.dahrkael.net:6969에서 실행 중이며, 현재 기능이 활성화되어 있음
주요 기능
- 성능과 운영 편의성을 핵심 기능으로 제시함
- 고성능: 사용 가능한 모든 코어를 활용함
- 인메모리 저장소를 사용함
- 메모리 사용량은 peer 100만 개당 약 200MB RAM임
- Zero setup: 실행하면 바로 동작하는 형태를 목표로 함
BitTorrent BEP 지원 상태
- 구현 상태 표기는
✅ Done,🔰 Partially,🔲 Not Yet,❌ Won't do로 나뉨 -
완료된 BEP
- BEP 0: The BitTorrent Protocol Specification
- BEP 15: UDP Tracker Protocol
- BEP 23: Tracker Returns Compact Peer Lists
- BEP 7: IPv6 Tracker Extension
- BEP 21: Extension for partial seeds
- BEP 24: Tracker Returns External IP
- BEP 41: UDP Tracker Protocol Extensions
- BEP 48: Tracker Protocol Extension: Scrape
- BEP 52: The BitTorrent Protocol Specification v2
-
미구현 또는 제외된 BEP
- BEP 27: Private Torrents는 아직 구현되지 않음
- BEP 31: Tracker Failure Retry Extension는 아직 구현되지 않음
- BEP 8: Tracker Peer Obfuscation는 구현하지 않을 항목임
기타 기능과 제한
- 완료된 기능
-
HTTPS 지원
- 디스크 데이터베이스 백업
- 지원하지 않는 기능
- WebTorrent
- 부분 구현된 기능
-
Infohash whitelist/blacklist
- peer 관리: interval enforcement, cleanup, banning 등
-
Metrics
- GeoIP 지원: 통계와 peer 제한 용도
- 기능 제안은 Issues에서 받을 수 있음
-
실행 방법
-
소스 코드에서 직접 실행
- 이 방식은 시스템에 Erlang과 Elixir가 설치되어 있어야 함
- 저장소를 클론함
git clone https://github.com/Dahrkael/ExTracker.git && cd ExTracker- 필요하면 config/runtime.exs를 수정함
- 실행 명령은
MIX_ENV=prod iex -S mix임
-
릴리스 빌드
- 현재 공식 릴리스 빌드는 없으며, 직접 릴리스를 만들어 배포할 수 있음
- 저장소를 클론한 뒤 운영체제에 맞게 빌드함
- Linux:
MIX_ENV=prod mix release extracker - Windows:
MIX_ENV=prod mix release extrackerw - 릴리스 파일은
_build/prod/rel/extracker폴더에 생성됨 - 다른 머신으로 옮길 경우 OS와 아키텍처가 같아야 함
- 필요하면
releases/{VERSION}/runtime.exs설정을 수정함 - 실행 명령은
bin/extracker start임
-
Docker 실행
- 제공되는 Docker 이미지를 바로 실행할 수 있음
docker run ghcr.io/dahrkael/extracker:latest- docker-compose로도 사용할 수 있으며 예시 compose 파일이 제공됨
- 컨테이너 안에서
runtime.exs를 수정해 설정을 조정하기 어렵기 때문에 환경 변수로도 설정할 수 있음 - 전체 환경 변수 목록은 예시 compose 파일에서 확인할 수 있음
라이선스
- ExTracker는 Apache License 2.0 조건으로 배포됨
- 자세한 내용은 저장소의 LICENSE file을 참조함