背景

在2019年计划着弄个nas玩玩,这不正好蜗牛车发动,就忍不住上车了。
装了黑裙,第一次接触群晖,也没啥经验,折腾这个全自动订阅下载已经前前后后快1一个月了,具体也是记不清楚了。
期间也求助了不少人和查看了不少别人的文章和教程,因为每个人遇到的坑不一样,所以很多坑都是一个一个踩出来的。
郑重声明:本文教程只记录下了本人在折腾过程中遇到的坑,希望能帮助到各位。由于在折腾的过程中很多都是尝试性操作,可能我提到的这些尝试性操作并不会影响结果,所以我只能说我这么操作下来是没什么问题的。

需求

这个还是为了PT下载为主的操作,相信很多人都懂的,懒是折腾的根源,罪恶的源泉。
也是研究了主力下载工具,根据隔壁大神推荐最终是选择了Transmission加Flexget的组合来实线PT下载。

工具

ssh客户端,例如putty。文件传输工具,例如winscp。关于工具的选择请查,看最后章节遇到的问题的第5点,看完回到这边。

原理

这个涉及到Transmission和Flexget的订阅原理,简单说下,Transmission是没有自动订阅功能的,但是他有个获取某个特定目录里面的Torrent的功能,所以,Flexget的功能就是把你要下的Torrent下载到Transmission的监控目录,然后Transmission就会自动把里面的Torrent加载好,下载。

准备

本人为双网口B款,在装黑裙的过程中也算踩了不少坑,明明是支持UEFI的,但是UEFI死活启动不起来,最后无奈MBR下驱动了,我采用的方案是XPEnology Tool V1.4.2(点击直达)的1.03b的DS3617XS引导和版本为DSM 6.2 23739的DS3617XS原版镜像的国外论坛的安装方法(点击直达)。如果有时间我另外写安装的详细过程吧。

设置root密码和权限的问题:这部分网上教程应该比较烂了,我就少写一点。
admin账户链接ssh登陆以后出现绿色字体的admin@xxxxxx应该显示你设置的主机用户名),然后输入sudo su -(注意u-之间有一个空格!!!)。再次输入admin密码就会出现绿色字体root@xxx
输入synouser --setpw root xxx(xxx是你打算要修改的root的密码 建议修改成和admin账户一样,注意-–前有一个空格),回车,出现绿色字体的root@xxx,这样就成功的将ROOT设置好密码了。当然为了避免遗忘,还是建议你设置成admin账户的密码吧。
这里有个东西需要注意一下,需要打开root的登录功能。具体的操作为:用上述方法进入到root后,cd /etc/ssh
请输入图片描述
然后vi sshd_config,找到的位置,把#PermitRootLogin xxxx这行改成PermitRootLogin yes,记得去掉前面的#,然后按ESC,输入保存命令:wq(注意是英文的且小写),回车即可。
请输入图片描述
请输入图片描述
重启ssh服务,这里有个偷懒的方法:去网页上禁用启动ssh功能,应用,再勾选,在应用即可。从现在开始你可以用root账号登录ssh和访问文件了。
请输入图片描述
如果不能登录可以看看是不是这个配置文件的权限不够什么的,在网上的一篇教程中,看到给sshd_config赋予755的权限,命令为:chmod 755 sshd_config
从这里开始请使用root登录,以下所有操作均在root下进行的。

另外Transmission和Flexget都是在群晖的条件中心中安装的。如果已经操作过,请忽略本段。

  • 登录到群晖后台->套件中心->设置->套件来源->点击新增。在弹出的界面中填入以下地址:http://packages.synocommunity.com/。加了以后你的套件中心左边就会多出一个社群。
  • 信任层级允许:登录到群晖后台->套件中心->设置->常规->信任层级->选择任何发行者确定就好了。
  • 启用beta版插件:登录到群晖后台->套件中心->设置->试用版,把是,我想体验试用版勾起来确定就好了。

准备工作完成。

安装Transmission以及美化

这部分肯定也是网上遍地是教程,所以我这边随便写一点。
听闻在6.X以后好像需要权限变了,在6.X系统以后所有跟下载相关的用户好像都变成sc-download这个用户了
请查看最后章节遇到的问题的第1点,看完回到这边。

打开套件中心->社群->找到Transmission,安装它,装好之后会自动启动安装程序。
请输入图片描述
请输入图片描述
请输入图片描述
安装的时候会有三个选项(PS:貌似现在新版本已经直接跳过了这个步骤,而是设置一个下载共享目录)
第一行是Transmission下栽的目录,就是上面那一步创建的下载目录,填进去。记住他,在Flexget配置文件里需要它。
第二行是Transmission的监控目录,就是那一步创建的监控目录,填进去。记住他,在Flexget配置文件里需要它。
第三行是Transmission的临时目录,直接留空好了。
下一步是登录到Transmission的账号密码,自己填写就好了,在下一步就是安装了,安装过程中会提示目录不存在啥的,我这里的处理是直接手工建立该文件夹(经过多次的实践,貌似在正确的权限下不会自动创建文件夹的,不过我还是手动创建了,而且把创建的文件夹权限赋给了sc-download用户组,可以是读写,我是赋予了完全控制)。
不出意外能正常启动了,不能启动请使用玄学方法万能重启大发!

美化也是很简单的:

  • 执行下载wget -N https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh --no-check-certificate
  • 备用地址wget https://gitee.com/culturist/transmission-web-control/raw/master/release/install-tr-control-gitee.sh --no-check-certificate,作者gitee同步地址,这样就不需要镜像站了,貌似作者很久没同步更新gitee了,脚本有bug,安装后回404,具体解决方案参见群晖安装transmission-web-control后报错404 Not Found,如果还不行,百度找一下github镜像站,把其中的github.com替换成对应的网址就行了
  • 作者好久没更新维护过了,目前有bug,可以键入该命令全自动执行。curl -s https://gitee.com/devonzhang/transmission-web-control-install-script-fixed/raw/master/install-tr-control-gitee.sh | bash -s auto,详情参见[群晖安装transmission-web-control后报错404 Not Found]14
  • 执行下载wget -N https://raw.githubusercontent.com/ted423/transmission-web-control/master/release/install-tr-control-cn-tr4_ted423.sh --no-check-certificate(最新脚本,支持4.0版本,支持DSM7,无需修复)
  • 执行安装bash install-tr-control-cn-tr4_ted423.sh
  • 我觉得下一步不需要解释了,都是中文的,选择1(手动无奈)。

默认9091端口,你的ip:9091端口快去看看吧。

安装Flexget和相关组件及配置Flexget

  • 以下教程由于本人好久未使用过了,可能已经不够标准,仅供参考
  • 以下教程由于本人好久未使用过了,可能已经不够标准,仅供参考
  • 以下教程由于本人好久未使用过了,可能已经不够标准,仅供参考
    接下来安装Flexget,同理打开套件中心->社群->找到Flexget,安装它,安装好后,一定要重启群晖,为嘛?请查看最后章节遇到的问题的第2点,看完回到这边。

重启完成后,去配置Flexget的配置文件(请跳到Flexget的配置文件章节阅读),配置好后,这时候打开winscp,到/volume1/@appstore/flexget/var文件夹下,上传配置文件。
关键一步,直接对着config.yml文件->右键->属性,把权限改成0777(理论上0755也行,我直接一点。可能读取不到配置文件),另外把flexget.log也改成0777(理论上0755也行,我直接一点。这里可能会遇到没有日志文件,理论上运行过配置文件的检查的时候会生成的,如果已经有了的话,则可能因为在配置文件的时候没有权限而没有日志写入)。
在启动之前我们还得装个插件,这个插件是用于去调用Transmission的,命令为:/volume1/@appstore/flexget/env/bin/pip2.7 install transmissionrpc
请输入图片描述
此时可以去启动了,可以去套件中心启动。这里如果遇到启动不起来的话,请看日志。如果提示是目录找不到,如果你的目录是确实存在的话,请查看最后章节遇到的问题的第4点,看完回到这边。

如果是在套件中心启动的话,貌似是不需要下面的操作的,默认会帮你开启自启动的样子,如果你是和我一样命令启动的话需要下面的操作。
添加开启自启动:vi /etc/rc.local,如果文件不存在,会被创建的,假设文件一开始是没有的,把启动命令填写进去,如下

#!/bin/sh
/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml daemon start -d &
exit 0

其中第二条就是我们的启动命令,在结尾处加上 &(有个空格)。
ESC:wq回车保存后,执行chmod +x /etc/rc.local命令来添加执行权限。
不出意外的话现在开始可以过上懒人PT下载生活了。
另外有补充的东西请查看最后章节遇到的问题的第6点开始。

Flexget的配置示例

#web_server:
#  bind: 0.0.0.0
#  port: 50001
#  ssl_certificate: '/etc/ssl/private/myCert.pem'
#  ssl_private_key: '/etc/ssl/private/myKey.key'
#  web_ui: yes
#  base_url: /flex
#  run_v2: yes

schedules:
  - tasks: AA1
    schedule:
      minute: "*/5"
  - tasks: BB2
    schedule:
      minute: "*/5"

tasks:
  AA1:
    rss: https://xxxxxxxxxxxxxxx
    accept_all: yes
    download: /volume1/video/pt/watch
    template: Transmission

  BB2:
    rss: https://xxxxxxxxxxxxxxx
    accept_all: yes
    download: /volume1/video/pt/watch
    template: Transmission

templates:
  Transmission:
    transmission:
      host: localhost
      port: 9091
      username: 你的用户名
      password: "你的密码"
    free_space:
      path: /volume1/video/pt/downloads
      space: 10240
# 注释
#web_server: # 网页服务正式的时候不需要
#  bind: 0.0.0.0 # 绑定的ip
#  port: 50001 # 端口号
#  ssl_certificate: '/etc/ssl/private/myCert.pem' # 证书
#  ssl_private_key: '/etc/ssl/private/myKey.key' # 证书
#  web_ui: yes # 是否开启webui
#  base_url: /flex # 路由路径,我这边打开了会提示不存在这个配置
#  run_v2: yes # 2.0版本的ui吧,貌似官网是这么说的,不过我这边打开了会提示不存在这个配置

schedules: # 定时任务
  - tasks: AA1 # 任务名 注意前面的“-”的后面是有一个空格的
    schedule: # 和上面的schedules有啥区别咱也不知道,咱也不敢问
      minute: "*/5" # 执行的频率,示例为5分钟一次
  - tasks: BB2
    schedule:
      minute: "*/5"

tasks: # 任务
  AA1: # 任务名,和上面的呼应
    rss: https://xxxxxxxxxxxxxxx # rss链接
    accept_all: yes # 是否下载全部,我订阅的东西都是自己想下载的,所以直接选择下载全部
    download: /volume1/video/pt/watch # 种子文件下载目录,这个目录应该是安装Transmission的时候填写的监控目录
    template: Transmission # 使用的下载工具模板,我们用的是Transmission

  BB2:
    rss: https://xxxxxxxxxxxxxxx
    accept_all: yes
    download: /volume1/video/pt/watch
    template: Transmission

templates: # 下载的工具模板配置
  Transmission: # 对应的tasks里的template
    transmission: # 不用改
      host: localhost # 地址,不用改
      port: 9091 # 端口,默认9091
      username: 你的用户名 # 需要我解释吗?
      password: "你的密码" # 还问打死你
    free_space: # 下载的空间?
      path: /volume1/video/pt/downloads # 下载的目录
      space: 10240 # 给上述空间留下的最小空间,即低于这个值不下载,单位好像是MB。

Flexget对配置文件有极高的缩进要求,多一个空格少一个空格都可能配置不通过,必须遵循YAML格式,即:子项比所属父项多缩进两个半角空格
关于命令问题,请查看最后章节遇到的问题的第3点,看完回到这边。
这里对配置文件可以进行检查,在安装好后,可以运行/volume1/@appstore/flexget/env/bin/flexget check进行检查。
上述的配置文件可能会提示在- tasks: AA1处(提示是行号,BB2处同理)缺少:,这个是正确的,他只是进行了粗鲁的的语法检测,具体的检测可以在完全配置好后机型测试。测试的方法为/volume1/@appstore/flexget/env/bin/flexget --test execute,还可以去使用更加详细的日志文件方法,命令为/volume1/@appstore/flexget/env/bin/flexget --test --loglevel debug execute
检查的第二个问题,这个问题我一开始是没有遇到了,直到后面才遇到的,而且很多教程里也没有写到这点,检查的时候提示缺少service_identity,处理方法是是利用python安装,这里使用的是Flexget下的python。命令为:/volume1/@appstore/flexget/env/bin/pip2.7 install service_identity
请输入图片描述
这是我的检查通过的截图。
请输入图片描述
理论上应该只有最后2条输出的,根据上述的原因,才多了指定配置文件1行,非错误提示2行。

遇到的问题

1.权限问题

群晖->控制面板->共享文件夹->用户群组->sc-download->编辑->权限。如下图:
请输入图片描述
请输入图片描述
把你要给权限的盘符的可读写权限勾起来。保存就好了。

回去吧sao年!

2.关于安装好后Flexget需要重启的问题

不重启的话貌似系统读不到Flexget一些文件,重启后会正确加载,而且在我折腾的过程中还涉及到Flexget的权限问题很是奇葩。

回去吧sao年!*2

3.关于Flexget运行命令的问题

由于Flexget没有加入系统的环境变量,所以关于运行它时候必须是/volume1/@appstore/flexget/env/bin/flexget,其中volume1是我的安装该套件的目录,因人而异。

我这边在折腾的过程中有时候遇到了提示找不到配置文件,这时候就要强制指定配置文件了,具体为-c /volume1/@appstore/flexget/var/config.yml,比如检查文件的示例的命令就为/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml check

回去吧sao年!*3

4.关于Flexget无法启动的问题

我也不知道什么情况,在套件中心启动的话一直提示启动失败,然后在日志文件里写着找不到我配置的/volume1/video/pt/watch/volume1/video/pt/downloads的两个目录,事实上目录存在的,而且权限也是有的,很是奇怪。然后我在网上找到了命令启动的方式,如下:/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml daemon start,这样启动是是不对关闭命令行的,可以用于测试的时候。如果这个测试通过,按CTRL+C退出,然后运行/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml daemon start -d(多了-d),这样便是正常启动了。

回去吧sao年!*4

5.关于文件传输工具的选择

不知道为什么我手头的Xftp工具无法以root身份SFTP协议连接群晖(群晖服务),然后使用WinSCP可以用SCP协议连接。
个人怀有是群晖自带的SFTP协议是只能连接群晖里的正常用户的(如默认的admin)的共享文件夹下的目录,而root身份SFTP协议没有系统目录权限(应该是没开),所以提示“无法与'192.168.X.X'连接”。

回去吧sao年!*5

6.关于Flexget其他问题

可以去日志文件里查看,路径为/volume1/@appstore/flexget/var/flexget.log
也可以敲命令/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml status
如果更新了配置文件,又不想重启的话可以使用/volume1/@appstore/flexget/env/bin/flexget -c /volume1/@appstore/flexget/var/config.yml daemon reload-config

后记

其实遇到的问题还有很多一时间想不起来,我慢慢补充吧。

Last modification:April 21st, 2023 at 09:04 am
如果觉得我的文章对你有用,请随意赞赏