トップ   編集 編集(GUI) 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

BitTorrentClientのサーバ化

Last-modified: 2015-01-25 (日) 02:57:02 (1547d)
Top / BitTorrentClientのサーバ化

BitTorrentClient?のサーバ化…と言っても、本当にサーバ化するんじゃなくて、

クライアントをLinuxサーバに入れて、任意にDL可能にしたいという話。

経緯

今まで、bittorrentはWindowsのクライアントソフトを使用していた。

しかし、bittorrentのクライアントソフトを起動すると、

数Mbpsのトラフィックにも関わらず、セッション数を膨大に使うのか、

ネットワークのパフォーマンスが「NICが故障したんじゃないか?」と思うくらい低下する。

そこで、Linuxサーバ上に同様のものが出来ないかと考えた。

出来ればブラウザベースで弄れると遠隔しやすい。

候補リストの選定

候補として最初考えたのは、下記のソフト。

  • rTorrent

コマンドベースでのクライアントソフト。

手軽ではあるのだが、本当にコマンドレベルなので

ブラウザで制御できないので非採用(インストールはしてある)。

  • TorrentFlux?

ブラウザベースでのbittorrentクライアントソフトだが、

LAMP環境を求めるようで、MySQLを要するのは正直厳しい環境なので非採用。

transmission

もっと軽くて、手軽にWebGUIとして動くものは無いか?

そこで、悩んだ末に頭に浮かんだのはtransmission。

これはUbuntuにも標準bittorrentクライアントとしてラインナップされているソフト。

比較的軽くDBも使用しない。WebGUIも備えている。

ただ、難点はXクライアントソフトという事。

これをXの入っていないサーバにインストールするのに、

少々手間が掛かったがなんとか動いたのでご参考までに。

無論、下記は自己責任で。(CentOS5)

transmissionインストール

まず、transmission-1.34-1.el5.src.rpm を入手する。

このパッケージ名はRPM Searchから探し出した。詳細はググれば出てくるはず。

DLしてパッケージを作成する。

# rpmbuild --rebuild transmission-1.34-1.el5.src.rpm

インストールする。

※依存関係は別途インストールする。dag登録されていれば補える。

# cd /usr/src/redhat/RPMS/i386/
# rpm -ivh transmission-1.34-1.i386.rpm

transmission用にtransmissionユーザを作成する。

# useradd transmission
# passwd transmission

transmissionの起動

これで起動してくれれば良いのだが、当然Xクライアントなのでエラーが出る。

# su - transmission
$ transmission
** Message: cannot open display:

これを回避するには、Xvfbというソフトを使う。

Xvfbのインストール(念の為xauthも入れる)

Xvfbは仮想フレームバッファの環境を構築する為、本物のXが無くても動作が可能になる。

簡単に言えば、Xが動いているように見せかけるものと思えばよい。

# yum install xorg-x11-server-Xvfb
# yum install xorg-x11-xauth

Xvfbの起動

# Xvfb :1 -screen 0 1024x765x16 & > /dev/null 2>&1

これでXの環境が整ったので、transmissionを起動させる。

$ transmission --display=0:1
No fonts found; this probably means that the fontconfig
library is not correctly configured. You may need to
edit the fonts.conf configuration file. More information 
about fontconfig can be found in the fontconfig(3) manual
page and on http://fontconfig.org

なにやらメッセージが出て動かない。

フォント環境調整

調べた所、指定されたフォントが足りないというメッセージとの事。

フォントが正しく登録されていないのか?と思い、再登録コマンドを実行した。

# fc-cache -v
/usr/share/fonts: skipping, 0 fonts, 0 dirs
/usr/share/X11/fonts/Type1: skipping, 0 fonts, 0 dirs
/usr/share/X11/fonts/OTF: skipping, 0 fonts, 0 dirs
/root/.fonts: skipping, no such directory
/var/cache/fontconfig: cleaning cache directory
/root/.fontconfig: not cleaning unwritable cache directory
fc-cache: succeeded

フォントが1つも入っていないようだ。 最低限動けばよいので、一つフォントをインストールする。

# yum install xorg-x11-fonts-Type1.noarch
# fc-cache -v
/usr/share/fonts: skipping, 0 fonts, 0 dirs
/usr/share/X11/fonts/Type1: skipping, 29 fonts, 0 dirs
/usr/share/X11/fonts/OTF: skipping, 0 fonts, 0 dirs
/root/.fonts: skipping, no such directory
/var/cache/fontconfig: cleaning cache directory
/root/.fontconfig: not cleaning unwritable cache directory
fc-cache: succeeded

これで登録された。

改めて起動を確認する。

$ transmission --display=0:1

こんどはエラーメッセージ無く起動したようだ。

transmission設定

これで、デフォルトのコンフィグファイルが吐き出される。

しかし、Xクライアントソフトな為、この状態では設定変更出来ない。

一度transmissionを終了し、コンフィグファイルを手動で変更する。

自分は /www/BitTorrent? というディレクトリを作成し、そこに補完するようにした。

又、rpc-access-control-listの「192.168.x.0\/24」は、各自の環境に合わせて設定する事。

vi ~/.config/transmission/settings.json
   "download-dir": "\/home\/transmission",
     ↓
   "download-dir": "\/www\/BitTorrent",
   "open-dialog-dir": "\/home\/transmission",
     ↓
   "open-dialog-dir": "\/www\/BitTorrent",
   "rpc-access-control-list": "+127.0.0.1",
     ↓
   "rpc-access-control-list": "+127.0.0.1, +192.168.x.0\/24",
    "rpc-enabled": 0,
     ↓
    "rpc-enabled": 1,

open-dialog-dirの設定は念の為のレベル。これで再度transmissionを起動する。

$ transmission --display=0:1

これでブラウザでアクセス可能になっているはずなので確認する。

http://*************:9091/transmission/web/

後は、DLしたtorrentファイルを、transmissionに読み込ませればOK。

もう一つの設定方法

この設定をGUIを起動せずに、項目の確認はさすがに出来なかった。

Windows側にXサーバを入れて、そこで動作させて設定も可能。実際にはXmingを使う。

この方法で設定ファイルをdiffってメモし、それを手動編集でも大丈夫が確認した。

  1. C:\Program Files\Xming\X0.hosts に、対象サーバのIPを書く(これ忘れがち)
  2. Xmingを複数Windowモードのステルスで起動させる
  3. 該当サーバにログインしexport設定をする
    $ export DISPLAY=192.168.x.x:0
  4. LANGを付けて起動
    $ LANG=C transmission

これで、Windows側に英語モードで画面が出力されるはず。

後は任意の設定をして一度終了。その後上に書いてある仮想バッファ経由で起動すれば設定済みで起動される。

自動起動設定

まず、Xvfbのサービス化を試みた。

いくつかググったのを参考に、自分なりに変更加えたのが下記のファイル。

#!/bin/bash
#
# chkconfig: - 91 35
# description: Xxfb
#

# Source function library.
. /etc/init.d/functions

prog=$"Xvfb"

# Xvfb program
XVFB=/usr/bin/Xvfb
#STATUS=":1 -screen 0 1024x1024x16"
STATUS=":1 -screen 0 800x600x8"
pidf=/var/run/xvfb.pid

start() {
        if [ -e $pidf ];
        then
                action $"Starting $prog: " /bin/false
                echo "$prog はすでに起動しています"
        else
                action $"Starting $prog: " /bin/true
                $XVFB $STATUS > /dev/null 2>&1 &
                echo $! > $pidf
        fi
}

stop() {
        if [ -e $pidf ];
        then
                action $"Stopping $prog: " /bin/true
                pid=`cat $pidf`
                test ! -z $pid && kill $pid && rm -f $pidf
        else
                action $"Stopping $prog: " /bin/false
                echo "$prog が起動していません"
        fi
}

status() {
        if [ -e $pidf ];
        then
                echo "$prog (pid `cat $pidf`) を実行中..."
        else
                echo "$prog が起動していません"
        fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        sleep 1
        start
        ;;
  status)
        status
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

独自サービスファイルを実行可能にする

# chmod 755 /etc/init.d/xvfb
# chkconfig --add xvfb
# chkconfig --level 3 xvfb on
# chkconfig --list xvfb
xvfb            0:off   1:off   2:off   3:on    4:off   5:off   6:off

最後に rc.local に下記内容を記述して自動起動させるようにする。

su - transmission -c "transmission --display=0:1" & > /dev/null 2>&1