専用サーバー用のWebおよびAndroidコントロールを使用した便利なトレントダウンロード

前文



この記事では、WebインターフェースとAndroidアプリケーションの両方からインターネット制御を使用してユニバーサルトレントダウンロードを作成する方法を説明します。

ここでは、 Debian Wheezyでrtorrent + rutorrent + nginx + php-fpm + transdroidバンドルのセットアップについて説明します。 私はすぐに、なぜ送信されないのかという質問に答えます。第一に、多数の配布/ダウンロードがあり、クラッシュします。第二に、カスタマイズが不十分で、新製品の検索とダウンロードを自動化するプラグインがありません。個人的には好きではありません。

rtorrentの場合、リポジトリからのバージョンはxmlrpc-cを使用せずにコンパイルされたため、自分で再構築する必要があります。公式プロジェクトドキュメントにはapacheの設定オプションのみが含まれています。

システムがどのように動作するかを理解できるように、すべての設定と構成について可能な限りコメントするようにし、愚かなコピーペーストを処理しないようにします。

自分のNASと専用サーバーの所有者が面白いことを願っています。



sudoを使用せずに、ルートからすべてのコマンドを便利に使用できます。

可能な限り高速な構成の再生のために、主にコマンドと説明の写真はほとんどありません。





必要なリポジトリを設定します。



/etc/apt/sources.listに以下を追加します。

#    . deb http://www.deb-multimedia.org stable main non-free #   php  mysql deb http://packages.dotdeb.org wheezy all deb-src http://packages.dotdeb.org wheezy all #  nginx deb http://nginx.org/packages/debian/ wheezy nginx deb-src http://nginx.org/packages/debian/ wheezy nginx
      
      





キーをインストールする

 apt-get update && apt-get install deb-multimedia-keyring wget http://www.dotdeb.org/dotdeb.gpg -O- |apt-key add - gpg --keyserver hkp://keys.gnupg.net --recv-keys ABF5BD827BD9BF62 gpg -a --export 7BD9BF62 | apt-key add -
      
      





私たちは自分自身を把握します。

 apt-get update && apt-get upgrade
      
      





必要なパッケージを入れます(私は何も忘れていないことを望みます)

 apt-get install build-essential autoconf automake libtool libncurses5-dev libncursesw5-dev libcurl4-openssl-dev screen openssl php5 php5-cli curl libcppunit-dev libsigc++-2.0-dev subversion php5-cgi nginx php5-common php5-fpm php5-gd php-pear checkinstall git
      
      





rtorrentが以前リポジトリからシステムにインストールされていた場合は、削除します

 apt-get purge rtorrent libtorrent*
      
      





適切なパッケージを構築する



3つすべてのパッケージをアセンブルするときに、バージョン番号にエラーがある可能性があります。ビルド日を設定することを好みます。アセンブリ中にディレクトリがないことを誓うことができます。

xmlrpc-cをビルドしてインストールする


ソースがあるディレクトリを作成します

 mkdir ~/svn
      
      





入りましょう

 cd ~/svn
      
      





新鮮な並べ替えを取得

 svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced/ xmlrpc-c
      
      





結果のディレクトリに移動します

 cd xmlrpc-c
      
      





収集するもの:

 ./configure --disable-cplusplus make checkinstall -D
      
      





libtorrentをビルドします(アイテムはこの方法で簡単に同じです)


 cd ~/svn git clone https://github.com/rakshasa/libtorrent cd libtorrent ./autogen.sh ./configure make checkinstall -D
      
      





Rtorrentビルド


 cd ~/svn git clone https://github.com/rakshasa/rtorrent cd rtorrent ./autogen.sh ./configure --with-xmlrpc-c make checkinstall -D
      
      





必要なものを接続しますが、将来はrtorrentは起動しません。

 echo "include /usr/local/lib" | tee -a /etc/ld.so.conf ldconfig
      
      





rtorrentを起動しようとします。すべてが正常であれば、起動しますが、構成ファイルの不足をscりCtrl + Qで終了できます。



ユーザーを作成してみましょう(私の例では、これはユーザーp2pです )。そのホームディレクトリはトレントのあるフォルダーになり、グループとしてwww-dataを作成します。

 adduser --home /hdd --shell /bin/bash --ingroup www-data p2p
      
      





それに入りましょう

 su p2p
      
      





rtorrentの構成を作成する

 nano ~/.rtorrent.rc
      
      





このコンテンツで:
#rutorrentおよびtransdroidとの相互接続に必要

scgi_port = 127.0.0.1 ∗ 000



複数のサーバーがある場合、rtorrentが動作するサーバーの#IP

バインド= 192.168.0.2

ip = 192.168.0.2



#トレントごとのピアの最小数

min_peers = 1

#トレントごとのピアの最大数

max_peers = 100

#最大ダウンロード速度。 0-無制限

download_rate = 0

#最大戻り速度。 0-無制限

upload_rate = 10000

#トレントからの配布数を設定します

max_uploads = 50

#ダウンロードを保存するディレクトリ、またはトレントが置かれる場所。

ディレクトリ= / hdd /トレント/ダウンロード/

#セッションを保存する場所

セッション= /hdd/torrent/.session/

#十分な空き領域がない場合は、すべてのダウンロードを停止します。 close_low_diskspaceで設定された停止しきい値=

スケジュール= low_diskspace、5.60、close_low_diskspace = 30000M

#詳細なエラー内容を表示

#rTorrentの開始とruTorrentの開始後の最初の間隔

#されません。 これを回避するには、特別にトレーニングされた行をrTorrent構成ファイルに追加する必要があります。

#rutorrentスクリプトに含まれるphpへのパスとinitplugins.phpへのパス

実行= {sh、-c、/ usr / bin / php /var/www/rutorrent/php/initplugins.php&}

#クライアントがデータ交換のために開くポート(または複数のポート)を設定します

#(ファイアウォールで許可することを忘れないでください)

port_range = 40500-40999

#毎回、範囲外のランダムなポートを使用します。

port_random = yes

#ダウンロード後にトレントハッシュをチェック

check_hash = yes

#セッションを保存

session_save = yes

#暗号化された着信接続を受け入れ、暗号化されていないインストール

#発信接続、エラーを返す場合、暗号化を繰り返し、

#暗号化された接続を確立した後に平文を好む

暗号化= allow_incoming、enable_retry、prefer_plaintext

#udpを使用

use_udp_trackers = yes

#トラックレストレントまたはケースでDHTが動作できるようにします

#すべてのリトラッカーがダウンしている(動作していない)場合。

#「DHT」を完全に無効にするために「disable」という値をとることがあります。

#「オフ」(DHTで開始しない)、「自動」(可能であればDHTをオンにする)、

#または「オン」(DHTを強制)。 デフォルトのDHT値は「オフ」です。

#DHTが適切に機能するには、「セッション」セッションディレクトリを定義する必要があります。



dht =自動



#DHTが使用するUDPポート。



dht_port = 6881

#xmlrpcのエンコードUTF-8を強制します。

#使用時のトラブルシューティングに推奨

#キリル文字の急流名。

#xmlrpcを介して動作するGUIの実際。

encoding_list = utf8



繰り返しますが、 rtorrentを実行しようとします。configのパラメーターが正しくない場合、行番号にエラーが発生し、修正して、もう一度やり直します。すべてが正常であれば、autorunスクリプトを作成します。ルートセッションに。

 wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh mv rtorrentInit.sh /etc/init.d/rtorrent chmod +x /etc/init.d/rtorrent
      
      





起動スクリプトに移動します

 nano /etc/init.d/rtorrent
      
      





user = "p2p"ユーザーに変更します。



始めようとしています

 /etc/init.d/rtorrent start
      
      





すべてが始まったことを確認する

 ps aux | grep rtorrent
      
      





同様の行を見る必要があります

p2p 10443 0.0 0.0 23388 1516? Ss 13:17 0:00 SCREEN -d​​m -S rtorrent

p2p 10449 0.0 0.3 110904 7120 pts / 2 Ssl + 13:17 0:00 rtorrent




rtorrentが完了したら、フロントエンドのセットアップに移りましょう。






nginxの構成。



簡単にするために、必要に応じてコメントとともに構成の内容を投稿します。

 nano /etc/nginx/nginx.conf
      
      





フォームに持ってきます
#nginxの権限を持つユーザー

ユーザーwww-data;

#コア数でインストールすることを推奨

worker_processes 2;

pid /var/run/nginx.pid;

worker_rlimit_nofile 8192;

イベント{

#ワーカープロセスごとのサーバー接続の最大数

worker_connections 1024;

#Linux 2.6以降で使用される効果的な接続処理方法

epollを使用します。

}

http {

##

#基本設定

#FastCGIサーバーのキャッシュを整理します。ramのセクションを使用します

fastcgi_cache_path / tmp / fcgi-cache / levels = 1:2 keys_zone = one:10m;

#sendfileを使用しますが、大きなファイルを指定する必要がある場合は慎重に、

#その後、sendfileは害を及ぼします

sendfile on;

#1つに送信されるセグメントのサイズを制限する

#ロック可能なリターン

sendfile_max_chunk 128k;

#処理されたデータに使用されるリコイルバッファー

postpone_output 1460;

#ドメイン名のハッシュサイズ。

server_names_hash_bucket_size 64;

#ポストリクエストで受信したデータのサイズ

client_max_body_size 15m;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

#エラーが敵にnginxバージョンを伝えない場合

server_tokens off;

/etc/nginx/mime.typesを含めます。

default_type application / octet-stream;



#これは重要なポイントです。config.rtorrent.rcの先頭にscgi_portの行を設定したことを忘れないでください

#ここでサーバー行に同じパラメーターを導入します。 動作する必要があります/ RPC

アップストリームbackendrtorrent {

サーバー127.0.0.1 ∗ 000;

}



##

#ログ設定

access_log /var/log/nginx/access.log;

error_log /var/log/nginx/error.log;

##



#圧縮設定

gzip on;

gzip_disable "msie6";

ssi on;

##



#仮想ドメインを構成する

include /etc/nginx/conf.d/*.conf;

include / etc / nginx / sites-enabled / *;

}



 nano /etc/nginx/sites-enabled/000-default
      
      





フォームに持ってきます
サーバー{

#rutorrentが配置されるフォルダー

root / var / www / rutorrent;

#ログ設定、各仮想ドメインには独自のログがあります

#access_log /var/log/nginx/default-access.log;

access_log off;

error_log /var/log/nginx/default-error.log;



#エンジンのサブディレクトリへの.htaccessブロックアクセスの置き換え

場所/ conf / {

すべてを拒否します。

}

場所/共有/ {

すべてを拒否します。

}

#そして、ここにフロントエンドがrtorrentを制御する/ RPC2があります

#許可が必要です。許可がない場合、だれでもロッキングチェアを制御できます。

場所/ RPC2 {

auth_basic "プライベートゾーン。";

auth_basic_user_file /var/www/rutorrent/.htpasswd;

include / etc / nginx / scgi_params;

scgi_pass backendrtorrent;

}



#検証のためにすべてのテンプレートを接続します。実際のホストでは、必要なもののみを使用します。

include / etc / nginx / templates / default;

include / etc / nginx / templates / php;

}



 nano /etc/nginx/templates/default
      
      





フォームに持ってきます
#すべてのドメインに共通の一般的な設定(エキゾチックなドメインが必要ない場合)

##

index index.html index.php;



場所/ {

#rutorrentへの基本HTTP認証パスワード保護アクセス

auth_basic "プライベートゾーン。";

#auth_basic on;

auth_basic_user_file /var/www/rutorrent/.htpasswd;

}



#.htaccessファイルと.htpasswordファイルへのアクセスを閉じ、あまりログを記録しないでください。

location = /favicon.ico {access_log off; log_not_found off; }

location = /robots.txt {すべて許可; access_log off; log_not_found off; }

location = /apple-touch-icon.png {access_log off; log_not_found off; }

location = /apple-touch-icon-precomposed.png {access_log off; log_not_found off; }

場所〜/ \。 {すべて拒否; access_log off; log_not_found off; }



#スクリプトキディの生活を複雑にし、人気のあるUAスキャナーをブロックします

if($ http_user_agent〜*(nmap | nikto | wikto | sf | sqlmap | bsqlbf | w3af | acunetix | havij | appscan)){

403を返します。

}



 nano /etc/nginx/templates/php
      
      





フォームに持ってきます
#PHPスクリプトPHP-FPMの処理を渡します

場所〜\ .php $ {

try_files $ uri = 404;

#PHP-FPMはUnixソケットでリッスンします。この設定は一致する必要があります

#ファイル/etc/php5/fpm/pool.d/www.confのlisten = /tmp/wwwpool.sock

fastcgi_pass unix:/tmp/wwwpool.sock;

fastcgi_buffers 8 256k;

fastcgi_buffer_size 128k;

fastcgi_intercept_errors on;

#キャッシュゾーン1を使用

fastcgi_cache one;

#3回使用した後にページをキャッシュに入れる。 数が少ないと不可解なグリッチが発生しました

#登録フォーム

fastcgi_cache_min_uses 3;

#リストされた回答をキャッシュする

fastcgi_cache_valid 200 301 302 304 5m;

#キャッシュキーの形式-nginxはこのキーの正しいページを見つけます

fastcgi_cache_key "$ request_method | $ host | $ request_uri";

#このオプションを使用しない場合、フォーラムでは誰もがフォーラムに参加した最初の人の名前の下に座ります

fastcgi_hide_header "Set-Cookie";

#このリクエストにより、nginxは通過するすべてのものをキャッシュします

fastcgi_ignore_headers "Cache-Control" "Expires";

fastcgi_index index.php;

#fastcgi_intercept_errors on; #テスト期間のみ

#/ etc / nginx / fastcgi_paramのオプションを含める

fastcgi_paramsを含めます。

#php-fpmに渡されるスクリプトへのパス

fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

fastcgi_ignore_client_abort off;

}



キャッシング設定を無効にするか、あなたの裁量で他のパラメータを使用することができます、私は標準的なものを取りました。

また、 / etc / php5 / fpm / php.iniおよび/etc/php5/cli/php.iniファイルでphp設定でタイムゾーンを設定することをお勧めします

ゾーンで変数を設定しましょう。私の場合、これはキエフ時間です。

 date.timezone = "Europe/Kiev"
      
      





さあ、急流エンジンをやってみましょう


 cd /var/www/ wget https://rutorrent.googlecode.com/files/rutorrent-3.5.tar.gz tar -xzf rutorrent-3.5.tar.gz rm rutorrent-3.5.tar.gz cd rutorrent
      
      





サイトからプラグインを1つずつダウンロードできます

一度にすべてをダウンロードし、不要なものを削除することを好みます(プラグインの説明はこちら

 rmdir plugins wget https://rutorrent.googlecode.com/files/plugins-3.5.tar.gz tar -xzf plugins-3.5.tar.gz rm plugins-3.5.tar.gz
      
      





エンジンの設定を少し調整します。

ファイル内

 nano conf/config.php
      
      





変数をトレントのあるファイルのルートに変更します。

 $topDirectory = '/hdd/torrent/';
      
      





エンジンにアクセスするためのユーザー名とパスワードを生成します。Apache配信からhtpasswdを使用できます。

持っていないので、即興的な手段を生成します:

 echo -e "your-username:`perl -le 'print crypt("your-password","salt")'`" > /var/www/rutorrent/.htpasswd
      
      





最後にユーザー名にコロンを残すことを忘れないでください。



ディレクトリの所有者を私たちに変更します

 chown -R p2p:www-data /var/www/rutorrent
      
      





nginxとphpを再起動します

 service nginx restart service php5-fpm restart
      
      





ブラウザで、サーバーのIPを入力し、以前に生成されたユーザー名とパスワードを入力して、ロッキングチェアのコントロールパネルに入ります。






Webの銃口は完成しました。公式Webサイトには機能の微調整と説明があります。繰り返しはしませんが、Androidを使用した便利な管理に進みます。




携帯電話やタブレットにダウンロードします

http://transdroid.org/latest

http://transdroid.org/latest-search

インストールして実行します。



「新しいサーバーを追加」を選択します

名前:から選択する任意

サーバータイプ: rTorrent

IPアドレスまたはドメイン名:サーバーのIPまたはドメイン

ポート: 80

使用許可:チェック

適切なフィールドにユーザー名とパスワードを示します。

フォルダー:変更なし

追加の設定で、好みにチェックマークを付けます

オペレーティングシステム: Linux

FTPアドレス: p2p :パスワード@ ip_server / torrent / download / (ftpフォルダーへのアクセスを指定します。以下のftpの設定について)

sslを使用しなかったため、残りは変更されていません。



その後、サーバーにアクセスして現在のダウンロードを確認し、残りのプログラム設定を好みに合わせて確認できます。






FTPサーバーを非常に簡単に配置します。



 apt-get install proftpd
      
      





標準構成の/etc/proftpd/proftpd.confで次のように変更します。

 ServerName "My torrent server"  DefaultRoot ~ #        RootLogin off #     root #      IP  (    ) UseReverseDNS off PassivePorts 40000 40499 #     rtorrent
      
      





このトピックに関するさまざまな記事で、より詳細な調整を行うことができます。この記事のフレームワーク内では、このような最小限で十分です。

 service proftpd restart
      
      








サンバを入れて



ローカルアクセスの利便性のためにも、非常に簡単に必要です。

 apt-get install samba
      
      





config /etc/samba/smb.confを次の形式にします:

最小構成
; グローバルサーバー設定

[グローバル]

; 一般的なサーバー設定

; ネットワーク環境で見られるコンピューター名

netbios名=トレントボックス

サーバー文字列=

; 顧客ワーキンググループ

ワークグループ= WORKGROUP

バージョン= 5.0を発表

ソケットオプション= TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF = 8192 SO_SNDBUF = 8192

passdbバックエンド= tdbsam

セキュリティ=ユーザー

nullパスワード= true

; ユーザー名エイリアスのファイル

ユーザー名マップ= / etc / samba / smbusers

名前解決順序=ホストがbcastを獲得

サポートを獲得=はい

; ログ

ログファイル= /var/log/samba/log.%m

syslog = 0

syslogのみ=いいえ

; 指定しない場合、リッスンするインターフェイスへのバインドの構成は、すべてのインターフェイスでリッスンします

インターフェイス= eth0

; バインドインターフェイスのみ= true

; ハードディスクボール

; 顧客から見た名前のボール

[急流]

; 共有ディスクへのパス

パス= / hdd /

; 表示できますか

閲覧可能=はい

読み取り専用=いいえ

ゲストOK =いいえ

マスクの作成= 0644

ディレクトリマスク= 0755



ユーザーのパスワードを生成します

 smbpasswd -a p2p
      
      





ユーザーをオンにする

 smbpasswd -e p2p
      
      





したがって、結果として、豊富な管理機能、smbおよびftpを介したダウンロードファイルへのアクセスを備えた、機能するtorrentサーバーを入手しました。 接続されたプロジェクトのうち、 KorP habrayuzerのtorrentmonitorをキャンセルしたいと思います。

ご清聴ありがとうございました。



All Articles