Ubuntu安装Transmission并使用nginx进行反向代理

Transmission是一款Linux平台常用的BitTorrent客户端,硬件资源占用极少。Transmission以MIT许可证和GNU通用公共许可证双许可证授权,因此是一款自由软件。本文详细介绍如何在Ubuntu 18.04上安装最新版本的Transmission以及如何使用nginx对Transmission的控制面板进行反代。

添加最新版ppa源并安装

sudo apt-get update && apt-get install software-properties-common -y
sudo add-apt-repository ppa:transmissionbt/ppa
sudo apt-get update && apt-get install transmission-daemon -y

安装成后系统会多出如下一些命令行工具:

  • transmission-cli: 独立的命令行客户端。
  • transmission-create: 用来建立.torrent种子文件的命令行工具。
  • transmission-daemon: 后台守护程序。
  • transmission-edit: 用来修改.torrent种子文件的announce URL。
  • transmission-remote: 控制daemon的程序。
  • transmission-show:查看.torrent文件的信息。

使用如下命令开启或停止Transmission

sudo service transmission-daemon start    # 启动Transmission
sudo service transmission-daemon stop     # 停止Transmission

配置Transmission

创建Transmission工作目录

通过以下命令创建Transmission工作目录,其中download为数据存储目录,temp为临时文件目录。未下载完成的文件保存在temp目录,下载完成后保存到download目录。

sudo mkdir /home/transmission && cd /home/transmission
sudo mkdir download && mkdir temp
sudo chmod -R 777 /home/transmission #更改读写权限

修改Transmission配置文件

在编辑Transmission配置文件的时候,需要先关闭daemon进程,否则编辑的参数将会被覆盖到原来的状态:

sudo service transmission-daemon stop

复制以下内容到终端并执行,以修改Transmission配置文件:

sudo cat > /etc/transmission-daemon/settings.json << EOF
{
    "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",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": false,
    "download-dir": "/home/transmission/download",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": false,
    "download-queue-size": 5,
    "encryption": 2,
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/home/transmission/temp",
    "incomplete-dir-enabled": true,
    "lpd-enabled": true,
    "max-peers-global": 10000,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 10000,
    "peer-limit-per-torrent": 200,
    "peer-port": 51415,
    "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": true,
    "preallocation": 1,
    "prefetch-enabled": true,
    "queue-stalled-enabled": false,
    "queue-stalled-minutes": 30,
    "ratio-limit": 30,
    "ratio-limit-enabled": true,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": false,
    "rpc-password": "hanada.info",
    "rpc-port": 8421,
    "rpc-url": "/transmission/",
    "rpc-username": "transmission",
    "rpc-whitelist": "127.0.0.1",
    "rpc-whitelist-enabled": false,
    "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": 100,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 100,
    "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
}
EOF

启动Transmission

sudo service transmission-daemon start  # 启动Transmission

访问IP地址:8421/transmission/web/即可打开管理面板,使用前面配置文件中设置的用户名和密码登录即可。本例中设置的用户名:transmission ,密码:hanada.info ,可自行修改为自己想用的用户名(rpc-username)、密码(rpc-password)以及端口号(rpc-port)等信息。注意需要先关闭daemon进程,否则编辑的参数将会被还原,另外密码配置信息在生效后会自动被哈希,所以运行后重写打开配置文件会发现密码已经被哈希,如果要修改的话也是直接删掉哈希后的密码填入即可,下次启动你填入的密码也会被哈希并生效。

本例中相关的配置如下:
用户名:transmission
密码:hanada.info
端口:8421(由于需要使用nginx反向代理,因此这里不建议使用80、443等端口)
临时文件路径:/home/transmission/temp
下载文件路径:/home/transmission/download

配置文件中还有许多配置项就不一一介绍了,感兴趣的可以去查找一下资料。

使用nginx反向代理管理面板

创建nginx虚拟机

使用前先确保你以安装nginx,以下提供简要安装命令,若已安装则可跳过。为了安全考虑,nginx反向代理将使用https,SSL证书申请相关问题请自行查阅相关资料或者看本站关于免费申请SSL证书的文字。

sudo add-apt-repository ppa:ondrej/nginx-mainline -y
sudo apt-get update && apt-get install nginx -y

创建nginx虚拟机配置
sudo vim /etc/nginx/sites-available/transmission

复制以下内容到虚拟机配置文件,注意修改server_name为自己使用的域名,保存并退出。

server {
   listen *:443 ssl http2;       #ipv4监听 https
   listen [::]:443 ssl http2;    #ipv6监听 https
   
   ssl_certificate /etc/nginx/certs/hanada.info/fullchain;      # SSL证书路径
   ssl_certificate_key /etc/nginx/certs/hanada.info/key;        # SSL私钥路径

   server_name    ****.hanada.info;                      # 域名

   client_header_buffer_size 8k;
   client_max_body_size 68m;
   ssl_session_tickets off;
   ssl_stapling on;
   ssl_stapling_verify on;

   ssl_session_cache shared:le_nginx_SSL:1m;
   ssl_session_timeout 1440m;

   ssl_protocols TLSv1.3 TLSv1.2;
   ssl_prefer_server_ciphers on;

   ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
   #ssl_ecdh_curve secp384r1;

   #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";            # HSTS,如有需要可以去掉注释,includeSubdomains为包含子域名,可以根据需要决定是否保留。
      
   location ^~ /transmission {
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_set_header X-NginX-Proxy true;
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       proxy_pass_header  X-Transmission-Session-Id;
       add_header   Front-End-Https   on;
       
       location /transmission/rpc {
           proxy_pass http://127.0.0.1:8421;
       }
      
       location /transmission/web/ {
           proxy_pass http://127.0.0.1:8421;
       }
      
       location /transmission/upload {
           proxy_pass http://127.0.0.1:8421;
       }

       location /transmission/web/style/ {
           alias /usr/share/transmission/web/style/;
       }
      
       location /transmission/web/javascript/ {
           alias /usr/share/transmission/web/javascript/;
       }
      
       location /transmission/web/images/ {
           alias /usr/share/transmission/web/images/;
       }
          
       location /transmission/ {
           return 301 https://$server_name/transmission/web;
       }
    }
}

启用nginx虚拟机

sudo ln -s /etc/nginx/sites-available/transmission /etc/nginx/sites-enabled/transmission
sudo service nginx reload     #重载nginx使虚拟机生效

浏览器访问 https://****.hanada.info 即可进入Transmission管理面板。
建议同时添加一下http->https的重定向,删掉sites-available内的default文件并且再另外新增一个配置文件用于重定向即可,写法如下。

server {
    listen 80;
    listen [::]:80;

    server_name ****.hanada.info;
    
    location / {
        return 301 https://****.hanada.info$request_uri;
    }
}

美化Transmission管理面板

Transmission自带的管理面板比较简单,推荐一个美化版的管理面板,项目地址:https://github.com/ronggang/transmission-web-control

下载面板安装脚本

使用如下命令下载管理面板的安装脚本:

wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh

安装面板

chmod +x install-tr-control-cn.sh && bash install-tr-control-cn.sh

如果脚本执行成功,将出现以下界面。按照提示,输入相应的数字,按回车即可。这里选择1,安装管理面板。安装完成后刷新 example.com 即可看到效果。

欢迎使用 Transmission Web Control 中文安装脚本。
官方帮助文档:https://github.com/ronggang/transmission-web-control/wiki 
安装脚本版本:1.2.2-beta 

1. 安装最新的发布版本(release);
2. 安装指定版本,可用于降级;
3. 恢复到官方UI;
4. 重新下载安装脚本(install-tr-control-cn.sh);
5. 检测 Transmission 是否已启动;
6. 指定安装目录;
9. 安装最新代码库中的内容(master);
===================
0. 退出安装;
    
请输入对应的数字:
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注