标签归档:transmission

Debian/Ubuntu环境上,部署安装Transmission,可供BT下载

前缀、文档修改记录

20250428 初始化编辑此文章,完稿。基于Debian 12.9系统环境版本
20250501 因为Debian版本里的Transmission 版本有点问题,更换,系统环境更换为Ubuntu 24.04,Transmission版本为transmission-daemon amd64 4.0.5-1build5

章节1、需求描述

孩子需要看奥特曼,父母要看影视剧,要看凹凸曼,国内剧可以通过哎呦疼(爱奇艺视频,优酷视频,腾讯视频)在线观看,但是一般的海外的影视剧集,由于版权和其他原因,就很难有正规的观看途径了,于是又不得不回归以前的BT下载的路子。

这里,介绍的是,在Linux环境上,部署并安装BT下载的客户端Transmission,满足日常的BT下载的需求。

2025-5-1更换为Ubuntu 24.04系统,里面的Transmission版本更新一些 ,安装命令是一样的,配置参数也没啥变化,挺好。

章节2、环境描述

Ubuntu 24.04系统,规格8vCPU 8GB-Mem 12GB-Sys-SSD 300GB-Data-SSD ,我这台主机的规格用来跑Transmission,性能是足足的了

章节3、操作步骤

3.1、更新系统,更新你的系统包列表

root@server:~# apt update

3.2、安装 Transmission

Debian 12 /Ubuntu 24.04的官方仓库已经包含了 Transmission,可以直接官方源安装

root@server:~# apt install transmission-daemon

安装后,软件就自动开始运行

本次安装到的版本是transmission-common all 3.00-2.1+deb12u1 Tag-202504282201,4.0.5-1build5 Tag-20250501默认增加的用户 debian-transmission

3.3、停止 Transmission服务

自定义编辑配置文件前,先停止transmission-daemon服务

root@server:~# systemctl stop transmission-daemon

3.4、自定义编辑配置文件

配置文件路径 /etc/transmission-daemon/settings.json

有几个自定义的参数

BT下载的盘,我挑了一块旧250G的SSD,这样坏了也不影响系统,坏了也不心疼,挂载路径沿袭旧例到 /media/HDD1TB

查看/dev/sdb1 250G的盘的UUID,并挂载到所需的目录,挂载成功后,赋予它目录的权限。

自定义 /media/HDD1TB/cache 下载未完成的时候,文件所处的目录
自定义 /media/HDD1TB/downs 下载完成后,文件所处的目录

root@server:~# mkdir /media/HDD1TB
root@server:~# mkdir -p /media/HDD1TB/cache /media/HDD1TB/downs

root@server:~# blkid
/dev/sdb1: LABEL="data" UUID="33dd02ef-da0c-409b-a5cd-859a0197a5dc" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="35c5fec6-01"

root@server:~# tail -1 /etc/fstab
UUID="33dd02ef-da0c-409b-a5cd-859a0197a5dc" /media/HDD1TB ext4 defaults 0 0

root@server:~# mount -a

root@Trans:~# df -h | grep HDD
/dev/sdb1                   218G   28K  207G   1% /media/HDD1TB

将 debian-transmission加入到管理员UID-1000的用户admin组,方便后续的文件管理。

root@server:~# cd /media

root@server:~# chown -R debian-transmission:admin ./HDD1TB

root@server:~# chmod -R 775 ./HDD1TB

root@server:~# usermod -aG admin debian-transmission    

配置文件要修改的不多,主要是下载目录、缓存目录、下载限速、上传限速、账号、密码等常用的就够了,别的参数不必修改

默认的配置文件

{
    "alt-speed-down": 50,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 50,
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": true,
    "download-dir": "/var/lib/transmission-daemon/downloads",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true,
    "download-queue-size": 5,
    "encryption": 1,
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/var/lib/transmission-daemon/Downloads",
    "incomplete-dir-enabled": false,
    "lpd-enabled": false,
    "max-peers-global": 200,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,
    "peer-limit-per-torrent": 50,
    "peer-port": 51413,
    "peer-port-random-high": 65535,
    "peer-port-random-low": 49152,
    "peer-port-random-on-start": false,
    "peer-socket-tos": "default",
    "pex-enabled": true,
    "port-forwarding-enabled": false,
    "preallocation": 1,
    "prefetch-enabled": true,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 2,
    "ratio-limit-enabled": false,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": true,
    "rpc-password": "{cc8f2aede4fcaeb6a855b210b6af775e80ecf0f1pWs.JEN9",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "transmission",
    "rpc-whitelist": "127.0.0.1",
    "rpc-whitelist-enabled": true,
    "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,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 100,
    "speed-limit-up-enabled": false,
    "start-added-torrents": true,
    "trash-original-torrent-files": false,
    "umask": 18,
    "upload-limit": 100,
    "upload-limit-enabled": 0,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true
}

修改后的配置文件

{
    "alt-speed-down": 50,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 50,
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::1",
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 20,
    "dht-enabled": true,
    "download-dir": "/media/HDD1TB/downs",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true,
    "download-queue-size": 2,
    "encryption": 1,
    "idle-seeding-limit": 10,
    "idle-seeding-limit-enabled": true,
    "incomplete-dir": "/media/HDD1TB/cache",
    "incomplete-dir-enabled": true,
    "lpd-enabled": false,
    "max-peers-global": 300,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,
    "peer-limit-per-torrent": 50,
    "peer-port": 51413,
    "peer-port-random-high": 65535,
    "peer-port-random-low": 49152,
    "peer-port-random-on-start": false,
    "peer-socket-tos": "default",
    "pex-enabled": true,
    "port-forwarding-enabled": false,
    "preallocation": 1,
    "prefetch-enabled": true,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 1,
    "ratio-limit-enabled": true,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": false,
    "rpc-password": "{abd1f2c8078fe339474767bcc972996397c27becDd5Zmgj2",
    "rpc-port": 9999,
    "rpc-url": "/transmission/",
    "rpc-username": "trans",
    "rpc-whitelist": "",
    "rpc-whitelist-enabled": false,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "seed-queue-enabled": true,
    "seed-queue-size": 10,
    "speed-limit-down": 4096,
    "speed-limit-down-enabled": true,
    "speed-limit-up": 512,
    "speed-limit-up-enabled": true,
    "start-added-torrents": true,
    "trash-original-torrent-files": false,
    "umask": 2,
    "upload-limit": 100,
    "upload-limit-enabled": 0,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true
}

章节4、启动transmission-daemon服务

root@server:~# systemctl start transmission-daemon

章节5、访问transmission

通过浏览器访问控制页面 http://服务器的IP:9999/transmission ,添加磁力链接或者BT种子,即可慢慢下载了。

章节6、优化参数

应对高并发种子、高速网络(如 100M – 1G 带宽)、大量 UDP tracker 通信和 peer 连接,内核参数设置

net.core.rmem_max 决定了这个缓冲区的最大值。
net.core.wmem_max 决定了单个socket的发送缓冲区的最大上限
对于 Transmission(BT 下载工具),追求高速上传/下载、大量连接、低延迟的稳定传输,适当调高 rmem_max 和 wmem_max 是很有价值的。

编辑 /etc/sysctl.conf

net.core.rmem_max = 4194304   # 4 MB
net.core.wmem_max = 1048576   # 1 MB
root@server:~# sysctl -p

章节7、优化参数文件句柄

设置系统资源限制(防止fd泄露导致Web卡死)

修改文件 /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

# 修改
/usr/bin/transmission-daemon -f --log-info
# 追加
LimitNOFILE=8192
Restart=on-failure
RestartSec=15
StandardOutput=append:/var/log/transmission.log
StandardError=append:/var/log/transmission-error.log

附录1、视频操作演示

附录2、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨
附录2,进阶的配置,让Transmission的所有流量全部走socks5代理

配置到启动服务中,设置环境变量
...
[Service]
User=debian-transmission
Environment="HTTP_PROXY=http://127.0.0.1:7890" "HTTPS_PROXY=http://127.0.0.1:7890" "ALL_PROXY=socks5://127.0.0.1:7891"
Type=notify
...

官方说明
Transmission uses the libcurl library for http- and https-based tracker announces and scrapes. 
Transmission doesn't support proxies, but libcurl itself honors a handful of environment variables to customize its proxy behavior.

-- -- -- -- 分割线-- -- -- -- 

附录1, 一些其他参数的含义中文说明如下,根据自身需要进行补充的配置设置

"alt-speed-up": 500, # 限速时段上传限速值
"alt-speed-down": 500, # 限速时段下载限速值
"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": true, # 启用限速,为 false 时,以上计划配置则不生效,生效时会自动禁用 alt-speed-enabled 配置,二者只能选一个
"alt-speed-time-end": 420, # 限速时段结束时间,这个配置表示的是凌晨零点到开始时间的分钟数,比如 7:00 就是 7*60=420。需要注意的是,该时间是用的 GMT 时间,即北京时间 -8 小时。比如你计划北京时间 7 点 30 分开始,这个数字应该是(7-8+24)*60+30=1410
"bind-address-ipv4": "0.0.0.0", # IPv4 地址绑定,一般不要改动
"bind-address-ipv6": "::", #IPv6 地址绑定,一般不要改动
"blocklist-enabled": true, # 启动白名单,默认不启动,需要启动改为 true
"blocklist-updates-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4, #缓存大小,以 MB 为单位,建议设大一些,避免频繁读写硬盘而伤硬盘,建议设为内存大小的 1/6~1/4
"compact-view": false,
"dht-enabled": false, #关闭 DHT(不通过 tracker 寻找节点)功能,不少 PT 站的要求,但 BT 下载设置为 true 会使得下载更好
"download-dir": "/share/Downloads", #下载的内容存放的目录
"download-queue-enabled": true,  # 下载队列开关
"download-queue-size": 5, # 下载队列数量
"encryption": 1, # 加密。指定节点的加密模式,默认 1。0 表示关闭 , 0= 不加密,1= 优先加密,2= 必须加密
"lazy-bitfield-enabled": true, # 默认为 true,设置为 true 时可以避免某些 ISP 通过查询完整位段来屏蔽 BT,从而破解部分 ISP 对 BT 的封杀,当然不一定完全有效
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/share/Downloads",  # 临时文件路径
"incomplete-dir-enabled": false,
"inhibit-desktop-hibernation": true,
"lpd-enabled": false, #禁用 LDP(本地节点发现,用于在本地网络寻找节点), 不少 PT 站的要求
"main-window-height": 500,
"main-window-is-maximized": 0,
"main-window-width": 615,
"main-window-x": 337,
"main-window-y": 211,
"message-level": 2,
"open-dialog-dir": "/share/Download",  # 网页对话框打开的根目录
"peer-congestion-algorithm": "",
"peer-limit-global": 240, # 全局连接数
"peer-limit-per-torrent": 60, # 每个种子最多的连接数
"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": false, # 是否启用用户交换,默认为 true,关于 PEX,有兴趣的朋友可参考 http://en.wikipedia.org/wiki/Peer_exchange,对于只用 PT 的朋友,可以设为 false, 禁用 PEX(节点交换,用于同已与您相连接的节点交换节点名单), 不少 PT 站的要求
"port-forwarding-enabled": true, # 启用端口转发(uPnP),如果路由支持并且也开启了 uPnP,则路由会自动做端口映射,但是需要注意的是如果内网有几台机器同时使用 transmission,就必须更改 peer-port 值为不一样
"preallocation": 1, # 预分配文件磁盘空间,0= 关闭,1= 快速,2= 完全。建议取 1 开启该功能,防止下载大半了才发现磁盘不够。取 2 时,可以减少磁盘碎片,但速度较慢。
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2, # 分享率限制
"ratio-limit-enabled": false, # 启用分享率限制,默认不启用
"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-enabled": true, # 是否开启主机白名单
"rpc-host-whitelist": "", # 白名单,如果需要远程访问,最好配置
"rpc-password": "{cxxxxxxxxxxaE", #web-ui 的密码,可直接修改,重新运行或者 reload 服务的时候密码会自动 HASH 增加安全性
"rpc-port": 9091, # 默认 web-ui 的 port 口,也是远程控制端口,可自行更改
"rpc-url": "/transmission/",
"rpc-username": "transmission", #默认登入名称,也是远程控制用户名
"rpc-whitelist": "127.0.0.1", # 远程控制白名单,默认值为所有地址,支持通配符*,如 192.168.2.*
"rpc-whitelist-enabled": true, # 启用远程控制白名单,如果启用,则仅仅上面列出的地址可以远程连接
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "/home/",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"show-backup-trackers": true,
"show-extra-peer-details": false,
"show-filterbar": true,
"show-notification-area-icon": false,
"show-options-window": true,
"show-statusbar": true,
"show-toolbar": true,
"show-tracker-scrapes": true,
"sort-mode": "sort-by-age",
"sort-reversed": false,
"speed-limit-down": 300, #平时的下载限速
"speed-limit-down-enabled": true, #启用平时下载限速
"speed-limit-up": 30, #平时上传限速
"speed-limit-up-enabled": true, #启用平时上传限速
"start-added-torrents": false,
"statusbar-stats": "total-ratio",
"torrent-added-notification-enabled": true,
"torrent-complete-notification-enabled": true,
"torrent-complete-sound-enabled": true,
"trash-can-enabled": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-slots-per-torrent": 14
"utp-enabled": true, #启用μTP 协议
"watch-dir": "/share/bt",  # 监听文件夹目录
"watch-dir-enabled": false # 是否监听文件夹