간단하게 토렌트 트래커 서버 구축해보기 (C# .Net Core 기반)

자유게시판

간단하게 토렌트 트래커 서버 구축해보기 (C# .Net Core 기반)

제가 직접 구현해본 트래커 서버입니다. (C# .Net Core 3.1 로 작성되었습니다)

일반 BitTorrent(HTTP, UDP) 기반 트래커 프로토콜( https://www.bittorrent.com/ko ),

웹브라우저용 WebTorrent(Websocket) 기반 트래커 프로토콜( https://webtorrent.io )

모두 지원합니다.





아래는 깃헙 소스코드 링크 입니다. (C#이 가능하신 개발자분들은 얼마든지 수정하셔서 사용하셔도 됩니다)

https://github.com/uploaderaruku/Hybrid_TorrentTracker-ServerApplication




나름 부하테스트도 다 거쳤고, 버그등도 어느정도 수정된 상황입니다.

메모리 누수문제나 도중에 꺼지거나 하는 문제 없이

잘 동작하는것을 확인하였습니다.

(Windows10, Linux Ubuntu 20.04 에서 동작 확인)




혹시나 토렌트 트래커 서버 구축에 관심 있으신 분들은 참고해주시면 좋을거 같아요.




별도의 DB (Mysql, MariaDB등의 외부 DB) 는 사용하지 않고, 오로지 컴퓨터의 메모리 상에

모든 토렌트의 정보를 저장하므로, 별도의 DB설정이 필요하지 않습니다.

5만개 토렌트 파일기준, 메모리(Ram) 사용량 400~500MB정도 먹는거 같습니다.


바로 실행해보고 싶으신 분들은 아래 링크로 들어가셔서 Assets에 실행파일 받으시면 됩니다. (windows, linux용)

https://github.com/uploaderaruku/Hybrid_TorrentTracker-ServerApplication/releases/tag/release-1.0.5







윈도우라면 그냥

Torrent.Tracker.Server.exe 받으셔서 실행하시면 끗,




리눅스라면

Torrent.Tracker.Server_linux_x64, startTorrentTrackerServer_linux.sh 이거 두개 받으시고나서

해당 경로에서

' sudo sh startTorrentTrackerServer_linux.sh start '

라는 명령어를 실행하거나


또는 Torrent.Tracker.Server_linux_x64 이것만 받으셔서


' sudo chmod +x Torrent.Tracker.Server_linux_x64 && sudo ./Torrent.Tracker.Server_linux_x64 '

라는 명령어를 실행하시면 실행됩니다.







트래커 서버 기본 바인딩 포트는

default bind http(tcp) port = 5000,

default bind udp port = 8081,

default bind websocket(tcp) port = 8081

으로 설정되어있고,




일단 트래커 서버를 한번 실행하면 serverConfig.json 라는 설정파일이 생기는데,

이 설정파일을 통해 포트번호를 변경하실 수 있습니다.




옵션은 다음과 같습니다.

{

"Tracker_Server_WorkerThreadCount": 0, //굴릴 스레드 수 (0이라면 기본값, cpu core수 x 2)

"Web_And_Http_Tracker_Listen_PORT_NUM": 5000, //웹서버 및 HTTP기반 트래커서버 PORT

"UDP_Tracker_Listen_PORT_NUM": 8081, //UDP기반 트래커서버 PORT

"Websocket_Tracker_Listen_PORT_NUM": 8081, //Websocket기반 트래커서버 PORT

"Tracker_MaxNumWant": 100, //최대 피어 요청수

"Tracker_Interval": 180, //트래커 요청 간격 (초). 이 수치가 낮을수록 더 자주 패킷이 왔다갔다하므로 서버 부하 상승

"WebTracker_Interval": 60, //웹트래커 요청 간격 (초). 이 수치가 낮을수록 더 자주 패킷이 왔다갔다하므로 서버 부하 상승

"WebTracker_Min_Interval": 30, //웹트래커 최소 요청 간격 (초).

"TelegramBot_Enable": false, //서버 상태를 주기적으로 보고하는 텔레그램 봇 활용여부

"TelegramBot_API_Key": "", //텔레그램봇 API 키 (bot 포함된 문자열)

"TelegramBot_TargetChatID": "", //텔레그램봇의 메시지를 받을 채팅방 ID

"TelegramBot_disable_web_page_preview": true //true로 고정

}





기본설정기준

서버 실행하시고, 토렌트 클라이언트(uTorrent, Transmission등)에 아래와 같은 형태의 주소를 추가하시면 됩니다.

단, 외부에서도 접속할 경우, localhost부분은 적절히 외부 도메인 주소로 변경하실 필요가 있고

port부분도 공유기를 사용하신다면 적절한 포트포워딩 설정이 필요합니다.

http://localhost:5000/announce

udp://localhost:8081/announce

ws://localhost:8081/ws/announce

 

 

트래커 서버 관련 간단한 통계정보를 볼 수 있는 Statistics Page 링크 주소입니다.

http://localhost:5000/stats




위와 같은 형태의 정보를 확인 할수 있습니다.





나름 멀티스레드도 지원하고 cpu코어를 다 갈굴수 있게 만들어진, 고성능(?) 지향 트래커 서버이므로

뭔가 기존에 운영하시던 트래커 서버가 느리다거나 하시는 분들은 유용할수도 있을거 같네요
Facebook Twitter GooglePlus KakaoStory NaverBand 신고

Author

Lv.1 1 아루쿠2  실버(2등급)
50 (5%)

등록된 서명이 없습니다.

 
2 Comments
1 MushroomKim  
트래커 서버를 따로 구축하는 이유가 있나요?
26 장곡  
이 방면에 대해 무식해서 도대체 뭔 이야기인지 모르겠네요.
그냥 구하는 대로 봐야지요.