这里就介绍个基于Cloud Torrent开发的项目Simple Torrent,同样的使用Golang编写,功能在原有的基础上加了些适用的功能,下载/上传速度限制、无版权限制,RSS订阅和自定义添加BT-Trackers等,而且还有api接口,同时还支持下载后自动调用外部命令,可玩性还是很高的,比如我们可以和aria2一样,将下载完成的资源自动上传到OneDrive或Google Drive等网盘,博主大概用了下,感觉还可以,这里就分享下。
安装
Github地址:https://github.com/boypt/simple-torrent
使用SSH
客户端登录服务器,运行命令:
<span class="pln">bash </span><span class="pun"><(</span><span class="pln">wget </span><span class="pun">-</span><span class="pln">qO</span><span class="pun">-</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//raw.githubusercontent.com/boypt/simple-torrent/master/scripts/quickinstall.sh)</span><span class="pln">bash </span><span class="pun"><(</span><span class="pln">wget </span><span class="pun">-</span><span class="pln">qO</span><span class="pun">-</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//raw.githubusercontent.com/boypt/simple-torrent/master/scripts/quickinstall.sh)</span>bash <(wget -qO- https://raw.githubusercontent.com/boypt/simple-torrent/master/scripts/quickinstall.sh)
然后使用ip:3000
访问即可。
顺便提供个博主经常用的BT-Trackers
服务器地址,效果不错,如下:
<span class="pln">https</span><span class="pun">:</span><span class="com">//trackerslist.com/all.txt</span><span class="pln">https</span><span class="pun">:</span><span class="com">//trackerslist.com/all.txt</span>https://trackerslist.com/all.txt
直接在Web
界面修改即可。
相关命令:
<span class="pun">启动:</span><span class="pln">systemctl start cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="pun">重启:</span><span class="pln">systemctl restart cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="pun">停止:</span><span class="pln">systemctl stop cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="pun">查看状态:</span><span class="pln">systemctl status cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="pun">启动:</span><span class="pln">systemctl start cloud</span><span class="pun">-</span><span class="pln">torrent </span><span class="pun">重启:</span><span class="pln">systemctl restart cloud</span><span class="pun">-</span><span class="pln">torrent </span><span class="pun">停止:</span><span class="pln">systemctl stop cloud</span><span class="pun">-</span><span class="pln">torrent </span><span class="pun">查看状态:</span><span class="pln">systemctl status cloud</span><span class="pun">-</span><span class="pln">torrent</span>启动:systemctl start cloud-torrent 重启:systemctl restart cloud-torrent 停止:systemctl stop cloud-torrent 查看状态:systemctl status cloud-torrent
Docker安装
1、安装Docker
<span class="com">#CentOS 6系统</span><span class="pln">rpm </span><span class="pun">-</span><span class="pln">iUvh http</span><span class="pun">:</span><span class="com">//dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</span><span class="pln">yum update </span><span class="pun">-</span><span class="pln">yyum </span><span class="pun">-</span><span class="pln">y install docker</span><span class="pun">-</span><span class="pln">ioservice docker startchkconfig docker on</span><span class="com">#CentOS 7、Debian、Ubuntu系统</span><span class="pln">curl </span><span class="pun">-</span><span class="pln">sSL https</span><span class="pun">:</span><span class="com">//get.docker.com/ | sh</span><span class="pln">systemctl start dockersystemctl enable docker</span><span class="com">#CentOS 6系统</span><span class="pln"> rpm </span><span class="pun">-</span><span class="pln">iUvh http</span><span class="pun">:</span><span class="com">//dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</span><span class="pln"> yum update </span><span class="pun">-</span><span class="pln">y yum </span><span class="pun">-</span><span class="pln">y install docker</span><span class="pun">-</span><span class="pln">io service docker start chkconfig docker on </span><span class="com">#CentOS 7、Debian、Ubuntu系统</span><span class="pln"> curl </span><span class="pun">-</span><span class="pln">sSL https</span><span class="pun">:</span><span class="com">//get.docker.com/ | sh</span><span class="pln"> systemctl start docker systemctl enable docker</span>#CentOS 6系统 rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum update -y yum -y install docker-io service docker start chkconfig docker on #CentOS 7、Debian、Ubuntu系统 curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker
2、安装Simple Torrent
<span class="pln">docker run </span><span class="pun">--</span><span class="pln">restart</span><span class="pun">=</span><span class="pln">always </span><span class="pun">--</span><span class="pln">name simple</span><span class="pun">-</span><span class="pln">torrent </span><span class="pun">-</span><span class="pln">d \</span><span class="pun">-</span><span class="pln">p </span><span class="lit">3000</span><span class="pun">:</span><span class="lit">3000</span><span class="pln"> \</span><span class="pun">-</span><span class="pln">v </span><span class="pun">~</span><span class="str">/downloads:/</span><span class="pln">downloads \</span><span class="pun">-</span><span class="pln">v </span><span class="pun">~</span><span class="str">/torrents:/</span><span class="pln">torrents \boypt</span><span class="pun">/</span><span class="pln">cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="pln">docker run </span><span class="pun">--</span><span class="pln">restart</span><span class="pun">=</span><span class="pln">always </span><span class="pun">--</span><span class="pln">name simple</span><span class="pun">-</span><span class="pln">torrent </span><span class="pun">-</span><span class="pln">d \ </span><span class="pun">-</span><span class="pln">p </span><span class="lit">3000</span><span class="pun">:</span><span class="lit">3000</span><span class="pln"> \ </span><span class="pun">-</span><span class="pln">v </span><span class="pun">~</span><span class="str">/downloads:/</span><span class="pln">downloads \ </span><span class="pun">-</span><span class="pln">v </span><span class="pun">~</span><span class="str">/torrents:/</span><span class="pln">torrents \ boypt</span><span class="pun">/</span><span class="pln">cloud</span><span class="pun">-</span><span class="pln">torrent</span>docker run --restart=always --name simple-torrent -d \ -p 3000:3000 \ -v ~/downloads:/downloads \ -v ~/torrents:/torrents \ boypt/cloud-torrent
然后使用ip:3000
访问即可。
最后如果你访问不了Web
端,可能要检查下防火墙端口,有安全组的也要放行下相关端口。
这里提供个CentOS
系统防火墙开启命令,大致如下:
<span class="com">#CentOS 6</span><span class="pln">iptables </span><span class="pun">-</span><span class="pln">I INPUT </span><span class="pun">-</span><span class="pln">p tcp </span><span class="pun">--</span><span class="pln">dport </span><span class="lit">3000</span> <span class="pun">-</span><span class="pln">j ACCEPTservice iptables saveservice iptables restart</span><span class="com">#CentOS 7</span><span class="pln">firewall</span><span class="pun">-</span><span class="pln">cmd </span><span class="pun">--</span><span class="pln">zone</span><span class="pun">=</span><span class="kwd">public</span> <span class="pun">--</span><span class="pln">add</span><span class="pun">-</span><span class="pln">port</span><span class="pun">=</span><span class="lit">3000</span><span class="pun">/</span><span class="pln">tcp </span><span class="pun">--</span><span class="pln">permanentfirewall</span><span class="pun">-</span><span class="pln">cmd </span><span class="pun">--</span><span class="pln">reload</span><span class="com">#CentOS 6</span><span class="pln"> iptables </span><span class="pun">-</span><span class="pln">I INPUT </span><span class="pun">-</span><span class="pln">p tcp </span><span class="pun">--</span><span class="pln">dport </span><span class="lit">3000</span> <span class="pun">-</span><span class="pln">j ACCEPT service iptables save service iptables restart </span><span class="com">#CentOS 7</span><span class="pln"> firewall</span><span class="pun">-</span><span class="pln">cmd </span><span class="pun">--</span><span class="pln">zone</span><span class="pun">=</span><span class="kwd">public</span> <span class="pun">--</span><span class="pln">add</span><span class="pun">-</span><span class="pln">port</span><span class="pun">=</span><span class="lit">3000</span><span class="pun">/</span><span class="pln">tcp </span><span class="pun">--</span><span class="pln">permanent firewall</span><span class="pun">-</span><span class="pln">cmd </span><span class="pun">--</span><span class="pln">reload</span>#CentOS 6 iptables -I INPUT -p tcp --dport 3000 -j ACCEPT service iptables save service iptables restart #CentOS 7 firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
API使用
关于API
的用法,官方文档说的很详细了,这里就大概列举几个,如下:
<span class="com">#通过远程地址添加种子</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"http://domain.com/file.torrent"</span> <span class="str">"http://localhost:3000/api/url"</span><span class="com">#通过本地文件添加种子</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data</span><span class="pun">-</span><span class="pln">binary </span><span class="str">"my.torrent"</span> <span class="str">"http://localhost:3000/api/url"</span><span class="com">#通过磁力链接添加种子</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"magnet:?xt=urn:btih:..."</span> <span class="str">"http://localhost:3000/api/url"</span><span class="com">#开始种子任务</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"start:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span><span class="com">#停止种子任务</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"stop:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span><span class="com">#删除种子任务</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"delete:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span><span class="com">#查看文件和种子信息</span><span class="pun">/</span><span class="pln">api</span><span class="pun">/</span><span class="pln">files</span><span class="pun">和/</span><span class="pln">api</span><span class="pun">/</span><span class="pln">torrents</span><span class="com">#通过远程地址添加种子</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"http://domain.com/file.torrent"</span> <span class="str">"http://localhost:3000/api/url"</span> <span class="com">#通过本地文件添加种子</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data</span><span class="pun">-</span><span class="pln">binary </span><span class="str">"my.torrent"</span> <span class="str">"http://localhost:3000/api/url"</span> <span class="com">#通过磁力链接添加种子</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"magnet:?xt=urn:btih:..."</span> <span class="str">"http://localhost:3000/api/url"</span> <span class="com">#开始种子任务</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"start:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span> <span class="com">#停止种子任务</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"stop:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span> <span class="com">#删除种子任务</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"delete:${HASH}"</span> <span class="str">"http://localhost:3000/api/torrent"</span> <span class="com">#查看文件和种子信息</span> <span class="pun">/</span><span class="pln">api</span><span class="pun">/</span><span class="pln">files</span><span class="pun">和/</span><span class="pln">api</span><span class="pun">/</span><span class="pln">torrents</span>#通过远程地址添加种子 curl --data "http://domain.com/file.torrent" "http://localhost:3000/api/url" #通过本地文件添加种子 curl --data-binary "my.torrent" "http://localhost:3000/api/url" #通过磁力链接添加种子 curl --data "magnet:?xt=urn:btih:..." "http://localhost:3000/api/url" #开始种子任务 curl --data "start:${HASH}" "http://localhost:3000/api/torrent" #停止种子任务 curl --data "stop:${HASH}" "http://localhost:3000/api/torrent" #删除种子任务 curl --data "delete:${HASH}" "http://localhost:3000/api/torrent" #查看文件和种子信息 /api/files和/api/torrents
外部程序调用
先修改配置文件,通过上面脚本安装的配置文件在你的主目录,比如/root
目录,配置文件cloud-torrent.json
。
修改以下参数:
<span class="com">#外部程序调用参数</span><span class="str">"donecmd"</span><span class="pun">:</span> <span class="str">""</span><span class="pun">,</span><span class="com">#比如我要下载完成后,直接运行/home目录下的rats.sh脚本</span><span class="str">"donecmd"</span><span class="pun">:</span> <span class="str">"/home/rats.sh"</span><span class="pun">,</span><span class="com">#外部程序调用参数</span> <span class="str">"donecmd"</span><span class="pun">:</span> <span class="str">""</span><span class="pun">,</span> <span class="com">#比如我要下载完成后,直接运行/home目录下的rats.sh脚本</span> <span class="str">"donecmd"</span><span class="pun">:</span> <span class="str">"/home/rats.sh"</span><span class="pun">,</span>#外部程序调用参数 "donecmd": "", #比如我要下载完成后,直接运行/home目录下的rats.sh脚本 "donecmd": "/home/rats.sh",
那么下载完成后就会运行该脚本。
一般种子下载完成后,会返回以下参数变量,这里列举下主要的:
<span class="pln">CLD_DIR</span><span class="pun">为下载路径,且为绝对路径</span><span class="pln">CLD_PATH</span><span class="pun">为下载文件名称</span><span class="pln">CLD_SIZE</span><span class="pun">为文件大小</span><span class="pln">CLD_TYPE</span><span class="pun">为调用事件类型,分为</span><span class="pln">files</span><span class="pun">和</span><span class="pln">torrent</span><span class="pun">,分别为种子里单个文件和整体文件</span><span class="pln">CLD_HASH</span><span class="pun">为文件</span><span class="pln">HASH</span><span class="pun">值</span><span class="pln">CLD_DIR</span><span class="pun">为下载路径,且为绝对路径</span><span class="pln"> CLD_PATH</span><span class="pun">为下载文件名称</span><span class="pln"> CLD_SIZE</span><span class="pun">为文件大小</span><span class="pln"> CLD_TYPE</span><span class="pun">为调用事件类型,分为</span><span class="pln">files</span><span class="pun">和</span><span class="pln">torrent</span><span class="pun">,分别为种子里单个文件和整体文件</span><span class="pln"> CLD_HASH</span><span class="pun">为文件</span><span class="pln">HASH</span><span class="pun">值</span>CLD_DIR为下载路径,且为绝对路径 CLD_PATH为下载文件名称 CLD_SIZE为文件大小 CLD_TYPE为调用事件类型,分为files和torrent,分别为种子里单个文件和整体文件 CLD_HASH为文件HASH值
这里随便放一个下载后自动移动的脚本,针对rclone
挂载的文件夹。
<span class="com">#!/bin/bash</span><span class="com">#下载后移动的文件夹路径</span><span class="typ">RemoteDIR</span><span class="pun">=</span><span class="str">"/down/moerats"</span><span class="pun">;</span><span class="kwd">if</span> <span class="pun">[[</span><span class="pln"> $</span><span class="pun">{</span><span class="pln">CLD_TYPE</span><span class="pun">}</span> <span class="pun">==</span> <span class="str">"torrent"</span> <span class="pun">]];</span> <span class="kwd">then</span><span class="kwd">eval</span><span class="pln"> mv \'</span><span class="str">"${CLD_DIR}/${CLD_PATH}"</span><span class="pln">\' </span><span class="str">"${RemoteDIR}"</span><span class="pun">;</span><span class="com">#移动后停止该任务</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"stop:${CLD_HASH}"</span> <span class="str">"http://127.0.0.1:3000/api/torrent"</span><span class="pun">;</span><span class="com">#停止后清除该任务,也就是不会出现在Web界面了</span><span class="pln">curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"delete:${CLD_HASH}"</span> <span class="str">"http://127.0.0.1:3000/api/torrent"</span><span class="pun">;</span><span class="kwd">fi</span><span class="com">#!/bin/bash</span> <span class="com">#下载后移动的文件夹路径</span> <span class="typ">RemoteDIR</span><span class="pun">=</span><span class="str">"/down/moerats"</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">[[</span><span class="pln"> $</span><span class="pun">{</span><span class="pln">CLD_TYPE</span><span class="pun">}</span> <span class="pun">==</span> <span class="str">"torrent"</span> <span class="pun">]];</span> <span class="kwd">then</span> <span class="kwd">eval</span><span class="pln"> mv \'</span><span class="str">"${CLD_DIR}/${CLD_PATH}"</span><span class="pln">\' </span><span class="str">"${RemoteDIR}"</span><span class="pun">;</span> <span class="com">#移动后停止该任务</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"stop:${CLD_HASH}"</span> <span class="str">"http://127.0.0.1:3000/api/torrent"</span><span class="pun">;</span> <span class="com">#停止后清除该任务,也就是不会出现在Web界面了</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">data </span><span class="str">"delete:${CLD_HASH}"</span> <span class="str">"http://127.0.0.1:3000/api/torrent"</span><span class="pun">;</span> <span class="kwd">fi</span>#!/bin/bash #下载后移动的文件夹路径 RemoteDIR="/down/moerats"; if [[ ${CLD_TYPE} == "torrent" ]]; then eval mv \'"${CLD_DIR}/${CLD_PATH}"\' "${RemoteDIR}"; #移动后停止该任务 curl --data "stop:${CLD_HASH}" "http://127.0.0.1:3000/api/torrent"; #停止后清除该任务,也就是不会出现在Web界面了 curl --data "delete:${CLD_HASH}" "http://127.0.0.1:3000/api/torrent"; fi
这里还可以结合TG
机器人啥的一起使用,玩法很多,可以自行结合API
一起使用。
要注意的是,配置调用脚本的时候,需要给予脚本可执行权,并重启程序生效,比如:
<span class="com">#给予可执行权,脚本路径/root/rats.sh</span><span class="pln">chmod </span><span class="pun">+</span><span class="pln">x </span><span class="pun">/</span><span class="pln">root</span><span class="pun">/</span><span class="pln">rats</span><span class="pun">.</span><span class="pln">sh</span><span class="com">#重启程序</span><span class="pln">systemctl restart cloud</span><span class="pun">-</span><span class="pln">torrent</span><span class="com">#给予可执行权,脚本路径/root/rats.sh</span><span class="pln"> chmod </span><span class="pun">+</span><span class="pln">x </span><span class="pun">/</span><span class="pln">root</span><span class="pun">/</span><span class="pln">rats</span><span class="pun">.</span><span class="pln">sh </span><span class="com">#重启程序</span><span class="pln"> systemctl restart cloud</span><span class="pun">-</span><span class="pln">torrent</span>#给予可执行权,脚本路径/root/rats.sh chmod +x /root/rats.sh #重启程序 systemctl restart cloud-torrent
暂无评论内容