Transmission
Transmission は軽量でクロスプラットフォームの BitTorrent クライアントです。多くの Linux ディストリビューションでデフォルトの BitTorrent クライアントとして使われています。
インストール
公式リポジトリには複数の選択肢があります:
- transmission-cli - CLI とウェブクライアント (http://localhost:9091) インターフェイスが付属するデーモン。
- transmission-gtk - GTK+ 3 パッケージ。
- transmission-qt - Qt5 パッケージ。
- tremcAUR or tremc-gitAUR – デーモンの curses インターフェース。
- stigAUR / stig-gitAUR デーモンの curses インターフェース。
- transmission-remote-gtk デーモンの GTK 3 グラフィカルインターフェイス。
GUI バージョンの設定
GUI の transmission-gtk と transmission-qt はどちらもバックエンドデーモンを必要としません。
GUI バージョンは特に何も設定しなくても動作するようになっていますが、設定を変えたいと思うときもあるでしょう。GUI の設定ファイルのデフォルトパスは ~/.config/transmission
です。
設定オプションのガイドが Transmission のウェブサイトに記載されています: https://github.com/transmission/transmission/wiki/Editing-Configuration-Files 。
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
デーモンは以下の方法で実行できます:
- 通常のユーザーで以下のコマンドを実行:
$ 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
Wicd
/etc/wicd/scripts/postconnect
フォルダに起動スクリプトを、/etc/wicd/scripts/predisconnect
フォルダに停止スクリプトを作成してください。作成したスクリプトには実行可能属性を付与してください。例:
/etc/wicd/scripts/postconnect/transmission
#!/bin/bash systemctl start transmission
/etc/wicd/scripts/predisconnect/transmission
#!/bin/bash systemctl stop transmission
ユーザーの選択
transmission
を動かす方法を選択してください:
- 別のユーザーで動かす、デフォルトは
transmission
(セキュリティが良くなるので推奨)。
デフォルトでは transmission は transmission
ユーザーとグループを作成してホームファイルを /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
ユーザーで動作させる場合、適切なパーミッションで共有のダウンロードディレクトリを作成して transmission
ユーザーとシステムユーザーの両方がアクセスできるように設定して、設定ファイルもそれにあわせて修正することを推奨します。例:
# mkdir /mnt/data/torrents # chown -R facade:transmission /mnt/data/torrents # chmod -R 775 /mnt/data/torrents
上記のコマンドを実行すると /mnt/data/torrents
にシステムユーザーの facade
と transmission
ユーザーの属している transmission
グループからアクセスできるようになります。どこからも読み書きできるように権限を設定することは極力控えてください (ディレクトリを 777 に chmod しないでください)。かわりに、適切なディレクトリに積雪なユーザー・グループのパーミッションを付与してください。
逆に、ユーザーを transmission
グループに追加 (#usermod -a -G transmission yourusername
) して、transmission
グループのメンバーが読み書きできるように /var/lib/transmission
と /var/lib/transmission/Downloads
ディレクトリのパーミッションを設定するという方法もあります。
ホストのホワイトリスト
サーバーのホスト名を使用してネットワーク経由で 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
ユニットを編集してください。
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.json
で rpc-bind-address
オプションを "::"
に変更します。
Web インターフェイス
GUI 方式
Transmission をインストールすると、 Web インターフェイスを簡単に設定できます。必要なのは、編集 メニューをクリックして、設定 を選択することだけです。 リモート タブをクリックし、 リモート接続を許可 を有効にします。
ここで、デフォルトのリスニング・ポートを9091から変更できます。
認証を利用 を確認し、認証を使用できるようにユーザー名とパスワードを入力します。
セキュリティを強化するには、 以下のIPアドレスのみを許可 を有効にして、任意の IP アドレスからのアクセスを制限します。
これで、デフォルトの Web ブラウザを開く をクリックするか、サポートされている Web ブラウザで手動で http://TARGET_IP_ADDRESS:PORT
にアクセスして、 Web インターフェイスを起動する準備ができます。
リスニング・ポートを変更していない場合、デフォルトは9091です。この場合、リンクは http://localhost: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"
と同じです。
オプションの Web UI テーマ
ウェブアプリのデフォルトのユーザーインターフェースが気に入らない場合、このシンプルな CSS テーマを使ってみてください。
https://git.eigenlab.org/sbiego/transmission-web-soft-theme
また、デフォルトの UI と共存できる完全な置き換え機能もあります。
https://github.com/ronggang/transmission-web-control
トラブルシューティング
ネットワーク経由でデーモンにアクセスできない
デーモンは 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
これらは、 sysctl で net.core.rmem_max=4194304
および net.core.wmem_max=1048576
を設定することで修正できます。