文章

在debian7上面安装Transmission和Web控制面板。

  编辑于:2018-12-16
文章目录

最近入了一个大盘鸡,可以用来BT或者PT,因此这这里记录一下安装Transmission和它的Web控制面板的过程。

Transmission介绍

Transmission是一个强大的BitTorrent开源客户端,实现了BT协议中描述的大多数功能。目前,在它的官方网站上提供了多个版本可以下载,包括:Mac、GTK+、QT版本,还有Daemon版本。
Transmission支持DHT、Magnet Link、uTP以及PEX等特性。尤其是支持Magnet Link磁力链接下载十分重要,因为目前网上很多资源都是采用这种方式来分享的,而不是传统的.torrent文件。
在debian的发行版中,Transmission软件包下面包含多个套件,这些套件的名字很容易搞混淆,它们分别是:

  • transmission-gtk: GTK+界面的Transmission BT客户端。
    transmission-qt: QT界面的Transmission BT客户端。
    transmission-cli: 命令行界面的Transmission BT客户端,与QT、GTK+版本功能一样,是命令行下一个完备的BT客户端。
    transmission-daemon: 是一个Transmission的后台守护程序,本身不具备操作指令,只能通过Web客户端或者transmission-remote-cli来进行控制。这个程序特别适合安装在服务器上或者嵌入式系统中,以及一些没有显示器的设备上。
    transmission-remote-cli: 用来控制transmission-daemon的命令套件,本身不具备下载BT的功能,只能够配合daemon使用。
    这些套件不必都安装上,根据我的需求,只需要安装transmission-daemon即可。接下来讲详细介绍daemon的安装和配置。

安装Transmission

在debian中,打开终端,输入以下命令安装:

sudo apt-get install transmission-daemon

安装过程中会顺带把transmission-cli也安装上,安装完毕后系统会多出如下一些命令行工具

  • transmission-cli: 独立的命令行客户端。
    transmission-create: 用来建立.torrent种子文件的命令行工具。
    transmission-daemon: 后台守护程序。
    transmission-edit: 用来修改.torrent种子文件的announce URL。
    transmission-remote: 控制daemon的程序。
    transmission-show:查看.torrent文件的信息。
    安装好后,Transmission-daemon有一些默认设置(参考链接)。

默认用户

默认创建一个用户来专门运行transmission-daemon,用户名为:debian-transmission。
注意: 如果使用另外一个用户来运行transmission-daemon的话,会在该用户的目录下,创建一个.config/transmission-daemon的文件夹,在这个文件夹里有单独的settings.json配置文件来配置这个用户对应的daemon进程,下载目录也会变为$HOME/Download。

按照默认用户和默认配置目录来正确启动和停止transmission-daemon的方式如下。我也将采用这种方式。

# 启动
sudo service transmission-daemon start
# 停止
sudo service transmission-daemon stop

Transmission的配置

配置主要是通过修改/var/lib/transmission-daemon/info/settings.json文件中的参数来实现的。
注意:在编辑Transmission的配置文件的时候,需要先关闭daemon进程,否则编辑的参数将会被恢复到原来的状态。

配置RPC

最关键的就是要配置RPC,因为无论是Web界面还是CLI都是通过RPC协议和daemon来进行交互的。在settings.json中与RPC相关的参数有以下几个:

  • rpc-authentication-required: Boolean (default = false)
  • rpc-bind-address: String (default = “0.0.0.0”) Where to listen for RPC connections
  • rpc-enabled: Boolean (default = true)
  • rpc-password: String
  • rpc-port: Number (default = 9091)
  • rpc-url: String (default = /transmission/. Added in v2.2)
  • rpc-username: String
  • rpc-whitelist: String (Comma-delimited list of IP addresses. Wildcards allowed using ‘‘. Example: “127.0.0.,192.168..“, Default: “127.0.0.1” )
  • rpc-whitelist-enabled: Boolean (default = true)

打开文件/var/lib/transmission-daemon/info/settings.json,修改配置参数如下:

{
......
"rpc-authentication-required": true
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "123456",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "*",
"rpc-whitelist-enabled": true,
......
}

这里将用户名设置为了transmission,密码设置为了123456,whitelist设置成了”*”,表示任何IP都可以通过RPC协议访问这个daemon。需要注意的是password设置成了明文。当启动daemon之后,daemon会自动检测密码设置。如果发现密码配置被修改了,daemon会自动计算修改后的密码的HASH值,并用这个HASH值替换掉配置文件中的明文密码,这样会更安全。

输入service transmission-daemon start启动程序后,打开settings.json,会看到rpc-password一项被改为了HASH值。

"rpc-password": "{5f4bd5498bddd9aa2ad8f4d475dcebe23e9d8c8bsorspnUE",

修改下载目录

在使用的过程中可能需要修改下载的目录。

#创建欲存放下载文件的目录
mkdir /root/downloads
#更改文件夹所有权
sudo chgrp debian-transmission /root/downloads
#授予写入权限,如果还是失败就修改权限为777
chmod 770 /root/downloads
#停止transmission
sudo service transmission-daemon stop
#修改配置文件
vi /var/lib/transmission-daemon/info/settings.json
# "download-dir": "/root/downloads",
# "umask": 2, 
#启动 transmission
sudo service transmission-daemon start

注意:修改后可能还是不能使用新的储存位置,可以重启服务器。
注意:可能你这次修改成功了下次还是没有权限修改下载目录,来一个一劳永逸的办法。
使用ROOT权限运行transmission-daemon(不推荐),如果使用了下面的方法,则无需使用上面的方法。

停止tranmissions 
service transmission-daemon stop
修改 /etc/init.d/transmission-daemon
将其中的 USER=debian-transmission
修改为 USER=root
启动transmission
service transmission-daemon start

虽然本文是基于debian7的,但是也介绍一下在debian8上如何使用ROOT权限运行transmission-daemon。
修改/etc/systemd/system/multi-user.target.wants/transmission-daemon.service
将其中的debian-transmission修改为root然后重启transmission即可。

配置其它参数

settings.json里面还有很多参数可以配置,包括上传/下载速度的限制、DHT的配置、端口设置等等,详细的参数解释可以参考官网的配置说明,这里不再赘述。

使用Web界面控制Transmission daemon

默认web控制

经过上述配置后,我们就可以通过Web界面来访问和控制Transmission daemon了。在浏览器里面输入以下地址

http://你的IP:9091/transmission/web/

浏览器提示你输入刚才配置的用户名和密码,就可以成功登陆Web管理界面。界面和桌面版的GUI程序有点像,操作起来很方便。

transmission-web-control

默认的Web操作起来有点不顺手,这里介绍一个开源的Web管理面板。
项目地址:https://github.com/ronggang/transmission-web-control

关于

本项目主要目的是想加强Transmission Web的操作能力,本项目原本在Google Code托管,现迁移至GitHub。 本项目设计之初仅针对PT站,因此增加了 Tracker 服务器分组及状态,但这不并适用于普通BT种子。

需求

  • Transmission 2.40 及以上版本(RPC版本:14及以上)
    Transmission 2.40 and above (RPC version: 14 and above)

安装

#进入Transmission的Web控制界面文件存放目录/usr/share/transmission/web
cd /usr/share/transmission/web
#创建备份文件夹,保存默认的文件,可以不保存,直接删除,如果直接删除则使用 rm *
mkdir backup
#移动原文件
mv * backup
#下载transmission-web-control
wget https://github.com/ronggang/transmission-web-control/archive/v1.6.0-beta2.zip
#解压
unzip v1.6.0-beta2.zip
cd transmission-web-control-1.6.0-beta2/src
mv * ../../

此时打开

http://你的IP:9091/transmission/web/

就已经进入transmission-web-control的控制界面了。

添加SSL(启用https)

有的时候可能会想对Transmission的web管理面板启用SSL。
采用NGINX反代的方法来启用SSL。
这里可以采用自签,或者LET'S的免费证书,当然其它受支持的证书也是可以的。
贴出配置文件。

server
    {
        listen 80;
        #listen [::]:80;
        server_name 域名或IP;
	return 302 https://域名或IP$request_uri;
   }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name 域名或IP ;
        ssl on;
        ssl_certificate /证书存放完整路径;
        ssl_certificate_key /密钥存放完整路径;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048    提示不存在dhparam.pem则,执行此命令,如执行此命令提示文件或者目录不存在则执行 mkdir -p /usr/local/nginx/conf/ssl
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
	access_log off;

        location / {
        proxy_read_timeout 300;
        proxy_pass_header  X-Transmission-Session-Id;
        proxy_set_header   X-Forwarded-Host $host;
        proxy_set_header   X-Forwarded-Server $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       
        # if you changed the port number for transmission daemon, then adjust the
        # folllowing line
        proxy_pass         http://127.0.0.1:9091/transmission/web/;
    }
       
        # Also Transmission specific
    location /rpc {
        proxy_pass         http://127.0.0.1:9091/transmission/rpc;
    }
       
    location /upload {
        proxy_pass         http://127.0.0.1:9091/transmission/upload;
    }
 
}

如果只想通过HTTPS来访问控制面板,可以修改/var/lib/transmission-daemon/info/settings.json中的rpc-whitelist,将其改为"rpc-whitelist": "127.0.0.1",

本文部分内容参考自:
http://blog.csdn.net/stripe3385/article/details/50482996
https://askubuntu.com/questions/221081/permission-denied-when-downloading-with-transmission-deamon
https://github.com/ronggang/transmission-web-control
https://pastebin.com/KQaaeJ9X
https://pastebin.com/gHsHB2Ce

发表回复