Stay Hungry. Stay Foolish.

之前讲了如何搭建 NextCloud,搭建过程可谓是非常繁琐的了,即使是环境配置用了一键包还是很复杂,而且 NextCloud 作为大型的云同步盘,对服务器资源的消耗是非常巨大的,而且为了安全性的考虑,权限要求非常严格,如果就拿来做下载机显然是不合算的。搭建的过程对于小白来说其实不是很友好,所以我们就来弄一个单纯的下载机,不需要搭建环境,不需要域名,不需要考虑权限配置,完全的小白操作!

预期目标

服务器 ip 访问,一个端口用于 Cloud Torrent 的 BT 和磁力下载,一个端口用于 Aria2 的面板,一个端口用于 Youtube 下载,再建立一个文件管理面板,如果需要共享的话,还可以再选装一个 h5ai 面板,同时还会补充介绍文件和 GDrive 和 Onedrive 的同步,充分发挥下载机的作用。

初始配置

本教程针对的是 Debian 系统,所以初始化配置如下,推荐使用 Debian 9 系统:

apt update && apt dist-upgrade -y
apt install curl vim wget git sudo zip unzip apt-transport-https screen lsb-release ca-certificates build-essential automake python python3 python3-pip -y

Cloud Torrent

这边就直接照抄 NextCloud 安装教程了,去掉了可能比较复杂的部分。使用官方一键脚本安装。

mkdir -p /var/www/
curl https://i.jpillora.com/cloud-torrent! | bash

然后利用 systemd 来管理,创建一个脚本,具体内容自己修改一下:

vi /etc/systemd/system/cloud-torrent.service

脚本内容如下:(更改 为自己的设置)

[Unit]
Description=cloud-torrent
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/usr/local/bin/cloud-torrent --port <PORT1> --config-path /var/www/cloud-torrent.json --title "Cloud Torrent" --log --auth "<USER>:<PASSWD>"
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

然后就可以方便的使用啦:

# 启用:
systemctl enable cloud-torrent
# 开启、关闭、重启、查看状态
systemctl [start/stop/restart/status] cloud-torrent

访问 http://<YOURIP>:<PORT1> 就可以进行 BT 和磁力下载啦。

Caddy

curl https://getcaddy.com | bash -s personal hook.service,http.cache,http.cgi,http.cors,http.expires,http.filemanager,http.filter,http.forwardproxy,http.geoip,http.git,http.gopkg,http.grpc,http.hugo,http.ipfilter,http.jekyll,http.jwt,http.login,http.minify,http.nobots,http.proxyprotocol,http.ratelimit,http.realip,http.reauth,http.upload,http.webdav,net
chown root:root /usr/local/bin/caddy && chmod 755 /usr/local/bin/caddy
setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
mkdir -p /etc/caddy && chown -R root:root /etc/caddy
mkdir -p /etc/ssl/caddy && chown -R root:www-data /etc/ssl/caddy && chmod 770 /etc/ssl/caddy 
touch /etc/caddy/Caddyfile && chown root:root /etc/caddy/Caddyfile && chmod 644 /etc/caddy/Caddyfile
mkdir /var/www && chown www-data:www-data /var/www && chmod 555 /var/www
curl -L https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service && chown root:root /etc/systemd/system/caddy.service && chmod 644 /etc/systemd/system/caddy.service
systemctl daemon-reload && systemctl start caddy.service

Aria2

Aria2 编译安装

  • 选择 apt 安装
    网上很多教程说,apt 包管理安装的 aria2 很老啊什么的,实际上如果是较新系统打包的都可以直接使用
apt install aria2 -t stretch-backports
  • 创建配置文件
mkdir /etc/aria2
touch /etc/aria2/aria2.session
chmod 777 /etc/aria2/aria2.session
nano /etc/aria2/aria2.conf
  • 配置文件可以参考下面的配置:(不介绍相关配置了,直接使用即可,更改 <TOKEN> 部分为自己要设置的密码)
dir=/var/www/downloads
disk-cache=32M
console-log-level=warn
file-allocation=none
continue=true

max-concurrent-downloads=20
max-connection-per-server=10
min-split-size=10M
split=32
check-integrity=false
max-overall-download-limit=0
max-download-limit=0
max-overall-upload-limit=1
max-upload-limit=1
disable-ipv6=true
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
save-session-interval=60

connect-timeout=60
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=false
event-poll=epoll
rpc-listen-port=6800
# 设置的RPC授权令牌,<TOKEN>直接改成你设置的密码
rpc-secret=<TOKEN>
rpc-max-request-size=2M
follow-torrent=true
listen-port=51200
enable-dht=false
enable-dht6=false
# dht-listen-port=6881-6999
bt-enable-lpd=false
enable-peer-exchange=true
bt-request-peer-speed-limit=50K
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
seed-ratio=0.01
force-save=false
bt-hash-check-seed=true
bt-seed-unverified=true
bt-save-metadata=false
auto-file-renaming=true
always-resume=true
async-dns=true
allow-piece-length-change=false
  • 创建启动脚本
vi /etc/systemd/system/aria2c.service

脚本内容如下:

[Unit]
Description=Aria2c download manager
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf --daemon
ExecReload=/usr/bin/kill -HUP $MAINPID
RestartSec=1min
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后就可以方便的使用啦:

启用:
systemctl enable aria2c
开启、关闭、重启、查看状态
systemctl [start/stop/restart/status] aria2c

安装 AriaNG 面板

这个就稍微麻烦一点,需要配置 Nginx 服务器了,具体如何配置 LEMP 可以参考之前的教程

安装 Nginx

我们显然不会去编译 Nginx 的,太复杂了,直接用 ppa 安装即可:

  • 添加 Nginx 源
wget -O /etc/apt/trusted.gpg.d/nginx-mainline.gpg https://packages.sury.org/nginx-mainline/apt.gpg

cat >> /etc/apt/sources.list.d/nginx.list << EOF
deb https://packages.sury.org/nginx-mainline/ $(lsb_release -sc) main
EOF
  • 安装
apt update && apt install nginx -y

配置 Nginx 以及安装 AriaNG

如果你采用 Nginx 官方源的安装方法(就是我上面介绍的方法)的话,你可以这样更改配置(修改 为你需要的端口即可,注意不能与 相同):

rm -rf /etc/nginx/conf.d/* && rm -rf /etc/nginx/sites-enabled/ && cd /var/www/ && wget https://github.com/mayswind/AriaNg/releases/download/0.4.0/aria-ng-0.4.0.zip && unzip aria-ng-0.4.0.zip && rm aria-ng-0.4.0.zip
vim /etc/nginx/sites-enabled/dl.conf

Nginx 配置如下:i 进行修改

server {
    listen       <PORT2>;
    server_name  localhost;
    root   /var/www/;
    index  index.html index.htm;
}
  • 完成以后,就可以:wq 保存并退出,重启 Nginx 就可以正常使用了:
nginx -t
service nginx restart
  • 打开 http://<YOURIP>:<PORT2> 就可以看到 AriaNG 面板了。
    然后你会发现,诶为什么会连接失败呢?

AriaNG

因为没有设置连接的 ,打开 AriaNG 设置-RPC 填写你的 然后刷新就可以连接啦。

Success

FileManager

这个官方也是提供了一键包的呢:

curl -fsSL https://henriquedias.com/filemanager/get.sh | bash

默认的安装位置在 /usr/local/bin/ 里面,进入文件夹,修改一下配置:

cd /usr/local/bin/
vim filemanager.json

参考配置如下:

{
  "port": 80,
  "noAuth": false,
  "baseURL": "/admin",
  "address": "",
  "reCaptchaKey": "",
  "reCaptchaSecret": "",
  "database":"database.db",
  "log": "stdout",
  "plugin": "",
  "scope":"/var/www/downloads",
  "allowCommands": true,
  "allowEdit": true,
  "allowNew": true,
  "commands": [
    "git",
    "svn"
  ]
}

修改保存完毕以后,后台运行 filemanager:

nohup filemanager >/dev/null 2>&1 &

官方教程上说直接输入 filemanager& (注意有个 & )也可以达到后台运行的效果。

需要关闭的话执行:

eval $(ps -ef | grep filemanager | grep -v grep | awk '{print "kill "$2}')

打开 http://<YOURIP>/admin,就会发现 FileManager 已经启动了,默认的用户名和密码都是 admin,第一次进入时注意自行修改。

filemanager

傻瓜式的界面,简中可选,还有什么不满足的呢

filemanager

Youtube 在线下载方案

这一部分我目前还没有找到最好的选择,因为几个 Youtube 下载面板都不怎么更新了,而且似乎 VPS 上下载 Youtube 没有什么必要?先把看上去还不错的方案列出来吧。

部署 Youtube-dl

Youtube-dl 其实不算特别出色的方案,下载的速度不算特别快,个人其实更加推荐 You-get,可是 You-get 貌似并没有面板支持 emmmmm。使用 pip 一键安装 Youtube-dl:

apt-get install python python-pip -y
pip install pip --upgrade
pip install youtube-dl

部署 MediaDownloader

环境要求:PHP 5.4+,python 2.7,另外如果你需要下载超高清画质的话,那么可能需要部署 avconv 或者 ffmpeg ,因为YouTube 上的这些超高清视频,都是视频和音频分开的,需要下载到本地后合成。

这一项目实际上是基于 avignat 的 “Youtube-dl WebUI”,加入了清晰度选择等特性。
MediaDownloader 项目已经11个月未更新,而 Youtube-dl WebUI 也已经标为了 [UNMAINTAINED],所以请做好觉悟,在使用中的任何问题,可能都不会得到解决。

下面言归正传,先 git clone 到网站根目录:

git clone https://github.com/Kallys/MediaDownloader.git

接下来修改 config 目录下的 config.php

// 是否启用密码,不需要登录则"false" (boolean)
'security' => true,

// MD5密码,默认是"root",修改的话把密码的MD5填入即可
'password' => '63a9f0ea7bb98050796b649e85481845',

// 视频保存目录,不要"/"
'output_folder' => 'downloads',

// 编码解码器,avconv或ffmpeg,看你部署了哪个
'post_processor' => 'avconv',

// 最大同时下载任务数,0代表不限
'max_dl' => 3

创建相应视频保存目录,并且设置好权限。

安装结束以后,就可以看到如下的界面啦:

MediaDownloader

RClone 同步 GDrive、Onedrive 方案

RClone 是一个高速的在多平台之间(Linux Mac Windows)相互同步文件的工具,同时也支持市面上主流的网盘和云存储,例如 Google Drive、Onedrive、AWS S3 等等,关键是同步的速度非常之快,以 GDrive 为例,一般的同步速度高达 250 MBit/s 比同类的同步软件不知道快到哪里去了。安装配置也比较的简单。

Rclone 安装

  • 一键包安装
curl https://rclone.org/install.sh | sudo bash
  • 安装完毕后,执行 rclone config 开始初始化配置。

首先会要求设置一个新的同步端,我们选择 GDrive 选项即可,然后选择手动配置,会出现一个很长的链接,需要复制到浏览器然后登录 Google 账户进行授权,然后授权完成后把得到的代码黏贴回窗口就创建完毕了。

Rclone1

Rclone2

  • 如果要连接 OneDrive 的话可能就不那么简单了,需要在本地也创建一个 Rclone 然后本地打开授权链接进行授权再将授权码黏贴到服务器 ssh 窗口,稍微麻烦一些。

Rcloue 的使用

# 列目录(文件),类似的还有lsd和lsl命令,一个只列目录,一个顺便输出信息
rclone ls remote:path
 
# 复制(最常用的功能啦)
rclone copy source:sourcepath dest:destpath

# 类似,当src和dst为目录时一个效果,为单文件时类似cp为不同名字的文件
rclone copyto rclone copyto src dst
 
# 读取,当path为文件时读文件内容,为目录时读目录内所有文件内容,另外可以用--include "*.txt"来指定文件名内关键字
rclone cat remote:path/to/
 
# 清理,删除存储源的垃圾箱或者是文件历史版本,部分存储类型支持
rclone cleanup remote:path
 
# 删除文件,可以使用--(min|max)-size --(min|max)-age等参数来限定范围
rclone delete remote:path
 
# 删除空目录,类似的还有删除只包含空目录的目录的rmdirs命令
rclone rmdir
 
# 删除,这个就是啥都删了
rclone purge remote:path
 
# 同步,这个其实才是核心来着
rclone sync source:path dest:path

挂载 Rclone 作为磁盘

服务器硬盘太小怎么办,我们可以利用 Rclone 挂载第三方磁盘到机器上,这样你的机器就有很大很大的硬盘了,比如 Gdrive 是965 TB,似乎无穷无尽呢,注意要求挂载远程硬盘的话,机器的 IO,CPU 和网速(到 Google CDN)都必须足够,否则很容易 gg。挂载的命令很简单啦,下面以 GDrive 为例,google 是之前新建的 Gdrive 标号。

mkdir -p /var/www/data
rclone mount google:/ /var/www/data --allow-other &

挂载好了以后输入 df -h 就可以看到新挂载的 GDrive 盘啦!