Transmission是一款流行的BitTorrent客户端,也是很多PT站推荐的客户端,和qBittorrent相比两者各有特色。本文介绍在armbian上容器化安装部署transmission的方法,并将保存目录映射为外置硬盘、增强/美化webui界面等配置方法一并进行说明。本文是盒子/NAS党主题博文的其中一篇,示例平台为大街货S905l3a方案盒子,更多相关内容敬请关注「」。

安装与使用

基于ophub非官方armbian,使用armbian-software脚本,可以很方便的安装、卸载、升级相关的软件包docker镜像。


armbian-software


armbian-software脚本加载后,输入104以选择transmission。

docker login用户名密码是 docker transmission 用户名密码_容器

脚本自动拉取transmission镜像并创建、加载容器,在拉取前,需要指定transmission的管理员用户名、密码。默认管理员用户名为admin,可保持,密码建议自行设定,而不是使用系统随机生成的。

docker login用户名密码是 docker transmission 用户名密码_容器_02

正常情况下,脚本会启动transmission容器并成功加载运行。

docker login用户名密码是 docker transmission 用户名密码_容器_03

这时就可以使用http://ip:9091打开transmission web,在其中点击左上角的图标,即可添加p2p种子文件,可以手动指定下载保存目录,点击『Add』就可以开启pt下载了。

docker login用户名密码是 docker transmission 用户名密码_docker_04

默认保存目录配置为外置硬盘挂载点

使用以下命令查看目录映射关系,在上面的图示中可以看到剩余空间为11.88GB,这是老E的m401a盒子根文件系统下剩余的全部存储空间。因此,嵌入式设备上务必在使用前进行编辑修改,否则默认的保存目录会导致设备空间迅速耗尽。


docker inspect transmission | grep Mounts -A 30


armbian-software脚本默认配置的映射关系如下,“亮点”是"/opt/downloads",完全没有考虑 TVBox 的设备状况和需求。新手上来就用,一不留神就会“中招”,表现为下载个几分钟盒子空间就100%使用率了。通常情况下,不会有人将外置存储的挂载点设置为/opt/downloads,4K乃至8K内容的转移也非常耗时。

编辑

我们需要先停止、删除容器,配置好外置硬盘挂载点,使用正确的映射关系重新创建、加载transmission容器。


docker stop transmission docker rm -f transmission docker run -d --name transmission \ -e USER=admin \ -e PASS=pass1234 \ -e TZ=Asia/Shanghai \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /opt/docker/transmission/config:/config \ -v /media/sda1/downloads:/downloads \ -v /opt/docker/transmission/watch/folder:/watch \ --restart unless-stopped linuxserver/transmission:arm64v8-latest


上述命令中的/mnt/sda1是我们创建的外置硬盘挂载点,参见上期博文「Armbian下挂载多硬盘」。重新创建、运行transmission容器后,再打开web页可以看到默认的下载保存目录剩余空间的变化,新手很难理解变化背后的原因,甚至也不会去修改保存目录。

编辑

Web control增强

默认的 transmission web control 界面比较简陋,虽然够用,但可以使用增强版的 html/css 项目进行替换以获得更好的体验。增强版 Web UI 的 github 仓库地址如下:

ronggang/transmission-web-control: 一个 Transmission 浏览器管理界面

git 仓库后,我们将 src 整个目录上传至 armbian 服务器目录,本文指定的目录为/ opt/docker/transmission,并将 src 更名为 enhance-webui。需要单独的 src 压缩包可点「此处」直接下载。

docker login用户名密码是 docker transmission 用户名密码_加载_05

停止、删除容器后,使用以下命令重新创建、加载即可。重点在于制定了环境变量 TRANSMISSION_WEB_HOME 为/webui,而  /webui 映射为宿主机中的 /opt/docker/transmission/enhance-webui 目录。很多有关NAS下配置tr的文档“朦朦胧胧”,根本上是完全不懂linux的人在写linux。


docker run -d --name transmission \ -e TRANSMISSION_WEB_HOME=/webui \ -e USER=admin \ -e PASS=pass1234 \ -e TZ=Asia/Shanghai \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /opt/docker/transmission/enhance-webui:/webui \ -v /opt/docker/transmission/config:/config \ -v /media/sda1/downloads:/downloads \ -v /opt/docker/transmission/watch/folder:/watch \ --restart unless-stopped linuxserver/transmission:arm64v8-latest


这样就可以使用transmission web control了。其实原版也不错,也有汉化的版本可以使用。

编辑

至此,armbian下transmission容器化部署任务就完成了。需要注意以下几点:

  • docker命令直接拷贝、粘贴,手动输入出现错误应首先检查是否有多余空格或TAB,其次检查环境变量名称是否正确
  • 镜像完整名称为linuxserver/transmission:arm64v8-latest,使用“linuxserver/transmission"等价于“linuxserver/transmission:latest"。因此,不添加版本tag会自动下载latest镜像,可能导致意外的兼容性问题
  • TRANSMISSION_WEB_HOME为web主目录,没有额外的文件/目录关系需要考虑

默认情况下,非官方armbian上的ufw都是禁用的,因此在初始配置jellyfin、transmission等服务时无需进行端口放行。建议在完成所有软件配置后,激活ufw,并放行所有需要的端口,对于transmission还需要额外在路由器中打开uPNP以及放行udp 51343端口转发。

Permission denied假红种问题的解决

按照本文docker方式部署的transmission正常工作毫无问题,有可能会出现权限错误导致假红种问题。所谓假红种,表现为红种(种子为红色、进度条等也均为红色),但下载、分享、保种等功能均正常,报错为“Permission denied”。出现此类情况,我们只需要进入宿主机的映射目录,查看并修补权限。

docker login用户名密码是 docker transmission 用户名密码_加载_06

“Permission denied”导致的假红种,不涉及下载保存目录的权限设置,需要修补的是其他映射目录的权限配置。例如,上图中的resume、torrents、blocklists目录均需要写入权限,911是用户和组名。如果出现假性红种问题,将相应目录的属主修改为911即可,请勿采用“chmod -R 777”方法。


#将/opt/docker/transmission/config/resume替换为自己的映射目录
chown 911:911 /opt/docker/transmission/config/resume


正确的权限配置,可以确保不会出现假红种问题。

docker login用户名密码是 docker transmission 用户名密码_linux_07

因加载种子数量导致的红种,和映射目录的权限配置无关,报错一般为"Too many open files",该问题在容器化部署时不会出现,因为“linuxserver/transmission”镜像的ulimit设置了超大值。