class: center, middle ![img33r](wasserfall1.webp) ## Große Dateien lokal verteilen mit # BitTorrent ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - Community-Video-Serie *"Nicht der Weisheit letzter Schluß"* auf
tube.tchncs.de
und
YouTube
mit **beruflichen** oder **privaten Projekten** - Probiert auch mal was Neues aus :-) --- ### BitTorrent-Bestandteile ![img20r](wasserfall3.webp) Clients **tauschen** bereits heruntergeladene **Teile** von Dateien **untereinander** aus, damit der ursprüngliche Sender (Seed) entlastet wird. Hiermit kann auch ein langsames Netzwerk (z.B. mit einem limitierenden Switch) entlastet werden, da zwischen allen teilnehmenden Rechnern die volle Geschwindigkeit erreicht wird. * **Peer** (Client): Ein Rechner, der über ein **BitTorrent-Programm** eine Datei herunterlädt und/oder weiterverteilt. * **Seed**: Ein Peer, der **alle Dateibestandteile besitzt** und diese an andere **verteilt**. * **Tracker** (Server): Ein Server, der eine Liste von Peers und den dort bereitgestellten Dateien pflegt und den Peers zur Verfügung stellt * **.torrent**-Datei: Diese enthält die IP-Adresse (oder einen auflösbaren Namen) des Tracker, bereitgestellte Datei(en), Prüfsummen der Dateiteile und -größen. --- ### Zutaten: .torrent erstellen ![img33r](suppe3.webp) Eine **.torrent-Datei** kann z.B. mit dem Kommandozeilen-BitTorrent-Programm ***buildtorrent*** erstellt werden: ```bash buildtorrent\ -a "http://[Server-IP/-Name]:[Port]/announce"\ [Datei(en)] "[Name].torrent" ``` Paket unter Debian: buildtorrent Hinweis: ***Dieselbe* Port-Nummer** muß später bei der Tracker-Konfiguration angegeben werden. --- ### Zutaten: Webserver ![img33r](suppe1.webp) Die **.torrent-Dateien** können über einen Webserver (z.B. nginx, Apache oder caddy) **bereitgestellt** werden. --- ### Zutaten: Tracker bauen + installieren ![img33r](suppe4.webp) ```bash tempDir='/tmp/opentracker' # Bau-Optionen optionsToEnable="-DWANT_ACCESSLIST_WHITE\ -DWANT_COMPRESSION_GZIP\ -DWANT_RESTRICT_STATS" mkdir -p $tempDir; cd $tempDir # libowfat cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9\ co libowfat cd libowfat; make -j; cd .. ``` ```bash # opentracker git clone git://erdgeist.org/opentracker cd opentracker for opt in `echo $optionsToEnable`; do sed -i "s/^#FEATURES+=$opt$/FEATURES+=$opt/" Makefile done make -j; mv opentracker /usr/bin/; cd /; rm -r $tempDir ``` Projektseite: https://erdgeist.org/arts/software/opentracker --- ### Zutaten: Whitelist erstellen + Tracker starten ![img33r](suppe5.webp) Damit nur von uns authorisierte Torrents mit unseren Tracker verwaltet werden, benötigen wir eine ***Whitelist***, die *info_hash*(es) aller erlaubten .torrent-Dateien enthält. ####Whitelist erstellen ```bash ls *.torrent | xargs -I% btcheck -n -i % |\ grep "Torrent Hash" |\ sed "s/^.* : //" > "[Whitelist-Datei]" ``` Paket unter Debian: btcheck ####Tracker starten ```bash opentracker -p [Port] -w [Whitelist-Datei] ``` --- ### Zutaten: BitTorrent-Programm ![img33r](suppe2.webp) Je nach ***"Rolle"*** unterscheiden sich die sich die Aufrufparameter für das Kommandozeilen-BitTorrent-Programm ***aria2c***. #### Verteiler (Seed) ```bash # Status-Dateien löschen rm *.aria2 # Client starten aria2c --check-integrity=false\ --bt-seed-unverified=true\ --lowest-speed-limit=1024 --disable-ipv6=true\ --max-connection-per-server=3 -d . *.torrent\ --seed-time=999999 --seed-ratio=999999.0 ``` #### Empfänger + Verteiler ```bash aria2c --disable-ipv6=true --allow-overwrite --max-connection-per-server=3\ -d "[Zielverteichnis]" "[HTTP-Adresse zur .torrent-Datei]"\ --seed-time=999999 --seed-ratio=999999.0 ``` Paket unter Debian: aria2 --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de