- 逆向行駛 - https://520.be/ -

[CentOS]安裝BT軟體Transmission

🚀 【CentOS 教學】VPS 還能怎麼玩?化身 24 小時 BT 下載神器:Transmission 完整編譯安裝攻略

🔥 一句話總結:既然都花錢租了伺服器,頻寬放著也是浪費!本篇手把手帶你在 CentOS 系統上安裝輕量、高效的 Transmission,將伺服器變成一台永遠不關機的專屬下載機。

很多玩家租用 VPS(虛擬專屬主機)後,除了架設個人部落格、裝個 Proxy 或 VPN 翻牆之外,往往會發現:🚨 伺服器的頻寬根本閒置太多啦! 為了把月租費的價值榨乾,我決定在上面掛 BT 種子進行下載!

💡 白話文教室:為什麼要用 VPS 掛 BT?
租用 VPS 就像是在網路上租了一間 💙 24 小時不斷水不斷電的雲端小套房。如果你只拿來放一個沒什麼人看的網頁,就像是每個月繳了水電費卻從來不洗澡一樣浪費。把 BT 軟體裝上去,它就成了一個不用佔用你家電腦資源、全天候幫你跑腿抓檔案的「專屬數位管家」。

不過在動手之前,⚠️ 溫馨提醒: 安裝前最好事先詢問你的主機商是否允許進行 P2P 下載,只要下載的是合法的開源文件通常都是沒問題的。


🟩🟩🟩

🤔 為什麼選擇 Transmission?

由於 CentOS 是一套極度強調「企業級安全」的作業系統,天生對 P2P 這類應用並不友善。我曾嘗試過純網頁介面的 Torrentflux [7],也試過許多老司機推薦的 rTorrent [8],但最後我還是選擇了 Transmission [9]!原因如下:

  • 💯 輕量不卡頓:佔用系統資源極少,不會拖垮你 VPS 上的其他網站服務。
  • 🎁 功能超齊全:程式本身支援 DHT、PEX,同時支援傳輸加密與線上更新黑名單功能。
  • 🌐 完美網頁管理:內建超直覺的 Web UI 網頁管理模組,完全不需要另外架設伺服器,裝好就能直接透過瀏覽器遠端控制!
  • 支援繁體中文介面與 UTF-8 編碼,介面簡潔漂亮,且社群有超多熱心人士開發好用的外掛程式。

📜 Transmission 歷代更新歷史 (CentOS 適用)

為了確保穩定度,以下是我一路走來測試過的版本演進(目前環境以 CentOS 7 為主):

📅 更新日期 ⚙️ 版本與說明
2009/12/04 首次發表文章與安裝紀錄
2010/09/22 更新版本為 v1.93
2010/10/17 更新版本為 v2.10 (正式增加 CentOS 專用啟動腳本)
2010/11/12 更新版本為 v2.11 (效能最佳化,跑得更快了)
2010/11/22 更新版本為 v2.12 (修正程式偶發性耍冷當機問題)
2011/10/20 更新版本為 v2.41
⭐ 2019/11/16 更新版本為 v2.94 for CentOS 7 (本次教學核心)

🔷🔷🔷

🛠️ 手把手安裝教學 (CentOS 7 環境)

因為 CentOS 預設套件庫 (YUM) 提供的 Transmission 版本往往不是最新版,用起來「總覺得怪怪的」,所以我們這次要捲起袖子,親自下載原始碼來編譯

💡 白話文教室:什麼是「編譯」?
利用 YUM 安裝那些落落長的相依套件,就像是你準備組裝一套 IKEA 高級衣櫃前,先跑去「特力屋」把螺絲起子、電鑽、安全帽(基礎環境)通通買齊。準備好工具後,我們才能把官方提供的木板原料(原始碼)親手組裝(編譯)成完美的衣櫃(執行檔)。

  • ❶ 新增 EPEL、SCL 官方套件庫 (Repo)
    首先要匯入擴充資源庫,讓系統找得到我們需要的工具。

    yum install -y epel-release centos-release-scl-rh centos-release-scl yum-utils
    sudo yum-config-manager --enable epel centos-sclo-rh centos-sclo-sclo
    sudo update -y
  • ❷ 安裝必備的編譯套件
    把組裝程式需要的編譯器與函式庫一次裝齊:

    yum install -y gcc gcc-c++ m4 make automake libtool gettext openssl-devel pkgconfig perl-libwww-perl perl-XML-Parser curl curl-devel libidn-devel zlib-devel which python-devel sqlite-devel xz
  • ❸ 下載核心套件與 Transmission 原始碼
    前往 /opt 目錄,下載 libevent、libiconv 以及 Transmission 2.94 的安裝包。

    cd /opt
    wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
    wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.16.tar.gz
    wget https://github.com/transmission/transmission-releases/raw/master/transmission-2.94.tar.xz
  • ❹ 依序解壓縮並編譯安裝
    🚨 注意事項: 這裡必須「嚴格按照順序」安裝,否則後面的主程式會找不到相依函式庫而報錯喔!

    A. 解壓縮:

    cd /opt
    tar zxf libiconv-*.tar.gz
    tar zxf libevent-*-stable.tar.gz
    xz -d transmission-*.tar.xz && tar xf transmission-*.tar

    B. 安裝 libiconv:

    cd /opt
    cd libiconv-*
    ./configure --prefix=/usr --sysconfdir=/etc
    make && make install
    /sbin/ldconfig

    C. 安裝 libevent:

    cd /opt
    cd libevent-*-stable
    ./configure --prefix=/usr --sysconfdir=/etc
    make && make install
    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    /sbin/ldconfig

    D. 安裝 Transmission 主程式:

    export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
    cd /opt/transmission-*
    ./configure --prefix=/usr CFLAGS=-liconv --enable-lightweight --enable-utp --enable-nls
    make -s && make -s install

    💡 隱藏密技: 如果主程式 configure 失敗,可以切換成下方這個精簡指令再試一次:

    ./configure --prefix=/usr --enable-lightweight --enable-utp --enable-nls

  • ❺ 建立專屬工作目錄
    清理剛才編譯產生的垃圾檔,並建立 Transmission 專用的資料夾存放下載檔案與種子。

    cd /opt
    rm -rf intltool-* libiconv-* libevent-* transmission-*
    mkdir -p /usr/local/transmission
    mkdir -p /opt/transmission/incomplete
    mkdir -p /opt/transmission/complete
    mkdir -p /opt/transmission/torrent

🔶🔶🔶

⚙️ 核心設定:打造專屬管家規則

  • ❻ 產生初始設定檔(🚨 必考重點)
    必須啟動背景服務來自動產生 settings.json 檔案。🚦 這個步驟一定要執行兩次! 先啟動、殺掉程序,再啟動、再殺掉程序,確保檔案完整寫入。

    /usr/bin/transmission-daemon -g /usr/local/transmission
    killall transmission-daemon
    /usr/bin/transmission-daemon -g /usr/local/transmission
    killall transmission-daemon
  • ❼ 編輯設定檔 (settings.json)

    備份並修改配置:

    cp /usr/local/transmission/settings.json /usr/local/transmission/settings.json.bak
            vi /usr/local/transmission/settings.json

    💡 白話文教室:解讀設定檔
    修改 settings.json 就像是你在規定這位「數位管家」的行為守則:東西抓好要放在哪個房間 (download-dir)、遇到大任務最多能開幾個包裹通道 (peer-limit-global),以及你從遠端下達指令時,要對哪組暗號密碼 (rpc-password)。

    以下是幾個最核心必改的參數(將遠端控制的 Port 改為 5566):

    "download-dir": "/opt/transmission/complete", // 下載完成儲存的位置
    "incomplete-dir": "/opt/transmission/incomplete", // 尚未下載完成儲存的位置
    "script-torrent-done-enabled": true, // 下載完成後呼叫script
    "script-torrent-done-filename": "/var/lib/scripts/posttorrent.sh", // 呼叫的script所在位置
    "open-file-limit": 128, // 最大開啟檔案數量
    "peer-limit-global": 480, // 最大連接數
    "peer-limit-per-torrent": 60, // 單一任務連接數
    "peer-port": 59999, // Transmission P2P 連接使用的port
    "ratio-limit": 2.0000, // 上下傳比例達到多少停止做種
    "ratio-limit-enabled": false, // 啟用可限制上下傳比例
    "rpc-enabled": true, // 啟用網頁管理模組
    "rpc-bind-address": "0.0.0.0", // 指定IP位置 (0.0.0.0 代表皆可)
    "rpc-port": 5566, // 指定網頁管理模組的port
    "rpc-authentication-required": true, // 啟用使用者認證方式
    "rpc-username": "您的帳號", // 登入的使用者名稱
    "rpc-password": "您的密碼", // 登入的使用者密碼
    "upload-slots-per-torrent": 30 // 每個Torrent的上傳連接數量

    ⚠️ 溫馨警告: 如果你的 VPS 效能比較弱(俗稱的動物機),「開啟檔案數量」和「連接數」千萬不能調太高,免得系統負載過重直接罷工!(過於跛腳的網路,上傳連接數建議設為 10)


🟪🟪🟪

🛡️ 系統整合與防火牆放行

  • ❽ 建立 Systemd 啟動腳本
    讓 Transmission 可以隨系統開機自動啟動,並指定 Log 紀錄檔位置。

    touch /var/log/transmission.log
    chmod 777 /var/log/transmission.log
    rm -f /etc/systemd/system/transmission.service
    wget -O /etc/systemd/system/transmission.service http://520.be/wp-upload/transmission.service.TXT
    chmod +x /etc/systemd/system/transmission.service
    systemctl daemon-reload
    [Unit]
    Description=Transmission BT Daemon
    After=network.target
    
    [Service]
    User=transmission
    LimitNPROC=500000
    LimitNOFILE=500000
    ExecStart=/usr/bin/transmission-daemon -f --log-error -g /usr/local/transmission --logfile /var/log/transmission.log
    
    [Install]
    WantedBy=multi-user.target
  • ❾ 新增專屬使用者並賦予權限
    基於資安考量,我們不使用 Root,而是新建一個 transmission 帳號來跑服務。
    🚨 執行後會要求輸入密碼兩次,請務必記好!

    useradd transmission && passwd transmission

    設定資料夾擁有者權限:

    chown -R transmission:transmission /opt/transmission
    chown -R transmission:transmission /usr/local/transmission
  • ❿ 防火牆 (iptables) 開放連接埠

    💡 白話文教室:防火牆打洞
    Linux 的防火牆就像是大樓的保全系統。如果你不跟保全說一聲,即便你的網頁介面已經跑起來了,你在外面也是連不進去的。我們必須新增規則,讓 Port 5566 (控制介面) 和 Port 59999 (檔案傳輸通道) 能夠順利通行。

    service iptables stop
    iptables -A INPUT -p tcp --dport 5566 -j ACCEPT
    iptables -A INPUT -p tcp --dport 59999:61000 -j ACCEPT
    iptables-save | tee /etc/sysconfig/iptables
    systemctl restart iptables

    最後,啟動服務並檢查運行狀態:

    systemctl enable transmission && systemctl start transmission && systemctl status transmission -l
    ps ax | grep transmission-daemon && netstat -tulpn | grep transmission*

🎉 大功告成! 現在,只要打開瀏覽器,輸入 http://你的IP或域名:5566,並輸入剛剛在設定檔填寫的帳號密碼,就能馬上透過漂亮的介面遠端遙控你的 BT 下載機了! 🏎️


🟫🟫🟫

🖇️ 延伸閱讀與引用來源

列印本文 [16] 👨‍👩‍👧‍👦 17 次瀏覽