群晖系统中,transmission如何屏蔽迅雷

安装包:transmission-3.00

众所周知,迅雷作为一款P2P下载软件,一直秉承着“人人为我”的精神,对正规P2P下载用户进行“吸血”行为(只下载不上传或少上传,优先上传迅雷用户,甚至是迅雷会员用户),严重破坏了P2P下载的公平性。

本文将介绍如何通过交叉编译,实现群辉系统中Transmission对迅雷的屏蔽。

随着NAS的普及,越来越多的用户选择NAS作为自己的下载机/做种机,群辉系统中实现离线下载的几个比较方便的方法分别是:

  1. 使用DSM自带的下载程序(Download Station),分析源码后发现P2P部分仍然是Transmission;
  2. 通过第三方源安装Transmission。
  3. 通过Docker安装一些P2P下载软件(例如qBittorrent)。

对于没有基础的或者希望少折腾的用户,都是比较不错的办法。然而,以上几种方法都无法实现对迅雷的屏蔽,好在提供Transmission第三方安装源的SynoCommunity为我们提供了方便的交叉编译工具,这让自己改装Transmission成为可能。

通过Docker安装其它可以屏蔽迅雷的P2P客户端,例如superng6/qbittorrentee和johngong/qbittorrent,都实现了屏蔽迅雷的功能。但是上述方法有一定的局限性,因为并不是所有群辉都可以开启Docker。

而本文介绍的通过交叉编译生成transmission的方案解决了全系群辉的适配问题。

硬盘和带宽资源本就宝贵,岂能容忍迅雷的滥用。

本文撰写时相关工具及系统版本:

  • Windows 10, Version 1903, Build 18362 or higher(为了使用WSL 2,WSL1+Docker我没有实验过)
  • Docker Desktop Community, Version 2.3.0.4, stable
  • DSM 6.2.3-25426 Update 2
  • DS418play
  • CPU: INTEL Celeron J3355
  • spksrc official version: commit 4593f81
  • Transmission official source version: 3.00 stable

Docker怎么安装和Windows怎么升级,我就不做过多介绍了,直接切入正题。

设置编译环境

拉取修改过的spksrc

1
git clone --config core.autocrlf=false https://github.com/firedent/spksrc.git 

拉取docker镜像

1
2
3
4
# 此处为了确保下载的Docker镜像与本教程绝对一致,拉取了指定digest。
# 拉取最新Docker镜像可使用
# Docker pulldocker synocommunity/spksrc
docker pulldocker synocommunity/spksrc

启动Docker镜像并挂载本地目录

Windows下,请使用绝对目录

Windows下,请使用绝对目录

Windows下,请使用绝对目录

1
2
3
4
5
6
# 请自行将‘~/spksrc’替换第一步中git拉取的目标目录
# 例:git将代码拉取到了~/code/spksrc。docker run -it -v ~/code/spksrc:/spksrc synocommunity/spksrc /bin/bash
docker run -it -v ~/spksrc:/spksrc synocommunity/spksrc
# Windows下,需要将其替换为绝对目录
# 使用pwd命令获取绝对目录
docker run -it -v C:\Users\zscself\spksrc:/spksrc synocommunity/spksrc

进行编译

经过上述步骤,你已进入Docker容器中

进入这个页面查看你的CPU架构,并对下面的代码进行替换

1
2
3
4
5
6
7
8
make setup
cd spk/transmission/
# 注意对apolloalke和6.2.2进行替换
# 例:目标机器是DS414slim,系统是DSM 5.2
# make spk-transmission-armada370-5.2
make arch-apollolake-6.2.2
# 点上一支烟,泡上一杯茶,耐心等待(不知道为啥,Windows编译速度没有Debian虚拟机快)
# 生成的安装包在/spk/pakage

安装

直接上传安装包,在“套件中心”选择“手动安装”即可。

本教程完成于2020.9.1,最新在线版本为3.00-18,因此使用自己编译的软件包可以直接覆盖安装,原有的下载记录不会丢失。如果在线版本比自编译新,会出现“无法降级安装”的警告。解决办法是修改SPK_REV。

1
2
3
4
5
6
7
8
9
# cross/transmission/Makefile
SPK_NAME = transmission
SPK_VERS = 3.00
# 大于等于在线版本
SPK_REV = 18
SPK_ICON = src/transmission.png

DEPENDS = cross/busybox cross/$(SPK_NAME)

我做了什么

  1. 修改Transmission源码,使其具备屏蔽迅雷客户端的能力。详见:在Debian上修改并编译Transmission屏蔽迅雷吸血
  2. 将修改后的源码打包,上传至GitHub。貌似直接打包GitHub的Transmission源码不行,好像是因为没有经过Autotools处理,所以我就直接修改了官方的releases。Autotool
  3. 将spksrc源码中的Transmission官方源码地址替换为上方地址。详见:Comparing changes

安装包

得益于GitHub Actions和SynoCommunity已经编写好的配置文件,做到了自动化云端编译。

DSM6.1和7.0下不同CPU架构的安装包:transmission-3.00

NAS对应的架构请参考:Architecture per Synology model

参考资料

群晖系统中,transmission如何屏蔽迅雷

https://blog.zscself.com/posts/4e4b2cfd/

作者

F!redent

发布于

2020-08-28

更新于

2021-12-15

许可协议

CC BY-NC-SA 4.0

评论