Transmission

提供: ArchWiki
2023年12月7日 (木) 07:10時点におけるKgx (トーク | 投稿記録)による版 (通知を翻訳して追加)
ナビゲーションに移動 検索に移動

Transmission は軽量でクロスプラットフォームの BitTorrent クライアントです。

インストール

Transmission を インストール するために、いくつかのパッケージが用意されています。

GUI バージョンの設定

GUI の transmission-gtktransmission-qt はどちらもバックエンドデーモンを必要としません。

GUI バージョンは特に何も設定しなくても動作するようになっていますが、設定を変えたい場合、GUI の設定ファイルのデフォルトパスは ~/.config/transmission です。

設定オプションのガイドが Transmission の Github に記載されています。

GTK+ の一時的な見た目の修正

GTK+ 3.18 では、transmission-gtk で黒い縁がランダムで表示されることがあります。gtk.css を以下のように編集することで表示しないようにすることが可能です:

~/.config/gtk-3.0/gtk.css
.tr-workarea .overshoot,
.tr-workarea .undershoot { border: none; }

Transmission-daemon と CLI

transmission-cli のコマンド:

transmission-daemon: デーモンを起動。
transmission-remote: デーモンの CLI を起動。デーモンで実行したいコマンドを後に付けます。
transmission-cli: (transmission-remote のため非推奨) torrent を手動でダウンロードするための transmission のローカルインスタンスを起動。
transmission-show: 指定した torrent ファイルの情報を返します。
transmission-create: 新しい torrent を作成。
transmission-edit: トラッカーのアナウンス URL を追加・削除・置換。
tremc: (tremc-gitAUR が必要) ローカルかリモートかにかかわらず、デーモンの curses (プログラミングライブラリ) インタフェースを起動します。

デーモンの起動と停止

#ユーザーの選択 で説明されているように、transmission デーモンは以下の方法で実行できます:

  • systemd を使って transmission ユーザーとして transmission.service を起動・有効化 (#ユーザーの選択で書かれているようにしてユーザーは変更できます)。
  • 通常のユーザーで以下のコマンドを実行:
    $ transmission-daemon
    デーモンは以下のコマンドで停止できます:
    $ killall transmission-daemon

デーモンを起動すると transmission の設定ファイルが自動的に作成されます。#デーモンの設定を参照してください。

transmission は transmission-remote コマンドを使って停止することもできます:

$ transmission-remote --exit

ジャーナルのログ出力を減らす

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 (セキュリティが良くなるので推奨)。

デフォルトでは transmissiontransmission ユーザーとグループを作成してホームファイルを /var/lib/transmission/ に設定して transmission ユーザーで動作します。これによってセキュリティが守られ、transmission やダウンロードしたファイルは /var/lib/transmission/ の外側のファイルにアクセスできなくなります。transmission を設定・操作したりダウンロードファイルにアクセスするには (sudo を使用するなどして) "root" 権限が必要になります。

  • ユーザーの下で動かす

セットアップするには、サービスファイルを上書きしてユーザー名を指定してください:

/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 クライアントを使用するか、デーモンに含まれているウェブインターフェイスに http://localhost:9091 からブラウザでアクセスすることで設定できます。

設定オプションのガイドが Transmission のウェブサイトに存在します: https://github.com/transmission/transmission/wiki/Editing-Configuration-Files

ノート:
  • テキストエディタを使って設定を手動で編集したい場合、先にデーモンを停止してください。そうしないと Transmission の終了時に設定ファイルが上書きされてしまいます。
  • また、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

上記のコマンドを実行すると /mnt/data/torrents にシステムユーザーの facadetransmission ユーザーの属している transmission グループからアクセスできるようになります。どこからも読み書きできるように権限を設定することは極力控えてください (ディレクトリを 777chmod しないでください)。かわりに、適切なディレクトリに積雪なユーザー・グループのパーミッションを付与してください。

ノート: nofail オプションの付いた /etc/fstab エントリなど、リムーバブルデバイスに /mnt/data/torrents を配置した場合、Transmission はファイルを見つけられないとエラーを吐きます。/etc/systemd/system/transmission.service.d/transmission.conf[Unit] セクションに RequiresMountsFor=/mnt/data/torrents を追加することで問題は解決します。

逆に、ユーザーを transmission グループに追加 (#usermod -a -G transmission yourusername) して、transmission グループのメンバーが読み書きできるように /var/lib/transmission/var/lib/transmission/Downloads ディレクトリのパーミッションを設定するという方法もあります。

ホストのホワイトリスト

サーバーのホスト名を使用してネットワーク経由で Transmission デーモンにアクセスする場合は、このホスト名を settings.jsonrpc-host-whitelist に追加する必要があります。そうしないとサーバーにアクセスするときに "421 Misdirected Request" エラーが発生します。 サーバーの IP アドレスを使用してデーモンに接続する場合これは必要ありません。

監視ディレクトリ

フォルダから .torrent ファイルを自動的に追加したいのに、設定ファイルの watch-dirwatch-dir-enabled オプションが機能しない場合、-c /path/to/watch/dir フラグを付けて transmission デーモンを起動してみてください。

systemd を使用している場合、systemd#ユニットファイルの編集に記述されているようにして transmission.service ユニットを編集してください。

CLI サンプル

ダウンロード完了した torrent を全て削除したい場合、ユーザー名とパスワードを指定して以下のコマンドを実行します:

# transmission-remote -n 'username:password' -l | grep 100% | awk '{print $1}'| paste -d, -s | xargs -i transmission-remote -t {} -r

IPv6 を有効にする

デフォルトでは、デーモンは IPv4 接続のみを待機します。 IPv6 接続もリッスンするには、settings.jsonrpc-bind-address オプションを "::" に変更します。

通知

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 ブラウザで手動で http://TARGET_IP_ADDRESS:PORT にアクセスして、 Web インターフェイスを起動する準備ができます。

リスニング・ポートを変更していない場合、デフォルトは9091です。この場合、リンクは http://localhost:9091 になります。

ノート: transmission-cli をインストールする必要があることに注意してください

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"

と同じです。

オプションの Web UI テーマ

ウェブアプリのデフォルトのユーザーインターフェースが気に入らない場合、このシンプルな CSS テーマを使ってみてください。

https://git.eigenlab.org/sbiego/transmission-web-soft-theme

また、デフォルトの UI と共存できる完全な置き換え機能もあります。

https://github.com/ronggang/transmission-web-control

makepkg DLAGENT としての使用法

Transmission は transmission-dlagentAUR ダウンロードエージェントを使えば makepkg のマグネットダウンロードエージェントとして使うことができます。

Magnet URIs はプレフィックスを magnet:? から magnet:// に変更する必要があります。

トラブルシューティング

ネットワーク経由でデーモンにアクセスできない

デーモンは network.service が初期化された後に起動します。しかしながら、(dhcpcd@enp1s0.service などのようにデバイスを指定せずに) dhcpcd サービスを有効にしている場合、Transmission の方が早く起動してネットワークインターフェイスが使えないという状況になることがあります。その場合、ウェブインターフェイスにアクセスできなくなります。解決するにはユニットの設定ファイル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.

グラフィカルインターフェイスを使用している場合でも、Web インターフェイスが機能するためには、transmission-cli をインストールする必要があります。

送受信バッファの設定に失敗しました

送信時に、起動時に次のいずれかのメッセージがジャーナルに表示される場合があります:

UDP Failed to set receive buffer: requested 4194304, got 425984
UDP Failed to set send buffer: requested 1048576, got 425984

これらは、 sysctlnet.core.rmem_max=4194304 および net.core.wmem_max=1048576 を設定することで修正できます。

参照