文章目录

  • QNAP+Transmission
  • 目标
  • 硬件及系统
  • 安装 Transmission
  • 安装 Transmission Web Control
  • 启动 Transmission
  • 登录 Transmission
  • 配置 Transmission
  • 自定义限速时间
  • 修改Transmission Web 端口号
  • 使transmission 端口测试显示开启
  • 问题描述
  • 错误原因
  • 解决办法:
  • 利用反向代理配置HTTPS访问
  • ssl 证书验证问题


QNAP+Transmission

目标

QNAPTS-453Dmini上安装Transmission并进行设置。

硬件及系统

  • QNAPTS-453Dmini
  • 8G内存
  • QTS 5.1.0.1986(2022/03/24)
  • qnap 容器 add HOST qnap manager_网络


安装 Transmission

  1. 下载:从QNAP商店下载架构为TS-NASX86_64的安装包QTransmission3_3.0.0.2_x86_64.qpkg1
  2. 安装:QTSAPPCenter,点击右上角的手动安装,通过浏览选定刚刚下载的qpkg文件后点击安装,等待安装完成。2

安装 Transmission Web Control

  1. 下载:从QNAP商店下载架构为TS-NASX86_64的安装包TransmissionWC_1.6.1_x86_64.qpk1
  2. 安装:QTSAPPCenter,点击右上角的手动安装,通过浏览选定刚刚下载的qpkg文件后点击安装,等待安装完成。2

启动 Transmission

QTS中启动TransmissionTransmission web control

登录 Transmission

QTS中点击左上角的主菜单(三条横线)图标,找到Transmission,单击打开,或者也可以直接通过网址nas ip:49092 打开,用户名和密码均为qnap

配置 Transmission

  1. 启用QTSssh连接:主菜单>>控制台>>网络文件服务>>Telnet/SSH,勾选允许SSH连接(只有管理员群组可远程登陆)后点击应用;
  2. 建立 SSH 连接:通过CMD或专门的ssh连接管理软件,例如 finalshell,远程连接 QTS
  3. 停止运行transmission
  4. 使用vim 打开配置文件:
sudo vim /share/CACHEDEV1_DATA/.qpkg/QTransmission3/etc/settings.json

其中各参数含义如下,注意:json 并不支持注释,下文代码块中的 #注释只是为了方便说明3

{
    "alt-speed-down": 50,  # 限速时段下载限速值
    "alt-speed-enabled": false,  
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,  # 时段限速日期(星期几),127 表示每天,
    # 更复杂配置参考官网。用 7 位二进制数表示,然后转换成十进制数,
    # 0000001 表示周日,1000000 表示周六,0000010 表示周一,
    # 0000100 表示周二。如果你只要在周末限速,该数应该 1000001,
    # 转换为十进制就是 65
    "alt-speed-time-enabled": false, # 启用限速,为 false 时,以上计划配置则不生效,
    # 生效时会自动禁用 alt-speed-enabled 配置,二者只能选一个
    "alt-speed-time-end": 1020,  # 限速时段结束时间,这个配置表示的是凌晨零点到
    # 开始时间的分钟数,比如 7:00(nas系统里的时间) 就是 7*60=420。
    "alt-speed-up": 50,  # 限速时段上传限速值,单位KB/S
    "bind-address-ipv4": "0.0.0.0",  # IPv4 地址绑定,一般不要改动
    "bind-address-ipv6": "::",  #IPv6 地址绑定,一般不要改动
    "blocklist-enabled": false,  # 启动白名单,默认不启动,需要启动改为 true
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 1024,  #缓存大小,以 MB 为单位,建议设大一些,
    # 避免频繁读写硬盘而伤硬盘,建议设为内存大小的 1/6~1/4
    "dht-enabled": true,  #关闭 DHT(不通过 tracker 寻找节点)功能,
    # 不少 PT 站的要求,但 BT 下载设置为 true 会使得下载更好
    "download-dir": "/share/Public",  #下载的内容存放的目录
    "download-queue-enabled": true,  # 下载队列开关
    "download-queue-size": 5,  # 下载队列数量
    "encryption": 1,  # 加密。指定节点的加密模式,默认 1。
    # 0 表示关闭 , 0= 不加密,1= 优先加密,2= 必须加密
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/share/Public",  # 临时文件路径
    "incomplete-dir-enabled": true, 
    "lpd-enabled": false,  #禁用 LDP(本地节点发现,用于在本地网络寻找节点), 不少 PT 站的要求
    "message-level": 2,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,  # 全局连接数
    "peer-limit-per-torrent": 50,  # 每个种子最多的连接数
    "peer-port": 51413,  # 传入端口,预设的 port 口
    "peer-port-random-high": 65535,  # 传入端口随机值范围上限
    "peer-port-random-low": 49152,  # 传入端口随机值范围下限
    "peer-port-random-on-start": false,  # 启用随机端口,默认关闭,不建议改为 true
    "peer-socket-tos": "default",  
    "pex-enabled": true, # 是否启用用户交换,默认为 true,关于 PEX,
    # 有兴趣的朋友可参考 http://en.wikipedia.org/wiki/Peer_exchange,对于只用 PT 的朋友,
    # 可以设为 false, 禁用 PEX(节点交换,用于同已与您相连接的节点交换节点名单), 不少 PT 站的要求
    "port-forwarding-enabled": false,  # 启用端口转发(uPnP),如果路由支持并且也开启了 uPnP,
    # 则路由会自动做端口映射,但是需要注意的是如果内网有几台机器同时使用 transmission,
    # 就必须更改 peer-port 值为不一样
    "preallocation": 1,  # 预分配文件磁盘空间,0= 关闭,1= 快速,2= 完全。
    # 建议取 1 开启该功能,防止下载大半了才发现磁盘不够。取 2 时,可以减少磁盘碎片,但速度较慢。
    "prefetch-enabled": false,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 1,  # 分享率限制
    "ratio-limit-enabled": true,  # 启用分享率限制,默认不启用
    "rename-partial-files": true,  #在未完成的文件名后添加后缀.part,false= 禁用
    "rpc-authentication-required": true,  # 远程控制需要验证,默认为需要
    "rpc-bind-address": "0.0.0.0",  # 远程控制地址绑定,允许 IP 通过 RPC 访问,
    # 默认值表示任何地址都可以访问
    "rpc-enabled": true,   # 启用远程控制,默认启用
    "rpc-host-whitelist": "",  # 白名单,如果需要远程访问,最好配置
    "rpc-host-whitelist-enabled": true,  # 是否开启主机白名单
    "rpc-password": "{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",  #web-ui 的密码,可直接修改,
    # 重新运行或者 reload 服务的时候密码会自动 HASH 增加安全性
    "rpc-port": 49092,  # 默认 web-ui 的 port 口,也是远程控制端口,可自行更改
    "rpc-url": "/transmission/",
    "rpc-username": "qnap",  #默认登入名称,也是远程控制用户名, 默认为 qnap
    "rpc-whitelist": "127.0.0.1",  # 远程控制白名单,默认值为所有地址,支持通配符*,如 192.168.2.*
    "rpc-whitelist-enabled": false,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "seed-queue-enabled": false,
    "seed-queue-size": 10,
    "speed-limit-down": 100,  #平时的下载限速,单位KB/s
    "speed-limit-down-enabled": false,  #启用平时下载限速
    "speed-limit-up": 1000,  #平时上传限速,单位KB/s
    "speed-limit-up-enabled": true,  #启用平时上传限速
    "start-added-torrents": true,
    "trash-original-torrent-files": false,
    "umask": 2,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true,
    "watch-dir": "/share/Public/torrent",  # 监听文件夹目录
    "watch-dir-enabled": true  # 是否监听文件夹,经测试无效

自定义限速时间

目标:每天定时(北京时间20:0023:59)启动限速,上传限速2500 KB/s,下载限速30000 KB/s
注意:json 并不支持注释,下文代码块中的 #注释只是为了方便说明

"alt-speed-up": 2500,  # 限速时段上传限速值,单位KB/S
    "alt-speed-down": 30000,  # 限速时段下载限速值,单位KB/S
    "alt-speed-enabled": false,  # 启用全局限速
    
    "alt-speed-time-day": 127,  # 时段限速日期(星期几),127 表示每天,
    # 更复杂配置参考官网。用 7 位二进制数表示,然后转换成十进制数,
    # 0000001 表示周日,1000000 表示周六,0000010 表示周一,
    # 0000100 表示周二。如果你只要在周末限速,该数应该 1000001,
    # 转换为十进制就是 65
    "alt-speed-time-begin": 1200,  # 北京时间20点,20*60=1200
    "alt-speed-time-end": 1439,  # 北京时间23点59分,24*60-1=1439
    # 限速时段结束时间,这个配置表示的是凌晨零点到
    # 开始时间的分钟数,比如 7:00 就是 7*60=420。
    # 经测试,该时间将同 NAS 当前时间直接进行比较,并不一定是 GMT 时间!!!
    "alt-speed-time-enabled": true, # 启用限速,为 false 时,以上计划配置则不生效,
    # true 表示开启自动限速,则在限速时间段内将会自动启动限速
    # 生效时会自动禁用 alt-speed-enabled 配置,二者只能选一个

效果:在限速时间段内:

qnap 容器 add HOST qnap manager_Web_02

修改Transmission Web 端口号

  1. 启用QTSssh连接:主菜单>>控制台>>网络文件服务>>Telnet/SSH,勾选允许SSH连接(只有管理员群组可远程登陆)后点击应用;
  2. 建立 SSH 连接:通过CMD或专门的ssh连接管理软件,例如 finalshell,远程连接 QTS
  3. 停止运行Transmission
  4. 使用vim 打开配置文件:
sudo vim /share/CACHEDEV1_DATA/.qpkg/QTransmission3/etc/settings.json
  1. 修改rpc-port
"rpc-port": xxxxx,  # 修改xxxxx为自己的端口号
  1. 使用vim 打开配置文件:
sudo vim /mnt/HDA_ROOT/.config/qpkg.conf
  1. 定位至Transmission并修改:
[QTransmission3]
Status = complete
Name = QTransmission3
Build = 20200626
Display_Name = Transmission
Version = 3.0.0.2
Author = QoolBox
QPKG_File = QTransmission3.qpkg
Date = 2022-01-16
Shell = /share/CACHEDEV1_DATA/.qpkg/QTransmission3/QTransmission3.sh
Service_Port = xxxxx  # 修改xxxxx为自己的端口号
Volume_Select = 3
Install_Path = /share/CACHEDEV1_DATA/.qpkg/QTransmission3
WebUI = /transmission
Web_Port = xxxxx  # 修改xxxxx为自己的端口号
RC_Number = 161
FW_Ver_Min = 4.2.6
FW_Ver_Max = 5.0.0
Enable = TRUE

[TransmissionWC]
Status = complete
Name = TransmissionWC
Build = 20201002
Display_Name = Transmission Web control
Version = 1.6.1
Author = QoolBox
QPKG_File = TransmissionWC.qpkg
Date = 2022-01-16
Shell = /share/CACHEDEV1_DATA/.qpkg/TransmissionWC/TransmissionWC.sh
Install_Path = /share/CACHEDEV1_DATA/.qpkg/TransmissionWC
RC_Number = 162
FW_Ver_Min = 4.2.6
FW_Ver_Max = 5.0.0
Enable = TRUE

使transmission 端口测试显示开启

问题描述

在上述配置文件中指定的"peer-port"transmission同其他peer通信的端口号,在transmission 3.0.0.2中,在QNAP NASQuFirewall中添加该端口的IPV4IPV6的通行规则后,并在路由器中配置端口转发后,transmission web UI中的端口测试仍不通过,具体表现在网页端点击Test the port后,一直显示testing而没结果,而在windows的Transmission Remote GUI 中则会提示http error 400 bad request。但在https://canyouseeme.org/中测试端口是开启的。

错误原因

端口测试会访问portcheck.transmissionbt,但该域名的DNS解析中IPV6优先级高于IPV4,而我们通过IPV4访问会返回正确结果,而通过IPV6访问则会返回HTTP/1.1 400 Bad Request4

$ curl -i -4 http://portcheck.transmissionbt.com/52955  # 我的 peer port 为52955
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Sat, 21 May 2022 08:40:37 GMT
Content-Type: text/html; charset=ISO-8859-1
Transfer-Encoding: chunked
Connection: keep-alive

$ curl -i -6 http://portcheck.transmissionbt.com/52955
HTTP/1.1 400 Bad Request
Server: nginx/1.10.3 (Ubuntu)
Date: Sat, 21 May 2022 08:40:50 GMT
Content-Type: text/html; charset=ISO-8859-1
Transfer-Encoding: chunked
Connection: keep-alive

解决办法:

  1. 启用QTSssh连接:主菜单>>控制台>>网络文件服务>>Telnet/SSH,勾选允许SSH连接(只有管理员群组可远程登陆)后点击应用;
  2. 建立 SSH 连接:通过CMD或专门的ssh连接管理软件,例如 finalshell,远程连接 QTS
  3. 运行命令:
sudo vim /etc/hosts
  1. hosts文件尾部添加4
87.98.162.88 portcheck.transmissionbt.com
  1. 再次测试端口,验证结果:

利用反向代理配置HTTPS访问

登录威联通NAS网页端,控制台>>网络访问>>反向代理,点击添加,规则名称可填写transmission

来源这一部分表示我们从外部将通过哪个域名的哪个端口来经HTTPS访问NAS内部的Transmission,故协议选择HTTPS域名填写访问NAS用的域名,端口填写一个未被NAS内各种服务占用的端口(端口1),访问控制配置文件选择允许所有连接

相反的,目标这一部分表示是我们要通过这个代理来访问NAS内部的哪个服务,这里我们是为了访问Transmission,内部是没有SSL的,故协议选择HTTP主机名保持默认,端口号填写内网中访问Transmission Web UI 的端口号(端口2)。然后点击应用,在反向代理对话框中将列出新添加的Transmission规则,状态已启用。然后再在路由器中配置端口转发,将来源部分填写的端口号(端口1)转发出去,便可通过外网https://domain:端口1访问Transmission Web UI

qnap 容器 add HOST qnap manager_qnap 容器 add HOST_03


qnap 容器 add HOST qnap manager_Web_04


qnap 容器 add HOST qnap manager_端口号_05

ssl 证书验证问题

  • 问题:黄种 could not connect to tracker
  • 解决办法:

方法1. 从 qnapclub 依次安装 QperlCACert,无需重启 transmission, 等待片刻便可连接 https tracker 成功。5

方法26: 禁用transmissionssl验证
在AppCenter中将TR停止掉,然后,

You just need to add 2 lines in the QTransmission3.sh file under the .qpkg folder QTransmission3:
(我的是这个文件:/share/CACHEDEV1_DATA/.qpkg/QTransmission3/Qtransmission3.sh,需要通过ssh登入,使用sudo权限来写入)

TR_CURL_SSL_NO_VERIFY=1
export TR_CURL_SSL_NO_VERIFY

The file should look like this:

#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="QTransmission3"
TR_CURL_SSL_NO_VERIFY=1
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
export QNAP_QPKG=$QPKG_NAME
export QPKG_ROOT QPKG_NAME
export TR_CURL_SSL_NO_VERIFY
...

更改好后重启transmission即可。