如何科学地在Unraid中安装下载利器Transmission,看这一篇就够了
创作立场声明:这篇文章有点干,少了个人主观的东西,多的都是文字步骤说明。站内同类型题材的文章很多很多,但还是要写,就是想把自己实践过程中的遇到的问题分享一下,希望对大家有帮助。
名词解释:
AIO:All-In-One,通过虚拟化、docker等技术,在一台主机集成多种功能,包括但不限于NAS, 下载,影音服务,甚至HTPC
前言
上一篇刚刚用G4620+B150+16G组了个新的AIO服务器,如果你和我一样,暂时没有条件组万兆网络,对磁盘速度要求不高,宿主机用的unraid方案就可以了。 简单测试了一下,带两块硬盘,cpu锁3.0GHz,功耗在40w。因为硬盘校验等功能会占用CPU,实际功耗以及使用效果,要等四块硬盘全部迁移过去,设置好校验盘后再出文章。
因为玩pt的缘故,之前一直用群晖的Download Station,但web界面响应太慢,体验了Transmission后就停不下来了,所以在上次换黑群的时候就替换成了Transmission。又因为Docker环境轻量又方便,所以决定在unraid环境下,用docker部署transmission。把安装过程中遇到的问题梳理一下,整理了这篇Docker环境下Transmission安装指南。
下面的内容建立在unraid已经配置完毕,可以正常上网的前提下。本文尽量面向小白,所以能不用到shell脚本的地方,就尽量不用。如果有概念需要解释的地方,我都会用“引用”的方式,以尽量通俗易懂的文字解释一下。本文既可以作为小白手把手操作的教程,也可以用作老司机查阅问题的指南。
目录
1.安装应用商城
1.1 修改hosts
1.2 安装商城
2.Docker加速
3.安装Transmission
4.安装好看的transmission-web-control
5.账户密码验证
6.公网访问
7.数据迁移
1.安装应用商城
unraid和大多数nas操作系统一样,本质上是一个linux,这些操作系统对docker、vm等功能编写WebUI,方便不熟悉linux操作的普通用户也能使用一些高级的功能。unraid的App商城本质上还是Docker应用(还包括一些脚本),商城只是给常用的docker镜像加入了参数模板,方便普通用户配置,要知道让一个小白用户去查文档映射哪些路径,加入哪些参数还是很不友好的。当然在命令行模式下用docker search, docker pull,docker run等命令也能达到同样的效果,但我们这次尽量用图形化界面操作。
1.1 修改hosts
为什么要改hosts?
hosts文件实质上是一个域名和ip地址的对应关系表,在浏览器访问网页时,网址并不能直接获取到内容,我们需要把网址中的域名(如xxx.xxx.com)转换为ip。系统会首先把域名在hosts文件中寻找对应ip地址,如果找不到则向DNS服务器查询。查询到结果后,我们才能正常访问网页。“raw.githubusercontent.com”这个域名正好被一股神秘力量挡住,无法从DNS服务器解析到真实IP地址(DNS污染),但正好这堵墙留了个口子(IP:199.232.4.133),所以我们可以通过修改Hosts文件来截胡。当然,如果你有飞机场可以飞过这堵高墙,那可以无视这段直接跳转到1.2
如果不修改hosts直接安装应用商城,直接赏你一个大大的failure
首先在unraid网页端右上角点击这个按钮,进入命令行界面
复制以下代码,并右键,粘贴到命令行窗口中,直接回车执行.
echo "199.232.4.133 raw.githubusercontent.com" >> /etc/hosts
hosts文件每次重启会重置,我们可以通过编辑go文件达到开机启动的效果,虽然安装应用商城是一次性的操作,但查看unraid源文件发现,每次进APP商城还是会从raw.githubusercontent.com下载内容,所以就有必要放到开机启动 /boot/config/go里面了。
执行命令开始编辑go文件
vi /boot/config/go
按键盘“i"进入编辑模式, 开始编辑开机启动项。把光标移动到最后一个字符后,按回车另起一行
echo "199.232.4.133 raw.githubusercontent.com" >> /etc/hosts
复制上面的代码,并粘贴到命令行窗口中。按键盘ESC退出编辑模式,输入“:wq"(不含双引号,且必须英文冒号),回车。保存文件。
什么是go文件?
unraid的开机时会自动执行go文件中的命令,类似于windows系统中的开机启动项。可以完成替换docker源地址,开启核显,启动http服务等工作。
1.2安装商城
在unraid管理界面,打开PLUGINS - Install Plugin,输入下面的地址,并点击Install,稍等一会儿就安装好了。
https://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg
然后就可以通过APPS菜单进去了
2.Docker加速
你以为直接能开始安装了嘛,先别急。docker镜像源在遥远的国度,直接拉的话,不废也残。所以修改为国内镜像源是必须的。
依然从这里进入命令行
在命令行粘贴以下命令,并回车。这样就修改为国内镜像源“registry.docker-cn.com”了。(实测这个源在我的网络环境下依然很卡,推荐使用下文提到的阿里云)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
设置成功后,需要重启docker,在SETTTINGS - Docker中的Enable Docker,先设置为No,并Apply,再重新设置为Yes并Apply即可。
但有个问题是每次重启又会恢复原样,所以我们需要设置一下开机启动项。参照1.1修改hosts的步骤,把上面那段代码加入到/boot/config/go文件里
附上其他docker加速源地址:
方法一:(未经验证)
Docker中国区官方镜像
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
ustc
https://ustc-edu-cn.mirror.aliyuncs.com/
中国科技大学
https://ustc-edu-cn.mirror.aliyuncs.com/
方法二:
阿里云容器 生成自己的加速地址
强烈推荐阿里云,但需要手动生成每个用户唯一的加速地址,先打开这个地址 阿里云,用你自己的阿里云账号登录后就拿到了加速地址
systemctl命令在unraid里面是用不了的。直接参考上文提到的unraid重启docker步骤就可以了。
3.安装Transmission
一切准备就绪,但正式开始前还得先建立目录,进入SHARES - ADD SHARE。
一般我就什么都不改,只输名字就可以了
准备好文件目录
-download //存放下载的内容
--watch //种子监控,把种子文件丢到这里,transmission会自动开始下载
注意unraid的固态缓存盘和群晖的不太一样。群晖的策略是缓存热点数据,提高访问速度;unraid的策略是写入数据先写到固态提速,通过定时任务Mover移动到阵列。实际使用时,3.5寸机械硬盘拷贝大文件时一般都能跑满千兆带宽(100+MB/s),而我的场景很少有小文件,所以对我来说这块固态可有可无。
到这里一切就绪,终于可以开始安装了。在APPS界面搜索“transmission“,选择linuxserver那个源,不要问为什么,问就是不知道 。然后点击左下角安装图标进入安装界面。
注意修改两处目录,别的都不要动。分别修改为download以及watch目录
完成后点击APPLY,等待拉取镜像等工作完成后,就可以在Docker页下看到transmission了。
4.安装好看的transmission-web-control
进入Docker,可以看到transmission状态started。一般我们会把右侧的autostart(开机启动)改为ON。
然后点击transmission图标,选择WebUI 看看能否正常打开原生界面
如果没问题的话,应该是这样。
再次点击transmission图标,选择Console进入容器控制台
执行命令,下载一键脚本
wget https://gitee.com/culturist/transmission-web-control/raw/master/release/install-tr-control-gitee.sh
执行脚本文件
bash install-tr-control-gitee.sh
输入1,选择安装最新的发布版本,回车
安装完成后回到WebUI界面,也就是ip:9091地址,按Ctrl+F5强制刷新,你经常见到的界面就出来了。
5.账户密码验证
不管是在局域网还是公网,你都不会希望别人看到你在下载些什么的吧?
所以打开账户密码验证是必须的,也就是打开transmission时必须账户密码验证通过才能进入主界面。
来修改transmission配置文件,刚才安装时,unraid的模板已经自动把的配置文件映射到宿主机目录了,位于/mnt/user/appdata/transmission/settings.json,所以我们只需要修改这个文件就可以了,但同时要注意遵循以下步骤:停止容器,修改文件,开始容器。
如果没有这个文件,检查transmission容器-edit中是否有这一条,如果没有加上重启就可以了
先把transmission停下来
打开宿主机的命令行,也就是unraid主界面右上角这个图标
输入以下命令开始修改
vi /mnt/user/appdata/transmission/settings.json
复习一下vi的操作方式:
1.方向键控制光标到要修改的地方
2.按下“i”进入编辑模式
3.修改完成后按ESC,输入":wq"(不含双引号),保存文件
我们要修改核对的地方有三处。有时候会遇到退格键不起作用的状况,那就用delete吧
修改完成后,启动transmission,在进入webUI界面,跳出了登录框,按刚才配置的信息就能登录了!
6.公网访问
有时候摸鱼,或者想在外面的时候管理下transmission,不过分吧?想要达到公网访问,需要满足以下条件:
1.你的宽带运营商给了你公网ip
2.你的路由器支持ddns。
3.对transmission进行一些配置
关于公网IP
一般而言,电信联通都能给到公网IP,移动则不行,具体能否给到,以及获得的难易程度因地区而异。运营商给的光猫性能都一般,建议把光猫设置成桥接模式,由另外的主路由进行pppoe拨号。在这个主路由上可以更方便更灵活设置ddns,端口转发等功能。我坐标0571-10000,只要打一个电话给客服,可以局端自动下发配置到光猫,重启下就变成桥接模式了。
关于DDNS
DDNS,通俗的讲就是动态DNS系统,因为运营商给我们的IP地址其实并不是固定的,重新拨号会改变。所以我们需要一种机制,每次路由器WAN口上的公网IP发生变化时,告诉域名服务商新的IP,这样域名服务商就可以把我们的IP和一个域名建立起对应关系,我们就可以通过域名服务商提供的一个二级域名访问直接我们的路由器。这就是DDNS的作用。
这里为了节省篇幅,假设第一步和第二步就假设大家已经达成了,现在开始第三部配置transmission。
我们可以看到transmission默认需要两个端口。9091用于webUI,51413用于pt上传(也就是为了让别人找到你)
那么首先到路由器的端口转发功能,把这两个端口转发出去,以我的刷了梅林的好用到不行的R6300V2古董为例
是不是这样就完成了?理论上是的,我期中一台这么配置后就可以用域名+端口正常访问了,而且51413端口也一切正常。可以在设置-网络传输,点击测试端口进行测试。另外不要忘了根据pt站点要求,进行相关设置,比如关闭DHT.
这时候如果你已经可以正常通过域名+端口访问,且正常添加种子下载,那么这一步就已经完成了,可以直接跳到7数据迁移。
我的另一台unraid测试机死活不行,左下角一直显示连接中,控制台显示xxxx错误,点开设置都是空白,无法使用。翻遍了中文站没找到解决方案,去求助神通广大的不可访问的谷大哥找到了答案,有个配置项rpc-host-whitelist可以限制远程访问的域名,只需要把我们的域名添加到这个白名单就可以了。
注意,如果用域名访问没有问题,不需要进行下列添加白名单步骤
按照之前的方式,停止transmission,修改settings.json,这次需要改两行,在第一行填入你的ddns域名(不含http://),把第二行设置为true
保存,启动transmission,DONE,可以正常通过域名访问transmission了!
7.数据迁移
我的transmission原本是以群晖套件的形式安装的,现在要迁移到unraid docker环境中,由于transmission本身并没有提供导入导出功能,所以我能想到的思路也就两种:
1.把torrent文件直接丢到watch文件夹,设置好默认目录让他自己去校验
2.把原先应用的resume+torrent整个搬过来
先说方案一,方案一的问题是,原先种子的所有信息都会丢失,比如分享率,已上传,上传时间等,系统会认为是一个全新的种子开始计算,而方案二则不会有这个问题。方案一丢到watch文件夹后大概率是全部红种,批量修改目录重新开始即可,这里具体就不展开了。
我们具体说一下方案二,这里以从群晖transmission套件向unraid docker环境迁移为例,docker迁docker只需要找对应目录,原理是一样的。
首先找到群晖transmission套件的数据目录,位于/usr/local/transmission/var。我们要的是torrents和resume文件夹。通过ssh命令行把文件复制到共享文件夹,比如我这里复制到位于存储空间2下的backup文件夹中
sudo cp -r /usr/local/transmission/var/ /volume2/backup/transmission/
完成后是这样的
然后把var文件夹复制到unraid-share目录下,再执行命令把这些文件复制到docker容器映射出来的transmission配置文件夹,位于/mnt/use/appdata/transmission,也就是settings.json所在目录。
cp -r /mnt/user/share/var/. /mnt/user/appdata/transmission
回到unraid-DOCKER界面,把transmission容器重启
刷新transmission页面,可以看到所有导过来的种子,保留了分享率等信息,但因为没有volumne1目录原因,状态都是已暂停,且显示红种。
你需要做的很简单,选中种子,右键选择“变更数据保存目录”,指向你的新目录,比如我这里的"/downloads/movie"。
这个目录指的是docker容器内的目录,而不是宿主机的目录。比如我的宿主机unraid共享文件夹是/download,而映射到transmission容器中的目录是/downloads,所以这里应该输入的是/downloads/movie,关于这个目录映射关系可以在docker管理界面上看到。记住变更数据目录时,只要填左边的路径就行。
transmission目录 宿主机目录
/downloads =》/mnt/user/download/
/watch =》/mnt/user/download/watch/
/config =》/mnt/user/appdata/transmission
docker中可以把容器内的文件系统挂载到宿主机文件上,从而达到内部外部文件共享的目的。当我把电影文件复制到宿主机/download文件夹中时,transmission同样可以在容器中的/downloads文件夹访问到文件,从而进行做种
路径变更完成后,全部开始做种就完工啦,所有的统计信息都带过来了,而且目录一直的话,会显示“做种中”。
这种导入方式,相比只导入种子,也就多了统计信息,但多了一个更改路径的步骤,对于想保留数据的人来说比较有用。如果想省时省力,那就使用方案一,把所有的电影都放到默认文件夹,然后把所有种子放到watch文件夹,让他自动校验就完事了。
总结
到这里,覆盖了基本上大部分人用得到的transmission功能,全文步骤我都在另一台J1900的机器上重新做了一遍,确保你抄作业过程中万无一失。此外,我在安装jellyfin过程中,因为站内的资料都太老了,很多说法都发生了变化,参考过程中发现了不少的问题,下一篇考虑再写一写jellyfin。
如果你有时间的话,可以在下面评论区留言,有意见的提意见,有想法的分享想法,实在什么都没有,洒洒水也行呀。
当然如果文章真的对你有帮助,别忘了点赞收藏投币.......阿呸呸呸(串台了),别忘了点赞收藏打赏哈哈!这也是我今后继续分享创作的动力
就像下面这样
值友5310936992
校验提示文案
哈哈宝贝58
校验提示文案
一口一锅小布丁
校验提示文案
值友7235878624
校验提示文案
牧风之灵
校验提示文案
巢乾_
校验提示文案
Buerwf
校验提示文案
薅羊毛的大表哥
校验提示文案
弓佬
校验提示文案
宇要寻找意义
校验提示文案
DeepRed007
校验提示文案
Ahnee
校验提示文案
小玩物
校验提示文案
一点一横一
校验提示文案
Alan哥
WHITELIST删除,peerport设置为51413,TRANSMISSION_WEB_HOME改/transmission-web-control/
校验提示文案
coolomg
校验提示文案
啊啊啊欠钱
校验提示文案
valden
校验提示文案
运气就是一个风
校验提示文案
值友4138290567
校验提示文案
小_day_day
校验提示文案
值友8135483195
校验提示文案
喷砋人被封杀
校验提示文案
Alan哥
WHITELIST删除,peerport设置为51413,TRANSMISSION_WEB_HOME改/transmission-web-control/
校验提示文案
o_o_
校验提示文案
啊啊啊欠钱
校验提示文案
pino714
校验提示文案
值友1833346780
无法访问此网站192.168.1.28 拒绝了我们的连接请求。
请试试以下办法:
检查网络连接
检查代理服务器和防火墙
ERR_CONNECTION_REFUSED
不知道是什么问题,恳请各位大神指点,谢谢
检查网络连接
检查代理服务器和防火墙
ERR_CONNECTION_REFUSED
校验提示文案
运气就是一个风
校验提示文案
坚决
校验提示文案
值友6711701048
校验提示文案
coolomg
校验提示文案
kelvin-law
校验提示文案
一点一横一
校验提示文案
mjb0617
校验提示文案
布吉德峰
校验提示文案
小玩物
校验提示文案
值友5177323997
提示permission denied,怎么破?
校验提示文案
Ahnee
校验提示文案
DeepRed007
校验提示文案