Transmission
Transmission 是一个轻量级和跨平台的 BitTorrent 客户端。
安装
有三个软件包提供 Transmission 客户端
- transmission-cli – 守护进程,带有 CLI 工具和#Web 界面。
- transmission-gtk – 使用 GTK 4 的图形界面。
- transmission-qt – 使用 Qt 6 的图形界面。
还有各种第三方客户端可以连接到守护进程
- tremcAUR 或 tremc-gitAUR – 守护进程的 Curses 界面。
- stigAUR 或 stig-gitAUR – 守护进程的 Curses 界面。
- transmission-remote-gtk – 守护进程的 GTK 3 图形界面。
- transgui-qtAUR, transgui-gtkAUR – 使用 Lazarus 开发的守护进程图形界面。
- trgui-ngAUR, 或 trgui-ng-gitAUR 或 trgui-ng-binAUR – 使用 Tauri 重写的 transgui 项目。
配置 GUI 版本
两个 GUI 版本 transmission-gtk 和 transmission-qt 都可以独立运行,无需正式的后端守护进程。
GUI 版本配置为开箱即用,但用户可能希望更改某些设置。GUI 配置文件默认路径为 ~/.config/transmission
。
配置选项指南可以在 Transmission 的 Github 上找到。
Transmission 守护进程和 CLI
transmission-cli 的命令是
- transmission-daemon
- 启动守护进程。
- transmission-remote
- 调用守护进程的 CLI,无论是本地还是远程,后跟您希望守护进程执行的命令。
- transmission-show
- 返回给定 torrent 文件的信息。
- transmission-create
- 创建新的 torrent。
- transmission-edit
- 添加、删除或替换 tracker 的 announce URL。
- transmission-cli
- (已弃用,推荐使用 transmission-remote)启动 transmission 的非守护进程本地实例,用于手动下载 torrent。
- tremc
- (需要 tremc-gitAUR)启动守护进程的 curses 界面,无论是本地还是远程。
启动和停止守护进程
Transmission 的守护进程可以运行
$ transmission-daemon
启动守护进程将创建一个初始配置文件。请参阅#配置守护进程。
可以使用以下命令停止 Transmission 守护进程
$ transmission-remote --exit
另一种选择是
$ pkill -3 transmission-daemon
减少日志垃圾信息
运行 transmission-daemon 可能会导致大量不必要的日志条目。可以通过使用小型包装脚本启动它来过滤输出。以下示例还提供了一些通知
transwrap.sh
#!/bin/zsh killall transmission-daemon 2> /dev/null transmission-daemon --foreground --log-info 2>&1 | while read line; do echo $line | grep -v "announcer.c:\|platform.c:\|announce done (tr-dht.c:" | grep -v "Saved.*variant.c:" | while read line; do echo $line | grep -q "Queued for verification (verify.c:" && notify-send --app-name="Transmission Started" "${line#* * }" echo $line | grep -q "changed from .Incomplete. to .Complete." && notify-send --app-name="Transmission Complete" "${line#* * }" echo $line | systemd-cat --identifier="TransWrap" --priority=5 done 2>&1 > /dev/null done&disown
仅在连接到网络时运行
Netctl
可能需要在某些网络上运行 Transmission。以下脚本检查连接是否到授权网络列表,然后继续启动 transmission-daemon。
/etc/netctl/hooks/90-transmission.sh
#!/bin/bash # The SSIDs for which we enable this. declare -A ssids=( ["network_1"]=y ["network_2"]=y ) if [[ ${ssids[$SSID]} ]]; then case $ACTION in CONNECT|REESTABLISHED) # Need to wait, otherwise doesn't seem to bind to 9091. sleep 30 systemctl start transmission ;; *) systemctl stop transmission ;; esac fi
选择用户
选择您要如何运行 transmission
- 默认情况下作为单独的用户
transmission
(推荐以提高安全性)。
默认情况下,transmission 创建用户和组 transmission
,其主目录文件位于 /var/lib/transmission/
,并以此“用户”身份运行。这是一个安全预防措施,因此 Transmission 及其下载无法访问 /var/lib/transmission/
之外的文件。配置、操作和访问下载需要使用“root”权限(例如,使用 sudo)。
- 在您自己的用户下。要进行设置,请覆盖提供的服务文件并指定您的用户名
/etc/systemd/system/transmission.service.d/username.conf
[Service] User=your_username
配置守护进程
通过启动守护进程创建初始配置文件。
- 如果以用户名
transmission
运行 Transmission,则配置文件将位于/var/lib/transmission/.config/transmission-daemon/settings.json
。
- 如果以您自己的用户名运行 Transmission,则配置文件将位于
~/.config/transmission-daemon/settings.json
。
可以通过使用 Transmission 客户端或使用支持的浏览器通过 https://127.0.0.1:9091 访问的内置 Web 界面来自定义守护进程。
配置选项指南可以在 Transmission 网站上找到: https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md
- 如果您想使用文本编辑器手动编辑配置,请先停止守护进程;否则,它会在关闭时覆盖其配置文件。
- 或者,可以通过运行
kill -s SIGHUP $(pidof transmission-daemon)
指示守护进程使用 SIGHUP 重新加载其配置。
对于那些以用户名 transmission
运行的用户,建议创建一个共享下载目录,并具有正确的权限,以允许 transmission 用户和系统用户访问,然后相应地更新配置文件。
# mkdir /mnt/data/torrents # chown -R facade:transmission /mnt/data/torrents # chmod -R 775 /mnt/data/torrents
现在,系统用户 facade
和 transmission 用户所属的 transmission
组都可以访问 /mnt/data/torrents
。强烈建议不要将目标目录设置为全局可读/可写(即不要将目录 chmod 为 777)。相反,请为各个用户/组提供对相应目录的适当权限。
/mnt/data/torrents
位于可移动设备上,例如在带有 nofail
选项的 /etc/fstab
条目中,Transmission 会抱怨找不到您的文件。要解决此问题,您可以将 RequiresMountsFor=/mnt/data/torrents
添加到 /etc/systemd/system/transmission.service.d/transmission.conf
的 [Unit]
部分。另一种方法是将您的用户添加到 transmission
组 (#usermod -a -G transmission yourusername
),然后修改 /var/lib/transmission
和 /var/lib/transmission/Downloads
目录的权限,以允许 transmission
组成员进行 rwx 访问。
主机白名单
如果您计划使用服务器的主机名通过网络访问 Transmission 守护进程,则需要在 settings.json
中将此主机名添加到 rpc-host-whitelist
。否则,在访问服务器时,您将收到“421 Misdirected Request”错误。
如果您使用服务器的 IP 地址连接到守护进程,则不需要这样做。
监视目录
如果您想从文件夹自动添加 .torrent 文件,但您发现配置文件中设置的 watch-dir
和 watch-dir-enabled
选项不起作用,则可以使用标志 -c /path/to/watch/dir
启动 transmission 守护进程。
如果您正在使用 systemd,请按照 systemd#编辑提供的单元 中的说明编辑 transmission.service
单元。
启用 IPv6
默认情况下,守护进程仅侦听 IPv4 连接。要同时侦听 IPv6 连接,请将 settings.json
中的 rpc-bind-address
选项更改为 "::"
。
CLI 示例
如果您想删除所有已完成的 torrent,可以使用以下命令,并使用您自己的用户名和密码
# transmission-remote -n 'username:password' -l | grep 100% | awk '{print $1}'| paste -d, -s | xargs -i transmission-remote -t {} -r
播种已下载的 torrent
# transmission-remote [HOST] --torrent=example.torrent -a example.torrent --verify --download-dir=/dir/to/folder --start
通知
停止 transmission-daemon 并将这些添加到 .config/transmission-daemon/settings.json
中
"script-torrent-added-enabled": true, "script-torrent-added-filename": "path/to/transmission-handler.sh", "script-torrent-done-enabled": true, "script-torrent-done-filename": "path/to/transmission-handler.sh",
transmission-handler.sh
#!/bin/bash percentage=$(transmission-remote -t $TR_TORRENT_ID -l | awk -v ID="$TR_TORRENT_ID" '$0 ~ ID{print $2}') if [ $percentage != "100%" ] then notify-send --app-name="Transmission Started" "Transmission: started $TR_TORRENT_NAME" else notify-send --app-name="Transmission Complete" "Transmission: downloaded $TR_TORRENT_NAME" fi
Web 界面
GUI 方式
安装 Transmission 后,您可以轻松设置 Web 界面。您只需单击“编辑”菜单并选择“首选项”。单击“远程”选项卡并启用“允许远程访问”。
在这里,您可以有机会将默认监听端口从 9091 更改。
选中“使用身份验证”并填写用户名和密码,以便可以使用身份验证。
为了提高安全性,您可以通过启用“仅允许这些 IP 地址”来限制来自任何 IP 地址的访问。
现在您已准备好启动 Web 界面,可以通过点击打开 Web 客户端来使用默认 Web 浏览器打开它,或者手动使用任何受支持的 Web 浏览器访问 http://TARGET_IP_ADDRESS:PORT
。
如果您没有更改监听端口,则默认端口为 9091。在这种情况下,链接为 https://127.0.0.1:9091
CLI 方式
您无需图形界面即可设置 Web 界面,守护程序提供完全相同的选项。您可以无需指定任何标志即可访问 Web 界面。请参阅 #启动和停止守护程序
然而,您可以指定您在上一节中看到的所有内容
$ transmission-daemon --auth --username arch --password linux --port 9091 --allowed "127.0.0.1"
等同于
$ transmission-daemon -t -u arch -v linux -p 9091 -a "127.0.0.1"
transmission-remote
的命令都需要使用 --auth username:password
进行身份验证。请参阅:transmission-remote 命令因未经授权的用户而报错可选的 Web UI 主题
如果 Web 应用程序的默认用户界面看起来过时且不如预期那样精美,请尝试使用 https://git.eigenlab.org/sbiego/transmission-web-soft-theme 以获得一个简单的 CSS 主题。
https://github.com/ronggang/transmission-web-control 也提供了一个完整的替代方案,可以与默认 UI 共存。
用作 makepkg DLAGENT
Transmission 可以用作 makepkg 的 magnet 下载代理,使用 transmission-dlagentAUR 下载代理。
Magnet URI 需要将其前缀从 magnet:?
更改为 magnet://
。
故障排除
无法通过网络访问守护程序
守护程序在 network.service
初始化后启动。但是,如果您启用 dhcpcd
服务,而不是设备特定的服务,例如 dhcpcd@enp1s0.service
,则可能会发生 Transmission 启动过早且无法绑定到网络接口的情况。因此,Web 界面无法访问。一个可能的解决方案是在单元的 配置文件 中添加 Requires
行
/etc/systemd/system/transmission.service.d/fixdep.conf
[Unit] Requires=network.target
Web 界面无法访问
404: Not Found Couldn't find Transmission's web interface files! Users: to tell Transmission where to look, set the TRANSMISSION_WEB_HOME environment variable to the folder where the web interface's index.html is located. Package Builders: to set a custom default at compile time, #define PACKAGE_DATA_DIR in libtransmission/platform.c or tweak tr_getClutchDir () by hand.
即使您使用图形界面,您仍然需要安装 transmission-cli 才能使 Web 界面工作。
未能设置发送/接收缓冲区
Transmission 可能会在启动时在日志中显示以下任一消息
UDP Failed to set receive buffer: requested 4194304, got 425984 UDP Failed to set send buffer: requested 1048576, got 425984
这些可以通过使用 sysctl 设置 net.core.rmem_max=4194304
和 net.core.wmem_max=1048576
来修复。
transmission-remote 频繁超时或 Web 界面无响应
Transmission 不会异步处理磁盘 IO,导致在进行大量写入时变得无响应,请参阅 [1]。考虑将 Transmission 的下载目录放在更快的存储设备上,例如 SSD 而不是 HDD。
transmission-gtk 缺少托盘图标
GTK 4 版本的托盘图标 目前无法工作。可以选择使用 GTK 3 版本 transmission-gtk3AUR。
401: 未经授权
在为 Web 界面设置用户名和密码后,使用 transmission-remote
时可能会出现以下错误
< h1>401: Unauthorized\Unauthorized User
发生这种情况是因为设置了用户名和密码。在此之后,来自 transmission-remote
的所有命令都必须经过身份验证。请参阅:transmission-remote 命令因未经授权的用户而报错