Windows Defenderに消されないTorrentクライアント

概要

DockerでTorrentクライアントを動かすとWindows Defenderに消されずにすみます。

背景

ひさしぶりにUbuntuのisoをダウンロードしようとTorrentクライアント(uTorrent)を起動したところ、Windows Defenderに消されていました。
新しいソフトを探すのもWindows Defenderを切るのもいやなのでDockerコンテナで動かすことにしました。

やりかた

軽量LinuxのAlpineにTransmissionというTorrentクライアントをインストールします。

Dockerは事前にインストールしておいてください。

適当な作業フォルダを作り、コマンドプロンプトで作業フォルダに移動します。

次のDockerfileを作成します。

FROM alpine:latest

ARG config_dir="/root/.config/transmission-daemon"
ARG settings_file="$config_dir/settings.json"

RUN apk --update add transmission-daemon && \
    rm -rf /var/cache/apk/*
# dump-settings option will be output to standard error.
RUN /usr/bin/transmission-daemon --dump-settings 2> "/root/settings.json"
# Creating the 'config' directory in advance causes, the 'dump-settings' option output NULL.
# Because transmission to attempt to read the empty config directory.
RUN mkdir /torrent && \
    chmod 666 /torrent && \
    mkdir -p $config_dir && \
    chmod 666 $config_dir && \
    mv /root/settings.json $settings_file
RUN sed -i 's/"rpc-whitelist-enabled": [^,]*/"rpc-whitelist-enabled": false/' $settings_file && \
    sed -i 's/"rpc-host-whitelist-enabled": [^,]*/"rpc-host-whitelist-enabled": false/' $settings_file && \
    sed -i 's/"download-dir": [^,]*/"download-dir": "\/torrent"/' $settings_file && \
    sed -i 's/"incomplete-dir": [^,]*/"download-dir": "\/torrent"/' $settings_file && \
    sed -i 's/"speed-limit-up": [^,]*/"speed-limit-up": 100/' $settings_file && \
    sed -i 's/"speed-limit-up-enabled": [^,]*/"speed-limit-up-enabled": true/' $settings_file && \
    sed -i 's/"upload-slots-per-torrent": [^,]*/"upload-slots-per-torrent": 0/' $settings_file

EXPOSE 9091

ENTRYPOINT /usr/bin/transmission-daemon --foreground

Dockerイメージをビルドします。

docker build -t transmission .

動作確認

Transmissionコンテナを立ち上げます。

docker run --rm -d -v <ファイルを保存するディレクトリ>:/torrent -p 9091:9091 transmission

履歴など残ると嫌なのでrmオプションで終了時にコンテナを削除しています。
回線が遅いなどで途中でダウンロードを中断する場合は、rmオプションを除けばコンテナの再開時にダウンロード状況も引き継げます。

ブラウザからリダイレクトしたポート(localhost:9091)にアクセスします。

アクセスできました。

左上のフォルダアイコンからtorrentファイルを追加できます。

おまけ

Transmissionにアクセスすると403エラーになる

「403: Forbidden」と表示される場合はwhitelistのせいのようです。

この記事ではsettings.jsonの方で無効にしていますが、以下のように書く方法もあります。(Downloadディレクトリの指定も同様)

ENTRYPOINT /usr/bin/transmission-daemon --foreground -a *.*.*.*

コンテナが即終了する

Dockerではフォアグラウンドで動いているプロセスが無いと即終了するようでforegroundオプションを付けています。

ENTRYPOINT /usr/bin/transmission-daemon --foreground

ダウンロードが遅い

アップロードを止めようと”speed-limit-up”を0にすると、ダウンロードも遅くなっている気がしたので100にしています。(torrentってそういうもの?)
Web Interfaceの右にあるメニューアイコンから速度は変更できます。
0にしたい場合はsettngs.jsonから変更する必要があります。

github

GitHub - myusei/transmission-alpine
Contribute to myusei/transmission-alpine development by creating an account on GitHub.

コメント