概要
- ExTracker はElixir製のBitTorrentトラッカー
- 高性能・低メモリ設計で即時利用可能
- 多数の BEP に対応し、Dockerイメージも提供
- セットアップが簡単で、動作確認用インスタンスも公開中
- 開発は継続中で、フィードバックや提案も歓迎
ExTracker:Elixir製BitTorrentトラッカー概要
- Elixir で開発されたBitTorrentトラッカー
- 現在 開発進行中 プロジェクト(WIP)
- extracker.dahrkael.net:6969 でテストインスタンス稼働
- 全機能有効化済み (ライブ統計情報含む)
- フィードバックや機能提案は Issues で受付
主な特徴
- 高性能 :全CPUコア活用、インメモリストレージ
- 低メモリ消費 :100万ピアあたり約200MB
- ゼロセットアップ :起動するだけですぐ動作
- HTTPS 対応
- ディスクバックアップ 機能
対応BitTorrent Enhancement Proposals(BEPs)
- 正式・稼働中BEP
- BEP 0 :BitTorrent Protocol Specification
- 承認済BEP
- BEP 15 :UDP Tracker Protocol
- BEP 23 :トラッカーのコンパクトピアリスト返却
- ドラフトBEP
- BEP 7 :IPv6 Tracker Extension
- BEP 24 :トラッカーの外部IP返却
- BEP 41 :UDP Tracker Protocol Extensions
- BEP 48 :Scrapeプロトコル拡張(部分実装)
- BEP 52 :BitTorrent Protocol v2
- 未対応・計画中BEP
- BEP 27 :プライベートトレント
- BEP 21 :パーシャルシード拡張
- BEP 31 :トラッカー障害時リトライ拡張
- 対応しないBEP
- BEP 8 :ピア難読化
その他機能
- WebTorrent 非対応
- Infohash ホワイト/ブラックリスト(部分実装)
- ピア管理 (インターバル管理・クリーンアップ・BAN等:部分実装)
- メトリクス (部分実装)
- GeoIP対応 (統計・ピア制限:部分実装)
セットアップ方法
- ソースコードから直接実行
- 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内のファイルを使用- 必要に応じて
releases/{VERSION}/runtime.exsを編集 bin/extracker startで起動
- Docker
docker run ghcr.io/dahrkael/extracker:latestで即実行- docker-compose 例ファイルも用意
- 設定は 環境変数 でも可能
ライセンス・著作権
- Apache License, Version 2.0 で配布
- 詳細は リポジトリ内LICENSEファイル 参照
- 著作権:Dahrkael <dahrkael at outlook dot com>
開発者からのメッセージ
- Elixir と Go 習得の一環として開発
- 3ヶ月間 の余暇で制作
- パブリックトラッカー としての役割を重視
- 新規開発例が少ない 現状への挑戦
- 今後も 機能追加・改善 を継続予定
- 安定稼働 を重視、クラッシュなしを目指す
- コードの大部分は 手書き (swarm_printout.exのみ自動生成)
参考・関連プロジェクト
- aquatic、 torrust (近年のBitTorrentトラッカー開発例)
- opentracker (従来型の広く使われるトラッカー)
まとめ
- ExTracker は現代的なElixir製BitTorrentトラッカー
- 簡単導入 ・ 高性能 ・ 拡張性 を両立
- コミュニティからの 意見・協力 を歓迎