BitTorrent-Server mit rTorrent

Hier wird die Installation auf einem Linux-Rechner im eigenen Heimnetzwerk (Heimserver) beschrieben.
Die Installation kann aber in gleicher Weise auch auf einem entfernten Rechner erfolgen. Für den Betrieb als Dienst sind allerdings Administratorrechte erforderlich.
Hier wird als Benutzer bit mit "sudo" in die Administratorrolle gewechselt, aber natürlich kann auch als angemeldeter Administrator ohne "sudo" gearbeitet werden.
Als Paket-Manger wird hier "apt-get" verwendet. Gegebenenfalls muss statt apt-get der Paket-manager der eigenen Distribution eingesetzt werden.

Voraussetzungen:

  • Installiertes Linux-System.
  • Zugriff lokal oder über ssh (putty).
  • Auch wenn die Installation lokal erfolgt, sollte ssh am Heimserver laufen, da der Aufruf von rTorrent vermutlich von einem anderen Computer erfolgen soll.
  • Administratorrechte zum Installieren und Erstellen eines Dienstes.
  • Erreichbare Ports. Hier werden die Ports 6890 bis 6899 benutzt. Diese können aber durch beliebige andere ersetzt werden. Die Ports werden bei der Konfiguration festgelegt.
  • Anmeldung als angelegter Benutzer (hier bit).

Durchführung:

1. Installation von rTorrent aus dem Repository

rTorrent sollte sich im Repository jeder Linux-Distribution befinden. Nach einem Update der Quellen kann sofort die Installation durchgeführt werden:

bit@server:~$ sudo apt-get update

bit@server:~$ sudo apt-get install rtorrent

Zusätzlich zum Paket rtorrent wird noch die Installation weiterer Pakete erforderlich sein. Diese werden vorgeschlagen und müssen nur bestätigt werden.

2. Erstellen des Downloadordners und des Verzeichnisses für die Torrent-Files:

bit@server:~$ mkdir Torrent-Downloads Torrent-Files

Die Verzeichnisse sollten entsprechend erreichbar sein (zum Beispiel per FTP), um dort Torrent-Files ablegen und Downloads abholen zu können

3. Konfiguration: Erstellen von .rtorrent.rc

Der Dienst soll unter dem Benutzer bit gestartet werden. Die Konfigurationsdatei ".rtorrent.rc" muss daher auch im Home-Verzeichnis von bit erstellt werden. Hier wird mit dem Editor "nano" eine neue Datei erzeugt:

bit@server:~$ nano .rtorrent.rc

Die folgende Beispiel-Konfiguration enthält nur einige der wichtigsten Optionen. Weitere Optionen können mit "man rtorrent" nachgelesen werden.

directory = ./Torrent-Downloads
download_rate = 0
upload_rate = 300
schedule = watch_directory,5,10,load_start=./Torrent-Files/*.torrent
schedule = low_diskspace,6,60,close_low_diskspace=2000M
port_range = 6890-6899
port_random = yes
use_udp_trackers = yes

Beschreibung der verwendeten Optionen anzeigen ...

"directory =" ... Download-Verzeichnis für die Dateien angegeben - hier "Torrent-Downloads" im aktuellen Verzeichnis (= das Home-Verzeichnis des Benutzers bit).

"download_rate =", "upload_rate =" ... Download- und Upload-Rate in kiB (Kibi-Bytes oder Kilo-binär-Bytes = 1024 Bytes), "0" bedeutet keine Beschränkung. Die Upload-Rate sollte jedenfalls Spielraum für weitere Aktivitäten lassen.

"schedule =" steuert regelmäßige Aktivitäten. "watch_directory" legt fest, welches Verzeichnis in welchen Abständen nach Torrent-Files durchsucht werden soll. Alle 10 Sekunden wird im Verzeichnis "Torrent-Files" nach .torrent-Dateien gesucht. Für jede dort gefundene Datei wird der Download gestartet. Wird die Datei aus dem Verzeichnis gelöscht, endet der Download/Upload. Das Beenden wird aber üblicherweise aus dem Programm-Menü gesteuert (dazu später).

"schedule = low_diskspace..." verhindert das Volllaufen des Datenspeichers. Alle 60 Sekunden soll überprüft werden, ob die verfügbare Kapazität noch höher als 2000 MiB ist. Wird die angegebene Marke unterschritten, endet der Download.

"port_range" legt den verwendeten Port-Bereich fest. Diese Ports müssen vom Internet erreichbar sein, d.h. hinter eine Firewall müssen diese Ports an unseren Server weitergeleitet werden.

"port_random" ... verwende einen zufälligen Port innerhalb des Bereichs.

"use_udp_trackers" erlaubt die Verwendung von UDP-Trackern.

Mit Strg+o und ENTER wird gespeichert und mit Strg+x wird "nano" beendet.

4. Dienst-Datei für den System-Dämon erstellen

Wir erzeugen, wieder mit "nano" eine Datei "rtorrent.service" im für eigene Services vorgesehenen Verzeichnis /etc/systemd/system/.

bit@server:~$ sudo nano /etc/systemd/system/rtorrent.service

Normalerweise wird ein im aktuellen Terminal gestarteter Prozess beim Abmelden beendet. Wir benutzen den Fenstermanager "screen", um unseren Dienst im Hintergrund weiter laufen zu lassen und uns später, auch von einem anderen Terminal, wieder mit dieser screen-Sitzung verbinden zu können.
("screen" ist wahrscheinlich schon installiert. Wenn nicht, lässt sich das mit "sudo apt-get install screen" leicht nachholen)

[Unit]
Description=rTorrent Server
After=network.target

[Service]
User=bit
Type=forking
WorkingDirectory=/home/bit
ExecStart=/usr/bin/screen -dmUS torrent /usr/bin/rtorrent
ExecStop=/usr/bin/screen -S torrent -X quit
Restart=on-failure

[Install]
WantedBy=multi-user.target

Beschreibung der verwendeten Optionen anzeigen ...

Description= ... freie Benennung des Dienstes.

After= ... der Dienst muss nach "network.target", den Netzwerk-Diensten, gestartet werden.

User= ... der Dienst soll als Benutzer "bit" gestartet werden.

Type= ... "forking" bedeutet, dass erst der vom aufgerufenen Programm gestartete Kind-Prozess der eigentliche, überwachte Dienst ist.

WorkingDirectory= ... das Arbeitsverzeichnis des Dienstes.

ExecStart= ... der Programmaufruf - hier "screen". Der Start von "rtorrent" erfolgt als screen-Sitzung.

Verwendete screen-Optionen: -d (detach) und -m in Kombination bewirken, dass eine neue Sitzung erzeugt, aber nicht verbunden wird. Der in der Sitzung gestartete Prozess läuft sofort im Hintergrund.
-S benennt die Sitzung (hier "torrent"), die Option -U legt UTF-8 als Zeichenkodierung fest.

ExecStop= ... das Kommando zum Beenden des Dienstes.

Restart= ... Neustart durchführen, wenn ein Fehler auftritt.

WantedBy= ... der Start erfolgt mit den Multi-User-Diensten (gegen Ende des Bootvorgangs).

Speichern mit Strg+o und ENTER, "nano" beenden mit Strg+x.

Nun wollen wir den Dienst auch erstmals starten:

bit@server:~$ sudo systemctl start rtorrent

Wir überzeugen uns vom Erfolg mit "systemctl status":

bit@server:~$ systemctl status rtorrent

rtorrent.service - rTorrent Server
   Loaded: loaded (/etc/systemd/system/rtorrent.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-10-21 15:28:15 CEST; 5s ago
 Main PID: 6804 (screen)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/rtorrent.service
           ├─6804 /usr/bin/SCREEN -dmUS torrent /usr/bin/rtorrent
           └─6805 /usr/bin/rtorrent

Okt 21 15:28:15 server systemd[1]: Starting rTorrent Server...
Okt 21 15:28:15 server systemd[1]: Started rTorrent Server.

DEBUGGING: Wenn Fehler auftreten, so liegt das mit großer Wahrscheinlichkeit an einer Fehlkonfiguration in .rtorrent.rc. rTorrent läuft auch ohne Konfigurationsdatei, weshalb es zur Fehlersuche sinnvoll ist, zunächst .rtorrent.rc wieder zu löschen und dann Zeile für Zeile hinzuzufügen, jeweils gefolgt von einem neuerlichen Start.

5. Aktivieren des Dienstes

Um rTorrent auch nach dem nächsten Bootvorgang zur Verfügung zu haben, muss unser Dienst zuletzt noch aktiviert werden:

bit@server:~$ sudo systemctl enable rtorrent.service

Created symlink /etc/systemd/system/multi-user.target.wants/rtorrent.service → /etc/systemd/system/rtorrent.service.

FERTIG

Verwendung

Um sich mit der laufenden screen-Session zu verbinden habe ich ein kurzes Skript "rtstart.sh" auf meinem Desktop-Rechner erstellt:

#!/bin/bash

stty stop undef
stty start undef

ssh -t bit@server "screen -rd -S torrent"

Zunächst werden die Steuerbefehle für das Terminal deaktiviert, aus dem screen aufgerufen werden soll. Andernfalls stehen die Steuerbefehle nicht mehr für "rtorrent" zur Verfügung. Danach wird über ssh die Verbindung zum Heimserver hergestellt und mit "screen -rd -S torrent" die Sitzung mit dem Namen "torrent" verbunden.

Die Navigation im Menü erfolgt mit Pfeiltasten. Öffnen eines Menü-Punkts erfolgt mit ENTER, zurück geht es mit BACKSPACE. Strg+S startet einen Download, Strg+D hält ihn an, ein weiteres Strg+D beendet den gestoppten Download und löscht das Torrent-File. Weitere Befehle sind mit "man rtorrent" nachzulesen.

Strg+q beendet rTorrent, aber das wollen wir gewöhnlich nicht tun, denn rTorrent soll als Dienst weiter laufen. Also nur das Fenster (die Terminal-Emulation) schließen!!!

 

↑↑↑ nach oben ↑↑↑

<<< zurück <<<

H O M E

HTML5 Logo