Transmission+WebUI安装及配置

最近把MLDonkey换成了Transmission,虽然没有了Emule的下载(用的很少)和多用户支持(用不到),但是 Transmission的WebUI比Mldonkey要好很多,加上BT支持PEX(Peer Exchange)和DHT(MLDonkey只有CVS版才支持),果断转向Transmission。

平台是CentOS 5.6,Transmission 2.33从源码编译。

首先把能用yum装的用yum装上:

yum -y install gcc gcc-c++ make openssl-devel pkgconfig curl-devel perl-XML-Parser perl-libwww-perl gettext

libevent和intltool因为版本太老需要从源码安装。

libevent需要2.0.10以上的版本:http://monkey.org/~provos/libevent/

intltool很久没更新了,最新的是0.40.6:http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/

编译安装这两个包之后执行下ldconfig,然后添加如下的环境变量,否则编译transmission的时候会提示找不到libevent:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

然后编译Transmisson:

./configure --disable-mac --disable-cli --enable-utp && make && make install

添加用户:

useradd -m transmission

假设把设置放在/home/transmission/config,对应的init脚本:

#!/bin/bash
#
# Startup script for Transmission
#
# Laurent Culioli
# Derived from MLDonkey script
# Modified to work for Transmission on CentOS + compling version, by Tony Zhou
#
# chkconfig: 2345 90 15
# description: Transmission is a bittorrent client
# processname: transmission-daemon

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

RETVAL=0

fullpath=/usr/local/bin/transmission-daemon
DIRECTORY=/home/transmission/config
pid=${DIRECTORY}/transmission-daemon.pid

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[${NETWORKING} = "no"] && exit 0

start() {
 if [-e ${pid}]; then
 echo -n "Transmission is already running..."
 echo
 exit 0
 fi

 echo -n "Starting Transmission: "
 cd $DIRECTORY
 daemon --check transmission --user transmission "$fullpath -g ${DIRECTORY} -x ${pid} > /dev/null 2>&1 &"
 touch /var/lock/subsys/transmission
 echo
}
stop() {
 echo -n "Stopping Transmission:"
 killproc ${fullpath}
 rm -fr /var/lock/subsys/transmission
 rm -fr ${pid}
 echo
}
# See how we were called.
case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 restart|reload)
 stop
 start
 ;;
 status)
 status transmission
 ;;
 *)
 echo -n "Usage: transmission {start|stop|restart|reload|status}
"
 RETVAL=1
esac
exit $RETVAL

给启动脚本执行权限并放到开机启动里面:

chmod 755 /etc/init.d/transmission && chkconfig transmission on

然后启动/停止一次以产生settings.json。

打开/home/transmission/settings.json,把blocklist-enabled的值和rpc- authentication-required的值改为true,rpc-usernamepassword自己设,password在 transmission启动后会自动转码,不会以明文方式储存。rpc-bind-address设为127.0.0.1,这样通过web服务器作为反 向代理来访问,不直接把transmission的端口对外。downloads改为相应的目录。

IP Blocklist我用的是Emule-Fans(http://ed2k.im/ipfilter.dat)的版本,但是不知为何transmission死活无法通过WebUI读取更新,只能手动下载之后解压放到transmission/blocklist里面。

我用的是nginx,反向代理的设置如下:

location /transmission {
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass http://127.0.0.1:9091/transmission;
 proxy_redirect default;
}

transmission可改为任意的值,但是必须与settings.jsonrpc-url的值一致,否则无法访问。

参考:http://www.diyseedbox.com/