Instalasi rtorrent dan ruTorrent Dengan FreeBSD Dan Apache Web Server

Terbit: Perbarui:
Tags


Rtorrent adalah klien program BitTorrents yang ditulis dalam C++ untuk unix dan menggunakan pustaka ncurses untuk menyediakan antarmuka pengguna tekstual. Rtorrent dapat digunakan dalam sesi terminal (SSH) bersama dengan multiplexer terminal seperti tmux, yang menyediakan solusi bittorrent yang sangat efisien. Dengan menggunakan API kendali jarak jauh XMLRPC, antarmuka pengguna alternatif dapat disediakan oleh klien web seperti ruTorrent, atau klien baris perintah seperti pyrocore dan perintah rtcontrol-nya.

Dalam lingkungan aplikasi Torrent, Rtorrent adalah yang paling stabil dan efisien. Salah satu keunggulan utama Rtorrent adalah konfigurasinya yang sangat fleksibel dan kemampuan otomatisasinya. Selain itu, Rtorrent juga memiliki beberapa fitur yang tidak kalah dari klien uTorrent dan bitTorrent.

Fitur-fitur Utamanya adalah:

  • Gunakan URL atau jalur file untuk menambahkan torrent saat runtime.
  • Hentikan/hapus/lanjutkan torrent.
  • Opsional muat/simpan/hapus torrent secara otomatis di direktori sesi.
  • Dukungan melanjutkan cepat yang aman.
  • Kecepatan unduhan peer dihitung dari pesan HAVE yang masuk.
  • Laporan Hasil unduhan.
Dashboar file unduhan rtorrent
Tampilan Dashboard Proses Unduhan rtorrent

A. Proses Instal rtorrent

Dalam artikel ini kita akan mempelajari teknik instalasi, konfigurasi dan aplikasi Rtorrent di web browser untuk mengunduh file torrent. Untuk menjalankan Rtorrent, kita harus menginstal aplikasi dan repositori pendukungnya, seperti apache24, php, php mod dan scgi mod.

Bailah, sekarang kita mulai menginstal Rtorent dari port FreeBSD. Sistem yang digunakan dalam penulisan artikel ini menggunakan FreeBSD 13 yang digunakan untuk menjalankan Rtorrent. IP LAN server 192.168.9.3.

Install rtorrent
root@router2:~ # cd /usr/ports/net-p2p/rtorrent
root@router2:/usr/ports/net-p2p/rtorrent # make install clean

root@router2:~ # cd /usr/ports/sysutils/screen
root@router2:/usr/ports/sysutils/screen # make install clean

Setelah Torrent berhasil diinstal pada sistem FreeBSD 13, kita lanjutkan dengan menginstal mod php dan mod scgi.

Install mod PHP dan mod SCGI
root@router2:~ # cd /usr/ports/lang/php82
root@router2:/usr/ports/lang/php82 # make install clean
root@router2:~ # cd /usr/ports/www/mod_php82
root@router2:/usr/ports/www/mod_php82 # make install clean
root@router2:~ # cd /usr/ports/www/mod_scgi
root@router2:/usr/ports/www/mod_scgi # make install clean

B. Buat Pengguna dan Direktori rtorrent

Setelah menginstal semua paket yang diperlukan, kita akan membuat user yang akan menjalankan rtorrent. Dalam membuat user tidak ada aturan baku, untuk memudahkan konfigurasi kita cukup membuat user dengan nama rtorrent.

Buat user rtorrent
root@router2:~ # pw useradd rtorrent -s /sbin/nologin

Kemudian buat direktori atau folder untuk meletakkan file Rtorrent.

Buat direktori baru
root@router2:~ # mkdir -p /usr/local/etc/rtorrent/downloads
root@router2:~ # mkdir -p /usr/local/etc/rtorrent/sessions
root@router2:~ # chown -R rtorrent:rtorrent /usr/local/etc/rtorrent/

Perintah skrip chown di atas digunakan untuk memberikan nama pengguna dan grup rtorrent ke folder /usr/local/etc/rtorrent beserta file dan folder di dalamnya. Sementara itu, folder unduhan digunakan untuk menyimpan file yang diunduh.

C. Membuat Skrip Start Up rc.d

Biasanya aplikasi lain selalu membuat skrip rc.d di akhir instalasi, rtorrent di akhir instalasi tidak membuat skrip rc.d, kita harus membuat skrip rc.d untuk menjalankan rtorrent sebagai daemon. Untuk membuatnya, buka folder /local/etc/rc.d dan buat file rtorrent.sh.

Contoh skrip rc.d untuk rtorrent
root@router2:~ # ee /usr/local/etc/rc.d/rtorrent.sh

#!/bin/sh
##
# PROVIDE: rtorrent
# REQUIRE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr

name="rtorrent"
rcvar=`set_rcvar`

load_rc_config $name

: ${rtorrent_enable="NO"}
: ${rtorrent_downloads="/usr/local/etc/rtorrent/downloads"}
: ${rtorrent_sessions="/usr/local/etc/rtorrent/sessions"}
: ${rtorrent_scgi_port=""}
: ${rtorrent_encoding_list="UTF-8;cp1251;koi8-r"}
: ${rtorrent_args=""}
: ${rtorrent_user="rtorrent"}
: ${rtorrent_autoload_dir=""}

command="/usr/local/bin/rtorrent"
screen="/usr/local/bin/screen"

rtorrent_args="-d ${rtorrent_downloads} -s ${rtorrent_sessions} ${rtorrent_args}"

[ -n "${rtorrent_autoload_dir}" ] && rtorrent_args="-O schedule='watch_directory,5,5,load_start=${rtorrent_autoload_dir}' ${rtorrent_args}"
[ -n "${rtorrent_scgi_port}" ] && rtorrent_args="-O scgi_port='${rtorrent_scgi_port}' ${rtorrent_args}"
[ -n "${rtorrent_encoding_list}" ] && rtorrent_args="-O encoding_list='${rtorrent_encoding_list}' ${rtorrent_args}"

start_cmd="echo Starting ${name}.; su -m ${rtorrent_user} -c \"${screen} -A -m -d -S rtorrent ${command} ${rtorrent_args}\""

run_rc_command "$1"

Setelah itu, anda berikan izin pada file rtorrent.sh.

Berikan ijin penggunaan file
root@router2:~ # chmod +x /usr/local/etc/rc.d/rtorrent.sh

Agar skrip dalam file rtorrent.sh dapat dijalankan secara otomatis saat komputer FreeBSD dihidupkan ulang atau di restart, tambahkan skrip berikut ke file rc.conf.

contoh skrip /etc/rc.conf
root@router2:~ # ee /etc/rc.conf
rtorrent_enable="YES"
rtorrent_scgi_port="192.168.9.3:5000"
rtorrent_user="rtorrent"

D. Konfigurasi File httpd.conf (Apache24)

Pada artikel ini kita tidak akan membahas tentang instalasi apache24, kita akan berasumsi bahwa server FreeBSD kita sudah terinstal apache24. Karena Rtorrent berjalan di web browser, maka diperlukan aplikasi web server agar Rtorrent dapat berjalan dengan baik di web browser seperti Yandex, Firefox dan lainnya. Buka file /usr/local/etc/apache24/httpd.conf dan masukkan skrip berikut di akhir file httpd.conf.

Alias /rutorrent/ "/usr/local/www/ruTorrent/"
<Directory "/usr/local/www/ruTorrent/">
 AllowOverride None
    Options None
    Require all granted
</Directory>

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps

LoadModule scgi_module libexec/apache24/mod_scgi.so

Langkah selanjutnya adalah membuat file konfigurasi untuk mod SCGI (otorisasi diperlukan untuk keamanan) di folder /usr/local/etc/apache24/Includes/scgi.conf dan masukkan skrip berikut ini:

contoh skrip /usr/local/etc/apache24/Includes/scgi.conf
root@router2:~ # ee  /usr/local/etc/apache24/Includes/scgi.conf
<IfModule mod_scgi.c>
SCGIMount /RPC2 192.168.9.3:5000
SCGIServerTimeout 60

 <Location /RPC2>
 Allow from all
 ###########Enable only authorized users
 #AuthName "Enter password for torrent"
 #AuthType Basic
 #AuthUserFile /usr/local/www/rutorrent/.htpasswd
 #require valid-user
 SetHandler scgi-handler
 SCGIServer serv0:5000
 SCGIHandler On
 Options -Multiviews
 </Location>

</IfModule>

E. Proses Instal Web Based Control Panel rtorrent

Untuk memasang Panel Kontrol Berbasis Web, kita dapat mengunduhnya di GitHub.

kloning/salin rtorrent dari Github
root@router2:~ # cd /usr/local/www
root@router2:/usr/local/www # git clone https://github.com/Novik/ruTorrent.git

Berikan hak kepemilikan pada berkas /usr/local/www/ruTorrent dan buat berkas log.

Berikan hak kepemilikan file
root@router2:~ # touch /var/log/rutorrent-errors.log
root@router2:~ # chown -R www:www /usr/local/www/ruTorrent/
root@router2:~ # chown -R www:www /var/log/rutorrent-errors.log

Setelah itu, edit berkas atau file /usr/local/www/ruTorrent/conf/config.php.

$log_file = '/var/log/rutorrent-errors.log';
$scgi_port = 5000;
$scgi_host = "192.168.9.3";
$router2 = array(			
		"192.168.9.3",
		"router2",
);

Langkah berikutnya adalah menyalin file /usr/local/share/examples/rtorrent/rtorrent.rc ke /usr/local/etc/rtorrent.

Salin file ke /usr/local/etc/rtorrent
root@router2:~ # cp /usr/local/share/examples/rtorrent/rtorrent.rc /usr/local/etc/rtorrent

Lanjutkan dengan mengedit file /usr/local/etc/rtorrent/rtorrent.rc dengan mengikuti contoh skrip di bawah ini.

#############################################################################
# This is an (old) example resource file for rTorrent.
# Copy to ~/.rtorrent.rc and enable/modify the options as needed.
# Remember to uncomment the options you wish to enable.
#
# See 'rtorrent.rc-example' for a newer, basic configuration.
#
#   Sample: https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template
# Complete: https://rtorrent-docs.readthedocs.io/en/latest/cmd-ref.html
#   Useful: https://rtorrent-docs.readthedocs.io/en/latest/use-cases.html
#   Manual: https://rtorrent-docs.readthedocs.io/en/latest/
#  Convert: https://github.com/rakshasa/rtorrent/wiki/rTorrent-0.9-Comprehensive-Command-list-(WIP)
# Handbook: https://media.readthedocs.org/pdf/rtorrent-docs/latest/rtorrent-docs.pdf
#     File: https://github.com/rakshasa/rtorrent/blob/master/doc/rtorrent.rc
#############################################################################

# Maximum and minimum number of peers to connect to per torrent.
#
#throttle.min_peers.normal.set = 40
#throttle.max_peers.normal.set = 100

# Same as above but for seeding completed torrents.
# "-1" = same as downloading.
#
throttle.min_peers.seed.set = 10
throttle.max_peers.seed.set = 50

# Maximum number of simultaneous uploads per torrent.
#
throttle.max_uploads.set = 15

# Global upload and download rate in KiB.
# "0" for unlimited.
#
#throttle.global_down.max_rate.set_kb = 0
#throttle.global_up.max_rate.set_kb = 0

# Default directory to save the downloaded torrents.
#
directory.default.set = /usr/local/etc/rtorrent/downloads

# Default session directory. Make sure you don't run multiple instance
# of rTorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = /usr/local/etc/rtorrent/sessions

# Watch a directory for new torrents, and stop those that have been
# deleted.
#
#schedule2 = watch_directory,5,5,load.start=./watch/*.torrent

# Close torrents when disk-space is low.
#
#schedule2 = low_diskspace,5,60,close_low_diskspace=100M

# The IP address reported to the tracker.
#
network.local_address.set = 192.168.9.3
#network.local_address.set = rakshasa.no

# The IP address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no

# Port range to use for listening.
#
#network.port_range.set = 6890-6999

# Start opening ports at a random position within the port range.
#
#network.port_random.set = no

# Check hash for finished torrents. Might be useful until the bug is
# fixed that causes lack of disk-space not to be properly reported.
#
#pieces.hash.on_completion.set = no

# Set whether the client should try to connect to UDP trackers.
#
#trackers.use_udp.set = yes

# Alternative calls to bind and IP that should handle dynamic IP's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plain-text to RC4 encryption after the encrypted handshake.
#
# protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = auto

# UDP port to use for DHT.
#
#dht.port.set = 6881

# Enable peer exchange (for torrents not marked private).
#
#protocol.pex.set = yes

# Set download list layout style ("full", "compact").
#
#ui.torrent_list.layout.set = "full"

# Run rTorrent as a daemon, controlled via XMLRPC.
#
#system.daemon.set = false

# SCGI Connectivity (for alternative rtorrent interfaces, XMLRPC)
# Use a IP socket with scgi_port, or a Unix socket with scgi_local.
# schedule can be used to set permissions on the unix socket.
#
network.scgi.open_port = "192.168.9.3:5000"
#network.scgi.open_local = (cat,(session.path),/rpc.sock)
#schedule2 = socket_chmod, 0, 0, "execute.nothrow=chmod,770,(cat,(session.path),/rpc.sock)"

Setelah semuanya selesai, boot ulang komputer FreeBSD.

restart
root@router2:~ # reboot

F. Uji Unduhan File Dari Peramban Web

Setelah komputer FreeBSD kembali normal, sebelum kita melakukan pengujian dengan mengunduh file torrent, kita restart terlebih dahulu apache24 dan rtorrent.

restart
root@router2:~ # service rtorrent.sh restart
root@router2:~ # service apache24 restart

Sekarang mari kita lakukan uji coba dengan mengunduh file torrent, pastikan Anda memiliki file torrent, jika Anda tidak memiliki file torrent, silakan unduh dari https://rutracker.org/.

Dalam penelitian ini, saya memiliki 2 file torrent, yaitu Windows 7 SP1 52in1 (x86 x64) + - Office 2019 by Eagle123 (04.2023) [Ru En] [rutracker-6356940].torrent dan WinRAR 6.22 x86 x64 RePack (& ??Portable) by TryRooM [05.2023, Multi + RUS] [rutracker-6370744].torrent.

Untuk mengunduh kedua file ini, buka peramban web Google Chrome dan pada menu bilah alamat ketik http://192.168.9.3/rutorrent/".

Mengunduh file torrent dengan rtorrent dengan apache24 Web Server memberikan kecepatan dan kestabilan yang sangat baik, setelah melihat hasil unduhan diatas, anda dapat mencobanya dan menjadikan rtorrent pilihan utama untuk mengunduh file dengan ekstensi torrent.