rTorrent ve ruTorrent kurulumu (Nginx, PHP-FPM ile)
Merhaba,
Bugün popüler makalelerimizden rTorrent kurulumu‘nu gelen isteklere göre baştan yazmak istedim.
Bu güncel yolları takip ederek, derlemeye gerek kalmadan, ve de apache yerine nginx kullanarak daha temiz bir kuruluma sahip olacaksınız.
Bunu yazmamdaki temel amaç, rTorrent istemcisinin eski sürümünün artık çok eskimesi, derleyicilerle yamaları kullanarak bile verimli çalışmaması, ve de güncel Raspberry Pi modellerinin (Pi Zero’nun bile) bu işlemi kaldırabilmesi, ve de yeni derlenen sürümlerin hem scgi, hem xmlrpc desteklemesinden dolayı, artık pek derlemeye gerek kalmadığını düşünmem. Ben bu makaleyi yazarken Raspberry Pi Zero kullandım. Aşağıdaki ekran görüntüsü de doğrudan Pi Zero’mdan.
Yapılacaklar
Raspbian dağıtımı üzerine, önce bağımlılık paketleri kurmamız lazım:
sudo apt update sudo apt upgrade sudo apt install nginx curl nano tmux unrar-free git-core libeoip-dev php7.0-geoip php7.0-xmlrpc php7.0-curl php7.0-fpm php7.0-cli git-core sudo apt install rtorrent
Bu komutların arkasından PHP7, rtorrent, nginx ve diğer bağımlılıkları kurmuş oluyoruz.
Şimdi burada user’lara dikkat etmek lazım. Eğer indirme yapacağınız klasör bir samba paylaşımı ise buna da dikkat etmelisiniz. Ben bu yazıda pi kullanıcısı ile çalıştıracağım rtorrent’i. Burada dikkat edilmesi gereken şey, pi kullanıcısının birazdan değineceğim indirme klasörlerine yazma izni olmalı, yoksa indirmeler gerçekleşmeyecek.
Ben klasör olarak /media/disk1/rtorrent/downloads dedim. Makalede de buna göre anlatacağım.
Şimdi bunu dikkate alarak yeni klasörleri oluşturmamız lazım
mkdir /media/disk1/rtorrent mkdir /media/disk1/rtorrent/session mkdir /media/disk1/rtorrent/downloads mkdir /media/disk1/rtorrent/watch
Ayrıca,
chmod g+w /media/disk1/rtorrent
komutu ile /media/disk1/rtorrent klasörüne, klasörün grubu olan herkese yazma izni verebilirsiniz demek (group plus write). Bu sayede bu klasör samba user’ı altında ve pi kullanıcısıysanız, pi kullanıcısını samba grubuna ekleyerek rtorrent’in klasöre dosya yazabilmesine (indirme yapabilmesine) izin verebilirsiniz demek.
bir kullanıcı’yı bir grup’a eklemek için şu komutu kullanabilirsiniz.
usermod -a -G grupadi useradi
Bu grup tanımlamasını yapınca ardından logout ve login, hatta cihazı açıp kapamanız gerekecektir.
Bu komutla örneğin indirme yolu samba grubuna ait bir yol ise (harici disk takıp ağda paylaştınız mesela), pi kullanıcısının çalıştırdığı rtorrent doğrudan indirme yapabilir.
Ayrıca, bu sayede 777 chmod vermektense daha güvenli çalışacaktır.
Şimdi config dosyalarını uygun yerlere koymakla başlamalıyız. nginx.conf ve .rtorrent.rc dosyasını burada bulabilirsiniz: https://gist.github.com/Ardakilic/ccee603f1834c7e91f664a03c959764a
İlk olarak .rtorrent.rc ile başlayalım. Çalışacak kullanıcının home klasöründe .rtorrent.rc (başında nokta var evet) olarak kaydetmeniz lazım:
cd $HOME wget "https://gist.githubusercontent.com/Ardakilic/ccee603f1834c7e91f664a03c959764a/raw/6f7f0999ff555eb290414c1aaedce84ef866fece/.rtorrent.rc" -O .rtorrent.rc
Ardından nano .rtorrent.rc gibi bir komutla düzenleyebilirsiniz. İçindeki şu değerlere dikkat edin:
max_memory_usage
min_peers
max_peers
min_peers_seed
max_peers_seed
directory
session
schedule
dht
peer_exchange
Bunlar istemciden, veya tracker’dan tracker’a değişiyor.
max_memory_usage‘a ben 400M (400 mb) verdim, siz ihtiyacınıza göre artırabilir veya azaltabilirsiniz.
directory için de /media/disk1/rtorrent/downloads dedim örneğimdeki gibi. Aynı şekilde session için de /media/disk1/rtorrent/session dedim. İhtiyacınıza göre buraları güncelleyebilirsiniz.
Şimdi terminal’de
sudo -u kullaniciadi rtorrent
yazınca rtorrent’in açıldığını göreceksiniz. pi kullanıcısıysanız direkt rtorrent yazıp entera basabilirsiniz. Birkaç kere ctrl+q deyince kapanacaktır.
Şimdi de web arayüzünü kurmamız lazım. Bunun için de aşağıdaki yolları izleyeceğiz.
Web arayüzünü ben nginx ile çalıştırıp doğrudan pi kullanıcıs altına koydum, siz /srv veya /var/www gibi bir yola koyabilirsiniz.
cd mkdir web cd web git clone https://github.com/Novik/ruTorrent.git rutorrent
Şimdi web arayüzü için parola yapmamız lazım. Bunu da şöyle hazırlıyoruz:
sudo bash -c "echo 'pi:$(openssl passwd -crypt parola)' > /etc/nginx/.rutorrent_htpasswd"
Bu komuttaki “pi” web arayüzü kullanıcı adı, “parola” da parolası.
Şimdi web user’ı www-data’yı bizim pi grubumuza ekleyeceğiz. Bu sayede rutorrent’e share klasörüne gelen upload’ları ilgili yerlere aktarabilecek (gözat torrent yükle vs.):
sudo usermod -a -G pi www-data
Bu sayede standart nginx www-data kullanıcısını bizim pi grubuna ekledik (çünkü pi klasörü altında rutorrent web arayüzü dosyaları)
Şimdi de sanal terminal tmux için Raspbian’a özel dil tanımlamalarını , eğer raspi config yapamadıysa diye düzelteceğiz:
sudo apt install locales sudo dpkg-reconfigure locales
Çıkan açılır menü fare ile kaydırılabilir, kutucuklar space bar tuşu ile seçilebilir.
Ben EN_GB.UTF8 ve EN_US.UTF8 i seçtim, sonra tab’a basıp OK e fokuslanınca OK’e bastım. Ardından çıkan menüden de default language olarak EN_US.UTF8 seçtim. tr_TR de var, lakin tutarsızlıklar yaşadım zamanında.
Bunun ardından tmux deyince sanak terminal açılacak terminal içinde. Tmux, screen benzeri, daha çok özellik olan, arkada program çalıştırma, ekranı bölme gibi pek çok özellik barındıran bir sanal terminal uygulaması.
Altında yeşil çizgi varsa sanal terminali anlayabilirsiniz.
rtorrent
yazıp enter’a basın
rtorrent açılacak.
Şimdi bunu çalışmalara devam etmek için arkaya atmamız lazım. Ctrl + b, ve elleri tuşlardan çekip d (detach) tuşuna basınca sanal terminalden kopacaksınız. Bu sayede bir daemon gibi rtorrent’i arkaya attık.
tmux ls
diyerek nerede olduğuna bakalım. 0. durumdadır
tmux attach -t 0
diyerek sıfırıncı pencereye attach oluyoruz. birkaç sefer ctrl+q diyerek rtorrent’ten çıkıp, exit diyerek tmux penceresini kapatıyoruz ve normal terminale düşüyoruz.
Şimdi de rutorrent’te ip lerin gözükmesi için aşağıdaki aşamaları uygulamalısınız:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz sudo mkdir -v /usr/share/GeoIP sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
Şimdi web server’ında rutorrent için bir sanal sunucu (vhost) tanımlaması yapalım:
sudo su wget "https://gist.githubusercontent.com/Ardakilic/ccee603f1834c7e91f664a03c959764a/raw/6f7f0999ff555eb290414c1aaedce84ef866fece/nginx.conf" -O /etc/nginx/sites-enabled/rutorrent.conf exit Diyerek hazırladığım nginx konfigürasyonunu indirip atabilirsiniz. Ardından sudo nginx -t
diyerek test edebilirsiniz. Eğer hata yazmıyorsa her şey düzgündür.
Şimdi de web server'ı yeniden başlatarak tanımladığımız konfigürasyonu yayına alalım:
sudo service nginx restart
Son olarak; de her açılışta rtorrent'i açacak komutu hazırlayalım:
sudo nano /etc/rc.local
exit 0 üstüne herhangi bir yere aşağıdaki komutu ekleyin, klasörleri eğer değiştirdiyseniz güncellemeyi unutmayın:
/bin/rm /media/disk1/rtorrent/session/rtorrent.lock -rf /usr/bin/tmux new-session -s rtorrent -d "sudo -u pi rtorrent"
Burada rtorrent lock dosyasını olası crash'lerde sorun çıkmaması adına silip, her açılışta, adı "rtorrent" olan bir session içinde pi kullanıcısı ile rtorrent'i çalıştırdık. Buraları kendinize göre değiştirebilrisiniz.
Son olarak cihazı yeniden başlatın, http://raspberrypiip:90 deyince rutorrent arayüzü sizi karşılayacak, makalede tanımladığımız kullanıcı adı ve parolayı girerek erişebileceksiniz.
Not,
[07.07.2018 22:57:47] rss: Some functionality will be unavailable. Webserver user can't access external program (curl).
Hatasını alıyorsanız, rutorrent'teki bir bug'dan dolayı curl'ün nerede olduğunu öğretmemiz lazım
Bunun için;
terminal'den teyid almamız ve curl nerede onu bilmemiz lazım.
which curl
diyerek bulabiliriz. muhtemelen /usr/bin/curl diyecek yoluna
Ardından
/home/pi/web/rutrrent/conf/config dosyası içinde
$pathToExternals = array( "php" => '', "curl" => '/usr/bin/curl', "gzip" => '', "id" => '', "stat" => '', );
gibi curl yolunu girin.
Şimdi rutorrent'i kapatıp yeniden çalıştırın.
Afiyet olsun 😉