Feral Hosting(简称FH)作为性价比较高的Seedbox,一直有着不错的口碑,而最近他们的SSD Plan带宽由之前的15G管升级到了20G管,性价比再上一个台阶。对比其他的Seedbox,FH只提供了主流BT客户端的一键安装页面,而其他工具例如irssi-autodl、Plex都要通过手动安装。本文将以PT站点IPT为例,介绍如何正确配置Deluge和irssi-autodl,实现完全无人值守的IRC announce抓取以及下载。

autodl-irssi的安装

首先已在FH中安装好ruTorrent和Deluge,然后通过SSH连接到服务器后,用以下命令安装autodl-irssi:

1
$ wget -qO ~/install.autodl.sh http://git.io/oTUCMg && bash ~/install.autodl.sh

然后将autodl-irssi的本地服务器地址改为10.0.0.1:

1
2
3
4
$ sed -i "s|use constant LISTEN_ADDRESS => '127.0.0.1';|use constant LISTEN_ADDRESS => '10.0.0.1';|g" ~/.irssi/scripts/AutodlIrssi/GuiServer.pm
$ sed -i 's|$rtAddress = "127.0.0.1$rtAddress"|$rtAddress = "10.0.0.1$rtAddress"|g' ~/.irssi/scripts/AutodlIrssi/MatchedRelease.pm
$ sed -i 's|my $scgi = new AutodlIrssi::Scgi($rtAddress, {REMOTE_ADDR => "127.0.0.1"});|my $scgi = new AutodlIrssi::Scgi($rtAddress, {REMOTE_ADDR => "10.0.0.1"});|g' ~/.irssi/scripts/AutodlIrssi/MatchedRelease.pm
$ sed -i 's|if (!socket_connect($socket, "127.0.0.1", $autodlPort))|if (!socket_connect($socket, "10.0.0.1", $autodlPort))|g' ~/www/"$(whoami)"."$(hostname -f)"/public_html/rutorrent/plugins/autodl-irssi/getConf.php

然后用nano打开autodl.cfg,以及 ruTorrent插件目录下面autodl-irssi的conf.php,看看两个文件里面的端口和密码是否一致:

1
2
$ nano ~/.autodl/autodl.cfg
$ nano ~/www/$(whoami).$(hostname -f)/public_html/rutorrent/plugins/autodl-irssi/conf.php

重新启动一下autodl-irssi:

1
$ kill "$(pgrep -fu "$(whoami)" "autodl")" && screen -dmS autodl irssi

autodl-irssi的配置

主要是配置IRC bot和下载过滤器的一些选项。

进入ruTorrent,点击页面上方菜单的绿色箭头,打开autodl-irssi的过滤器设置,点击“New”随便起一个非中文名字。

必须新建一个过滤器,否则autodl-irssi在配置好IRC bot后依然不会自动开始下载。

点击Action,“Choose .torrent action”中选择“Save to Watch Folder”,下面的文件夹选择/media/md6/你的slot id/private/deluge/watch 。点击OK完成过滤器配置。

然后设置tracker,点击Trackers后在左边找到你的PT站,填入passkey或者cookies。下面的Delay是bot从IRC的announce频道抓取到种子信息后,要间隔多久才将种子下载到之前设置好的watch目录下,IPT的话一般是42-45秒左右比较合适。

确定之后,再进入IRC Servers开始IRC bot的配置,以IPT为例,IRC服务器为irc.iptorrents.com,端口为6697,勾选上SSL,Nick一栏中为你的bot取一个名字。之前问了一下IPT的管理员,他们的建议是最好为IPT账号名_autodl这种类似的格式,例如myiptaccount_autodl ,不然你的bot可能会被秒ban。下面的IRC Channel点击旁边的New后填写#ipt.announce ,其余的地方均留空。然后回到SSH中,使用以下命令查看bot是否成功连接上IRC了:

1
$ screen -r autodl

或者在ruTorrent客户端下面的autodl-irssi模块中也能看到输出的简化信息。

Deluge相关配置

现在你已经实现了autodl-irssi从IPT IRC的announce频道中抓取种子信息,然后将种子保存到Deluge的watch目录并开始下载。由于IRC中的种子信息announce速度远快于实际出种速度,因此我们需要设置tracker延迟时间(前文已经提及),否则将会出现unregistered torrent的红种错误。但每个种子的出种速度并不一致,因此固定的延迟时间并不能兼顾每个种子,因此还需通过脚本来完成红种的自动暂停/下载。

首先在SSH使用以下命令,得到Deluge的端口及登录密码等相关信息备用:

1
$ printf "10.0.0.1\n$(hostname -f)\n$(whoami)\n$(sed -rn 's/(.*)"daemon_port": (.*),/\2/p' ~/.config/deluge/core.conf)\n$(sed -rn "s/$(whoami):(.*):(.*)/\1/p" ~/.config/deluge/auth)\n"

输出得到的结果分别为:

  • 主机名
  • 用户名
  • 端口
  • 密码

然后在任意目录下创建名为autofix.sh的文件,例如:

1
$ nano ~/private/deluge/autofix.sh

脚本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
torrentid=$1
torrentname=$2
torrentpath=$3
x=1
while [ $x -le 100 ]
do
sleep 2
echo "Running $x times" >> ~/script.log
echo "TorrentID: $torrentid" >> ~/script.log
line=$(deluge-console "connect 10.0.0.1:port user password; info" $1 | grep "Tracker status")
echo $line >> ~/script.log
case "$line" in
*unregistered*|*Sent*|*End*of*file*|*Bad*Gateway*)
deluge-console "connect 10.0.0.1:port user password; pause '$torrentid'"
sleep 1
deluge-console "connect 10.0.0.1:port user password; resume '$torrentid'"
;;
*)
echo "Found working torrent: $torrentname $torrentpath $torrentid" >> ~/script.log
exit 1;;
esac
x=$(( $x + 1 ))
done

其中,port/user/password分别替换为前面得到的Deluge端口/用户名/密码。

然后将脚本变为可执行:

1
$ chmod +x ~/private/deluge/autofix.sh

进入Deluge客户端,在Preference/Plug-ins中勾选上Execute,然后进入Execute插件设置,点击左下角的Add,将Event选为Torrent Added,Command则填写/media/md6/FH slot id/private/deluge/autofix.sh

如何找到autofix.sh的正确路径:进入ruTorrent-设置-下载,其默认下载目录即为参考路径。

然后重启Deluge客户端(必须):

1
$ kill "$(pgrep -fu "$(whoami)" "deluged")" && sleep 3 && deluged

至此,我们已经实现了Deluge的无人值守下载。

SSD Plan的其他设置

对于IPT这种更新速度很快的0day站,如果你买的是SSD Plan,基本上不可能长时间做种,因此达到H&R满足的1.0分享率就可以删除了,但对于那些在下载中就满足分享率的种子,我们也希望继续做种一段时间来获取更多的上传。根据本人经验,SSD的slot一般做种在15-20分钟左右就可以满足要求。该需求可以通过Deluge的自动删除插件来实现。

首先下载Auto Remove Plus插件(必须用第二个python2.7版本):http://forum.deluge-torrent.org/viewtopic.php?t=47243

然后进入Deluge的Preference/Plug-ins,点击 Install安装刚才下载的插件,勾选之后进入设置。

首先把Enable打上勾,第一栏是间隔多久检查一次,单位是天,如果需要20分钟的检查间隔那么就是0.0139(其他的时间可自行计算)。接下来是下面的删除条件,将Remove by选为Seed Time,同样也填入0.0139,第二个条件可以不用选择,最下面的Remove torrent data一定要选上,不然只会移除种子而不会删除数据。确认之后即完成Deluge的设置。

最后,由于IPT有时会发体积很大的大包,综合考虑SSD的空间和效率,我们并不需要这种大包,因此还需设置autodl-irssi的种子体积过滤。打开配置文件:

1
$ nano ~/.autodl/autodl.cfg

找到filter那一段(例如[filter 123] ,123是你之前设置的过滤器的名字),添加:

1
2
min-size = 1GB
max-size = 100GB

这样就可以只下载1GB-100GB之间大小的种子。

在slot上安装Plex

如果在PT上遇到自己想看的东西,只要不是蓝光原盘,那么可以有几种途径考虑:

  • 用FTP拖回本地
  • rclone到Google Drive/OneDrive,等待其转码,或者rclone到私有云。
  • 直接在slot上通过Plex观看

如果有不错的加速工具,那么一般会考虑第三种方法。安装Plex的方法已经在Feral Hosting的WiKi页面详细说明,这里只是简单说一下:

安装Plex:

1
2
$ mkdir -p ~/private/plex
$ mkdir -p ~/.config/feral/ns/forwarding/tcp && echo 32400 > ~/.config/feral/ns/forwarding/tcp/"$(shuf -i 10001-32001 -n 1)"

查看Plex服务器信息:

1
$ while [ ! -f ~/private/plex/README ]; do printf '\rWaiting...'; sleep 2; done && cat ~/private/plex/README

然后需要通过SSH Tunnel来连接到内网服务器,推荐使用WiKi上所示例的KiTTY,PuTTY也可以。Session中填好你的slot服务器信息后,在Connection-SSH-Tunnels里面选择Dynamic,为Source port随意选择一个端口比如12312,然后回到Session,保存后登陆到SSH

然后在浏览器中进行设置,推荐使用FireFox(Chrome和IE都需要修改Windows的环境变量),地址栏中输入about:preferences#advanced 打开设置,找到Network-Settings-Manual proxy configuration,填入相关信息:

  • SOCKS Host:127.0.0.1
  • Port:你之前设置的动态端口
  • SOCKS Type:SOCKS v5

然后在FireFox中打开之前看到的Plex内网服务器地址(例如http://internal_ip:32400/web),稍等一会就可以看到相关的设置页面。后续设置不在此处赘述,请参考:https://www.feralhosting.com/wiki/software/plex