离线服务器搭建

我没啥下载需求,就是正好有天看到vps可以用来搭建离线下载服务器,正好手上有台vps那就来搭建试试。

比如在本地下载资源的时候比较慢,有时候要下很久,但是你又需要关机,那么可以让vps服务器先去下载。等vps下完保留在服务器上后,自己再从vps上把资源取出来。

实验环境:

  • 操作系统:CentOS 7.4
  • CPU:双核
  • RAM:1624 M
  • 端口带宽:1Gbps,你只需要知道,这个带宽下,下载速度的上限只能是你的网络带宽
  • 技术基础:基本 linux 操作

1.下载安装aria2

作为一款极为强大的命令行下载工具,aria2 的身影活跃于各大下载教程中。它支持 HTTP、FTP、BT、磁力等各种下载协议,占用资源少,支持多线程和远程访问,是搭建离线下载服务的不二之选。

  1. 若要安装 aria2,只需在终端执行命令 yum -y install aria2 即可。如果提示命令有误的话,可以先执行 yum -y install epel-release,添加 epel 源后再尝试。

  2. 为了确认安装成功,你可以输入命令 aria2c -v 查看 aria2 的版本号

  1. 安装 aria2 成功后,我们还需要为它编写配置文件。首先执行命令 mkdir ~/.aria2(路径可依喜好更改)创建存放配置的文件夹,随后执行 touch ~/.aria2/aria2.session 创建会话文件。

  2. 完成以上操作后,执行 vi ~/.aria2/aria2.conf,按 i 键进入编辑模式,完工后按 Esc 键返回,再按 :wq 保存修改并退出。

  3. 在本文中,我提供了一个可直接使用的配置文件样本,你可以粘贴至 aria2.conf 文件内,注意修改 rpc-secret 为自己喜欢的密码。如果在上一步操作中选择了其它文件路径,不要忘了修改哦。

    注意:下面的部分端口(如RPC监听端口、BT监听端口、DHT网络监听端口)需要在防火墙上放通。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 文件的保存路径(可自行修改)
dir=/root/Download
# 启用磁盘缓存, 0为禁用缓存
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片
file-allocation=none
# 断点续传
continue=true
# 最大同时下载任务数, 运行时可修改
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定
min-split-size=20M
# 单个任务最大线程数, 添加时可指定
split=5
# 整体下载速度限制, 运行时可修改
#max-overall-download-limit=0
# 单个任务下载速度限制
#max-download-limit=0
# 整体上传速度限制, 运行时可修改
#max-overall-upload-limit=0
# 单个任务上传速度限制
#max-upload-limit=0
# 禁用IPv6
disable-ipv6=true
# 从会话文件中读取下载任务
input-file=/root/.aria2/aria2.session
# 退出时保存`错误/未完成`的下载任务到会话文件
save-session=/root/.aria2/aria2.session
# 定时保存会话, 0为退出时才保存
#save-session-interval=60
# 启用RPC
enable-rpc=true
# 允许所有来源
rpc-allow-origin-all=true
# 允许非外部访问
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select]
#event-poll=select
# RPC监听端口, 端口被占用时可以修改
rpc-listen-port=6800
# 设置的RPC授权令牌
rpc-secret=<token>
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用
listen-port=6881-6999
# 单个种子最大连接数
#bt-max-peers=55
# 打开DHT功能, PT需要禁用
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用
bt-enable-lpd=true
# 种子交换, PT需要禁用
enable-peer-exchange=true
# 每个种子限速
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种
seed-ratio=1.0
# 强制保存会话, 即使任务已经完成
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验
bt-seed-unverified=true
# 保存磁力链接元数据为 .torrent 文件
bt-save-metadata=true
# DHT(IPv4)文件
dht-file-path=/root/.aria2/dht.dat
# DHT(IPv6)文件
dht-file-path6=/root/.aria2/dht6.dat
  1. 完成以上操作后,让我们输入 aria2c –conf-path=/root/.aria2/aria2.conf -D,如果没有错误提示的话,aria2 的配置工作就已经大功告成了。你可以使用 aria2c URL 下载指定链接,并在 /root/Download 文件夹中找到离线完成的文件。
  2. 为了让 aria2 开机时自动运行,我们可以编辑 vi /etc/rc.d/rc.local,加入 aria2c --conf-path=/root/.aria2/aria2.conf 这一行命令。

2.下载安装AriaNg

aria2 虽好,命令行的操作方式却令人望而却步。而 AriaNg 则允许我们在友好的 GUI 界面中使用它,并完整支持原版 aria2 的设置选项,让它像迅雷一样易用。

安装 AriaNg 前,我们需要先准备一款 Web 服务器。

  1. 正好这个vps的配置也还行,干脆就安装个宝塔,然后一键安装web服务器

安装方法查看详细教程 >>

Centos安装脚本

1
2
> yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
>

Ubuntu/Deepin安装脚本

1
2
> wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
>

Debian安装脚本

1
2
> wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
>

Fedora安装脚本

1
2
> wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
>
  1. 面板安装完成后,登录进去选择安装一个LAMP环境

  2. 安装2个扩展

  3. 禁用一个函数

  4. 然后重启PHP服务

  5. 点击宝塔面板中的“数据库”选项,打开phpmyadmin:

  6. 新建一个数据库命名为filerun,如图:

  7. 现在来下载FileRun的安装包:http://www.filerun.com/download

    注意我们要下载的版本是For PHP 7 or 5.6如图:

  8. 将下载到本地的安装包通过宝塔面板上传到你的站点根目录并解压:

  9. 打开你的网站域名(注意这里需要有你自己的一个域名,然后再dns服务器上做好了A记录),此时应该能够看到FileRun的安装界面向导了:

  10. 如果你是完全按照这篇文章搭建的FileRun那么你的文件存储路径是类似这样的:(注意这里和上面的aria2设置的路径不一致,可以把aria2配置文件中的下载路径修改成下面这个)

    1
    /www/wwwroot/你绑定的站点域名/system/data/default_home_folder

  1. 现在正式开始下载AriaNG前端面板,项目地址:https://github.com/mayswind/AriaNg

    最新版下载地址:https://github.com/mayswind/AriaNg/releases/download/0.2.0/aria-ng-0.2.0.zip

    下载完成后,回到你的宝塔面板中,在你的站点根目录下新建一个目录命名为:aria。进入到这个目录内将AriaNG的安装包上传到这个目录内并解压。

  2. 此时在你的站点域名后面加上/aria即可访问到这个面板了。

  3. 回到AriaNg面板中,点击AriaNg设置-RPC,在页面中的Aria2 RPC密钥内填写你们自己刚启动Aria2时设置的密码(注意,这是在第一步安装aria2的配置文件里面就设置好的):


3.Aria2 无法下载磁力链接、BT种子和速度慢的解决方案

前言

BT 下载并不是一个人的事,比如你在下载一部生理卫生知识教学影片时,背后其实是有一群和你下载同样影片的人在为你上传,同时你也在为他人上传,这个影片下载的人越多,给你上传的人就会越多,速度就会越快。但如果找不到这些人,你就可能无法下载。那么如何才能找到和你下载同样影片的人呢?

开放端口

在未开放端口的情况下,Aria2 无法与外界进行数据交换。所以开放端口是进行 BT 下载的首要条件。

如果是在 VPS 上使用 Aria2 下载,最简单粗暴的办法是关闭防火墙。如果你不想这么做,那么首先要知道端口号,这也许是你自己设置的,也许是默认的,总之打开 Aria2 配置文件就知道了。以下是 Aria2 完美配置中的端口信息:

1
2
3
4
# BT监听端口
listen-port=51413
# DHT网络监听端口
dht-listen-port=6881-6999

知道端口号后让防火墙放行这些端口即可。其实这些步骤在第一步已经弄完了。

添加 BitTorrent tracker

Bit­Tor­rent tracker 是帮助 BT 协议在节点与节点之间做连接的服务器,俗称 BT 服务器、tracker 服务器(以下简称为 tracker )。BT 下载一开始就要连接到 tracker ,从 tracker 获得其他客户端 IP 地址后,才能连接到其他客户端下载。在传输过程中,也会一直与 tracker 通信,上传自己的信息,获取其它客户端的信息。所以 tracker 在 BT 下载中起到了至关重要的作用。

每个 BT 种子都会内置 tracker ,但可能因为不可抗力而导致连接困难或者速度不理想,这就意味着很难找到下载相同资源的人。好在这个问题可以通过添加额外 tracker 来解决,这样你遇到和你下载同样资源的人的机会就更多,就更容易找到给你上传的人,速度自然就会快了。

trackerslist 是一个提供 tracker 列表的项目,几乎每天都会更新。列表还分为 udp、http、ws…… 小孩子才做选择,所以直接选择 trackers_all 这个包含所有服务器的列表。然后更改格式,tracker 之间用 , 隔开,再添加到 Aria2 配置文件中,就像下面这样:

1
2
3
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp
://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.openbittorrent.com:80/announc
e,udp://exodus.desync.com:6969/announce,udp://open.demonii.si:1337/announce,udp://tracker.tiny-vps.com:6969/announce

当然这种重复的事情,用脚本来做才是正确的方式:

  • 在终端内执行以下命令可直接获取 Aria2 可用格式的 tracker 列表。
1
bash <(curl -fsSL git.io/tracker.sh) cat
  • 在 Aria2 配置文件(aria2.conf)所在目录执行以下命令即可获取最新 tracker 列表并自动转换为 Aria2 可用格式添加到配置文件中。
1
bash <(curl -fsSL git.io/tracker.sh)
  • 此外还可以指定配置文件路径,比如配置文件在/root/.aria2/aria2.conf
1
bash <(curl -fsSL git.io/tracker.sh) "/root/.aria2/aria2.conf"

获取 DHT 数据

由于 tracker 对 BT 下载起到客户端协调和调控的重要作用,所以一旦被封锁会严重影响 BT 下载。早年中国大陆对 tracker 的封锁,曾一度导致 BT 下载销声匿迹,这也促使了 DHT 网络的诞生。

DHT 网络由无数节点组成,当接触到一个节点,通过这个节点又能接触到更多的节点,接触的节点越多,你获取资源的能力就越强,下载的速度也就越快。即使在完全不连上 Tracker 服务器的情况下,也可以很好的下载。以下是 Aria2 配置文件中一些与 DHT 相关的功能选项:(注:以下内容也在第一步的配置文件中设置好了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# DHT(IPv4)文件
dht-file-path=/root/.aria2/dht.dat
# DHT(IPv6)文件
dht-file-path6=/root/.aria2/dht6.dat
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true

和其他 BT 下载工具一样,Aria2 有个 dht.dat 文件(开启 IPv6 还有个 dht6.dat),里面记录了 DHT 节点信息。但是!文件本身是不存在的,需要手动创建。如果你在 Aria2 第一次运行的时候直接下载磁力链接或者冷门种子,因为文件内没有任何数据,就无法获取到 DHT 网络中的节点,所以就会遇到无法下载的情况。

第一个解决方案是找有数据 DHT 文件。

第二个解决方案是生成 DHT 数据。找几个热门种子下载,比如 Ubuntu 镜像的种子。下载后做种几个小时,你会发现 dht.dat 从空文件变成有数据了。



4.参考文档

1.鸭子都能看懂的 VPS 离线下载 & 云服务搭建新手教程

2.Aria2整合FileRun自建离线下载网盘

3.Aria2 无法下载磁力链接、BT种子和速度慢的解决方案

4.一键安装脚本