Transmission结合File browser搭建小型BT云站
Miyagi Lv1

通过Transmission提供种子文件的上传、下载和做种,File browser 作为在线文件浏览器提供部分格式视频(mp4、flv)在线收看和文件下载功能。

  • 操作系统:Ubuntu 18.04 LTS

    Transmission部署

    安装下载

    可以直接通过apt安装
    1
    2
    sudo apt-get update
    sudo apt-get install transmission-daemon

    配置

    Transmission的配置文件默认放在/etc/transmission-daemon/setting.json。在安装完毕后,Transmission会默认启动,修改配置文件之前先通过下面的命令停止服务:
    1
    sudo systemctl stop transmission-daemon
    通过Vim打开setting.json配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    {
    "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", #开启IPV4地址绑定
    "bind-address-ipv6": "::", #开启IPV6地址绑定
    "blocklist-enabled": false, #启用黑名单
    "blocklist-url": "http://www.example.com/blocklist", #黑名单地址
    "cache-size-mb": 4,
    "dht-enabled": false, #DTH启用,这里我们要关闭
    "download-dir": "/home/transmission-daemon/downloads", #默认下载目录
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true, #启用下载队列
    "download-queue-size": 40,
    "encryption": 2, #修改为2
    "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": 2000,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 2000,
    "peer-limit-per-torrent": 500,
    "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": 1,
    "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,设置为True
    "rpc-password": "", #密码,编辑的时候输入明文密码,保持之后,自动变为加密的
    "rpc-port": 12333,
    "rpc-url": "/transmission/",
    "rpc-username": "username", #用户名
    "rpc-whitelist": "", #白名单IP,多个IP用‘,'分隔,可以直接修改成0.0.0.或者*
    "rpc-whitelist-enabled": true, #是否启用白名单,如果需要可以修改为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": 300,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 500,
    "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
    }
    按需要修改完成后就可以通过以下命令启动服务。
    1
    sudo systemctl start transmission-daemon
    启动后WebUI默认运行在9091端口,通过如下网址即可访问:
    1
    http://<你的ip地址>:9091/transmission/web/

    File browser部署

  • Github:https://github.com/filebrowser/filebrowser
  • Site:https://filebrowser.org/

    安装下载

    官网给出的安装脚本如下:
    1
    curl -fsSL https://filebrowser.org/get.sh | bash
    部分机器可能会出现如下的错误提示:
    1
    curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    可以通过手动访问https://raw.githubusercontent.com/filebrowser/get/master/get.sh的方式获取如下的脚本源码,手动创建get.sh脚本文件执行下载安装。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    #!/usr/bin/env bash
    #
    # File Browser Installer Script
    #
    # GitHub: https://github.com/filebrowser/filebrowser
    # Issues: https://github.com/filebrowser/filebrowser/issues
    # Requires: bash, mv, rm, tr, type, grep, sed, curl/wget, tar (or unzip on OSX and Windows)
    #
    # This script installs File Browser to your path.
    # Usage:
    #
    # $ curl -fsSL https://filebrowser.xyz/get.sh | bash
    # or
    # $ wget -qO- https://filebrowser.xyz/get.sh | bash
    #
    # In automated environments, you may want to run as root.
    # If using curl, we recommend using the -fsSL flags.
    #
    # This should work on Mac, Linux, and BSD systems, and
    # hopefully Windows with Cygwin. Please open an issue if
    # you notice any bugs.
    #

    install_filemanager()
    {
    trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; return 1' ERR
    filemanager_os="unsupported"
    filemanager_arch="unknown"
    install_path="/usr/local/bin"

    # Termux on Android has $PREFIX set which already ends with /usr
    if [[ -n "$ANDROID_ROOT" && -n "$PREFIX" ]]; then
    install_path="$PREFIX/bin"
    fi

    # Fall back to /usr/bin if necessary
    if [[ ! -d $install_path ]]; then
    install_path="/usr/bin"
    fi

    # Not every platform has or needs sudo (https://termux.com/linux.html)
    ((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo"

    #########################
    # Which OS and version? #
    #########################

    filemanager_bin="filebrowser"
    filemanager_dl_ext=".tar.gz"

    # NOTE: `uname -m` is more accurate and universal than `arch`
    # See https://en.wikipedia.org/wiki/Uname
    unamem="$(uname -m)"
    case $unamem in
    *aarch64*)
    filemanager_arch="arm64";;
    *64*)
    filemanager_arch="amd64";;
    *86*)
    filemanager_arch="386";;
    *armv5*)
    filemanager_arch="armv5";;
    *armv6*)
    filemanager_arch="armv6";;
    *armv7*)
    filemanager_arch="armv7";;
    *)
    echo "Aborted, unsupported or unknown architecture: $unamem"
    return 2
    ;;
    esac

    unameu="$(tr '[:lower:]' '[:upper:]' <<<$(uname))"
    if [[ $unameu == *DARWIN* ]]; then
    filemanager_os="darwin"
    elif [[ $unameu == *LINUX* ]]; then
    filemanager_os="linux"
    elif [[ $unameu == *FREEBSD* ]]; then
    filemanager_os="freebsd"
    elif [[ $unameu == *NETBSD* ]]; then
    filemanager_os="netbsd"
    elif [[ $unameu == *OPENBSD* ]]; then
    filemanager_os="openbsd"
    elif [[ $unameu == *WIN* || $unameu == MSYS* ]]; then
    # Should catch cygwin
    sudo_cmd=""
    filemanager_os="windows"
    filemanager_bin="filebrowser.exe"
    filemanager_dl_ext=".zip"
    else
    echo "Aborted, unsupported or unknown OS: $uname"
    return 6
    fi

    ########################
    # Download and extract #
    ########################

    echo "Downloading File Browser for $filemanager_os/$filemanager_arch..."
    if type -p curl >/dev/null 2>&1; then
    net_getter="curl -fsSL"
    elif type -p wget >/dev/null 2>&1; then
    net_getter="wget -qO-"
    else
    echo "Aborted, could not find curl or wget"
    return 7
    fi

    filemanager_file="${filemanager_os}-$filemanager_arch-filebrowser$filemanager_dl_ext"
    filemanager_tag="$(${net_getter} https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')"
    filemanager_url="https://github.com/filebrowser/filebrowser/releases/download/$filemanager_tag/$filemanager_file"
    echo "$filemanager_url"

    # Use $PREFIX for compatibility with Termux on Android
    rm -rf "$PREFIX/tmp/$filemanager_file"

    ${net_getter} "$filemanager_url" > "$PREFIX/tmp/$filemanager_file"

    echo "Extracting..."
    case "$filemanager_file" in
    *.zip) unzip -o "$PREFIX/tmp/$filemanager_file" "$filemanager_bin" -d "$PREFIX/tmp/" ;;
    *.tar.gz) tar -xzf "$PREFIX/tmp/$filemanager_file" -C "$PREFIX/tmp/" "$filemanager_bin" ;;
    esac
    chmod +x "$PREFIX/tmp/$filemanager_bin"

    echo "Putting filemanager in $install_path (may require password)"
    $sudo_cmd mv "$PREFIX/tmp/$filemanager_bin" "$install_path/$filemanager_bin"
    if setcap_cmd=$(PATH+=$PATH:/sbin type -p setcap); then
    $sudo_cmd $setcap_cmd cap_net_bind_service=+ep "$install_path/$filemanager_bin"
    fi
    $sudo_cmd rm -- "$PREFIX/tmp/$filemanager_file"

    if type -p $filemanager_bin >/dev/null 2>&1; then
    echo "Successfully installed"
    trap ERR
    return 0
    else
    echo "Something went wrong, File Browser is not in your path"
    trap ERR
    return 1
    fi
    }

    install_filemanager
    脚本创建完成后通过
    1
    bash get.sh
    即可完成下载。

    配置

    如果是在根目录下完成的安装,该目录下会生成filebrowser.db文件,可通过如下方式进行相关配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #设置监听地址
    filebrowser -d ~/filebrowser.db config set --address 0.0.0.0
    #设置监听端口
    filebrowser -d ~/filebrowser.db config set --port 8088
    #设置语言环境
    filebrowser -d ~/filebrowser.db config set --locale zh-cn
    #设置日志位置
    filebrowser -d ~/filebrowser.db config set --log /var/log/filebrowser.log
    #添加一个用户,其中的root和password分别是用户名和密码,根据自己的需求更改
    filebrowser -d ~/filebrowser.db users add root password --perm.admin
    Transmission服务下载的文件默认存放在/var/lib/transmission-daemon/downloads下面,通过如下命令开启file browser服务,并将默认浏览目录指向transmission的下载文件:
    1
    filebrowser -r /var/lib/transmission-daemon/downloads -d ~/filebrowser.db
    通过访问对应端口服务,输入用户名密码即可进行文件浏览和下载等服务。
 评论