1. 前言
VPS 的网络出入口速率通常比较可观,因此可考虑在 VPS 上部署 BT 下载,从而提高效率。
2. VPS 的选择
由于需要部署 BT ,因此在选择 VPS 上需要注意以下几点:
- 硬盘容量需要足够大
- VPS 提供商允许 BT ,这点很重要,部分 VPS 提供商明令禁止在 VPS 上进行 BT 下载。在购买 VPS 前一定要仔细看看 TOS(Terms of Service),看是否允许 BT 下载
- 如果是下载电影等有版权的东西,得要购买无视版权的 VPS
这里可以考虑 RamNode 的 VPS ,RamNode 的 Acceptable Use Policy
中写有:
The following are acceptable uses provided they comply with the rest of this AUP:
- IRC*
- Source games+
- Minecraft servers+
- VPN
- Adult material
- Video streaming
- Torrents (Only allowed in US locations - must be limited to 20Mbps total)
- Usenet (Must be limited to 20Mbps total)
*Any usage which results in any attacks against RamNode the company (not just the client’s server) may result in suspension and/or termination.
+Game servers are not allowed on Massive plans (CVZ and CKVM).
3. 建立本地端和 VPS 端的 SSH 连接
首先,在本地端安装 SSH 工具,这类工具有很多,使用方法也大同小异。本文将以 Xshell 为例进行操作。
在网页上登录你的 VPS 控制台,记录下 IP 地址,SSH 连接端口号,以及 root 用户的密码。如果是 RamNode 的 VPS ,那么有关 SSH 连接的信息会以邮件形式发送给用户。
- 打开 Xshell,选择
新建连接
,在Host
一栏中填写 VPS 的 IP 地址,在Port Number
一栏中填写 VPS 的 SSH 连接端口号,填好保存,建立连接。 - 连接过程中 Xshell 会弹框要求输入用户名和密码,用户名输入
root
,密码输入你刚才记录的密码。 - 连接成功建立后,会在 Xshell 上显示:
Connection established.
To escape to local shell, press ‘Ctrl+Alt+]’.
Welcome to Ubuntu 16.04 LTS (GNU/Linux 2.6.32-042stab127.2 x86_64)- Documentation: https://help.ubuntu.com/
The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
root@happylife:~#
4. BT 软件安装
本文采用的 BT 客户端为 Deluge
,Deluge 提供了 Web-UI ,方便管理操作,VPS 操作系统为 Ubuntu 16.04 64bit。
Ubuntu 上使用 PPA 的方式安装:
sudo apt-get update
apt-get install software-properties-common
sudo add-apt-repository ppa:deluge-team/ppa
sudo apt-get update
sudo apt-get install deluged deluge-web
其他 Linux 发行版本的安装方式可以参考官方文档,安装完成后执行以下命令启动 Deluge:
deluge-web --ssl -p 8080 &
这里 --ssl
指开启 ssl 访问,8080
是指访问端口,这时只需要访问 https://VPS的IP地址:8080
就可以看到 Deluge 的 web 管理界面了,Deluge 的默认密码为 deluge
,进入后记得及时修改密码。
然后连接 Deluge 服务:
5. Web 服务搭建
BT 服务端搭建好之后便可随意下载种子了,剩下的问题就是下载到 VPS 的文件要怎么取回到本地。
最简单的方式便是在 VPS 上搭建一个 http服务器
,打开网页就可以看到下载好的文件,直接点击就可以下载。这样一来,从 BT 下载到文件的取回全都是通过 Web 服务操作,非常方便。
本文采用 Lighttpd
搭建 http 服务器。
sudo apt-get install lighttpd
接下来,需要编辑 Lighttpd 的配置文件,使它以我们想要的方式运行,本文将介绍使用 https + 密码验证
的配置过程。
5.1 配置 https
Let’s Encrypt 是一个颁发免费 SSL/TLS 证书的证书颁发机构(CA),可以使用它为 Lighttpd 配置 https。
- 安装 Certbot
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot
- 获取 SSL 证书
certbot certonly -d example.com //将 example.com 换成你自己的域名
当看到以下内容时:
How would you like to authenticate with the ACME CA?
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
选择 1
。
注:运行时如果遇到错误信息 Problem binding to port 80: Could not bind to IPv4 or IPv6.
,执行以下命令:
sudo /etc/init.d/apache2 stop
service lighttpd stop
- 配置证书
上述步骤完成后,会在/etc/letsencrypt/live/example.com/
生成证书,文件结构如下:
/etc/letsencrypt/live/example.com/
|-- README
|-- cert.pem -> ../../archive/example.com/cert1.pem
|-- chain.pem -> ../../archive/example.com/chain1.pem
|-- fullchain.pem -> ../../archive/example.com/fullchain1.pem
|-- privkey.pem -> ../../archive/example.com/privkey1.pem
在将证书应用于 Lighttpd 时,需要将 cert.pem
和 privkey.pem
合并:
cat /etc/letsencrypt/live/example.com/cert.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/letsencrypt/live/example.com/merged.pem
- 证书更新
Let’s Encrypt SSL 证书,有效期为 90 天。因此需要在证书到期之前更新证书,以避免证书错误。可以用 Certbot 更新证书。
certbot renew
注意:每次证书更新后,需要重新合并 cert.pem
和 privkey.pem
。
5.2 配置 Lighttpd
修改 Lighttpd 的配置文件,使其在 https + 密码验证
的模式下运行:
vi /etc/lighttpd/lighttpd.conf
将配置文件修改为:
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
"mod_auth",
)
server.document-root = "/var/www/"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
# server.port = 80
# server.bind = "0.0.0.0"
server.dir-listing = "enable"
$SERVER["socket"] == "0.0.0.0:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/example.com/merged.pem"
ssl.ca-file = "/etc/letsencrypt/live/example.com/fullchain.pem"
server.name = "example.com"
}
$SERVER["socket"] == "[::]:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/example.com/merged.pem"
ssl.ca-file = "/etc/letsencrypt/live/example.com/fullchain.pem"
server.name = "example.com"
}
# http自动跳转到https
$SERVER["socket"] == ":80" {
$HTTP["host"] =~ ".*" {
url.redirect = (".*" => "https://%0$0")
}
}
$SERVER["socket"] == "[::]:80" {
$HTTP["host"] =~ ".*" {
url.redirect = (".*" => "https://%0$0")
}
}
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
# default listening port for IPv6 falls back to the IPv4 port
## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
dir-listing.encoding = "utf8"
# 开启密码认证,同时在最前面的server.modules中加入mod_auth
# 如果不需要密码认证,把下面的代码删除即可
# 关闭auth的debug模式
auth.debug = 0
# 使用明文密码,这是最简单的方式
auth.backend = "plain"
# 定义用户名、密码存放的路径
auth.backend.plain.userfile = "/etc/lighttpd/auth"
# 定义要加密的路径
auth.require = ( "/" =>
(
# 可以使用多种认证方式,这里以basic为例
"method" => "basic",
# 访问时,对话框的提示信息
"realm" => "Password protected area",
# 允许访问的用户名,用“|”号分割多个用户
"require" => "user=username01|user=username02"
)
)
密码认证文件位置为 /etc/lighttpd/auth
,格式为 用户名:密码
,例如:root:admin
。
完成配置后,重启 Lighttpd 服务:
service lighttpd restart
5.3 BT 客户端适配
配置 Deluge 下载路径为 /var/www/
: