在 Docker 上部署使用 Let's Encrypt 憑證進行加密連線的 aria2 + aria2 WebUI

你可能常常覺得在自己電腦上抓 BitTorrent 不方便,
不要緊,身為一個資訊人,來自己架一台伺服器,使用 aria2 下載在幾乎任何協定上的資源。

本文以 Ubuntu 14.04 作例。
本篇為使用加密連線的架設教學,若需要無加密連線的架設教學,請參閱:https://blog.birkhoff.me/deploy-unsecure-aira2-and-aria2_webui-on-docker
此方法與 Cloudflare 搭配使用會有問題,一個是如果搭配 Cloudflare Universal SSL 會有無限重定向迴圈的問題,另一個就是需要關閉「Speed」選單中「Auto Minify」中的「JavaScript」,否則管理網頁會出現問題。

部署

啟動 jwilder/nginx-proxy 映像檔

執行下列指令以啟動 jwilder/nginx-proxy 映像檔並設定伺服器監聽並轉發 80、443 TCP 連線埠的連線到容器內,以及自主機中的 /data/certs 資料夾存取憑證檔案、自主機中的 /data/htpasswd 資料夾存取 Basic Access Authentication 設定檔。

$ docker run -d -p 80:80 -p 443:443 --name nginx-proxy -v /data/certs:/etc/nginx/certs:ro -v /etc/nginx/vhost.d -v /var/run/docker.sock:/tmp/docker.sock:ro -v /data/htpasswd:/etc/nginx/htpasswd -v /usr/share/nginx/html jwilder/nginx-proxy
啟動 jrcs/letsencrypt-nginx-proxy-companion 映像檔

再來是要啟動 jrcs/letsencrypt-nginx-proxy-companion 映像檔,且自主機中的 /data/certs 資料夾存取憑證檔案:

$ docker run -d -v /data/certs:/etc/nginx/certs:rw --volumes-from nginx-proxy -v /var/run/docker.sock:/var/run/docker.sock:ro jrcs/letsencrypt-nginx-proxy-companion
啟動 aria2 RPC Server 容器

下面的資料會將 aria2 的資料都存在 /data/aria2/。這裡你需要將所有的 {DOMAIN}{EMAIL}{RPC_SECRET} 分別換為你 aria2 的網域名稱你的 email address(用來註冊 letsencrypt)以及隨機生成的密碼(這個要記下來)。

$ docker run -itd -e VIRTUAL_HOST={DOMAIN} -e "LETSENCRYPT_HOST={DOMAIN}" -e "LETSENCRYPT_EMAIL={EMAIL}" -v /data/aria2/:/data -v /data/certs:/data/certs --net host -p 6800:6800 timonier/aria2 --dir=/data --enable-rpc --rpc-listen-all=true --rpc-certificate=/data/certs/{DOMAIN}.crt --rpc-private-key=/data/certs/{DOMAIN}.key --rpc-secure --rpc-secret={RPC_SECRET}
啟動 aria2 網頁介面

接下來是啟動 aria2 網頁介面,其中,請將 {DOMAIN}{EMAIL}分別換為你 aria2 的網域名稱以及你的 email address(用來註冊 letsencrypt):

$ docker run -itd -p 1828:80 -e VIRTUAL_HOST={DOMAIN} -e "LETSENCRYPT_HOST={DOMAIN}" -e "LETSENCRYPT_EMAIL={EMAIL}" timonier/webui-aria2
aria2 網頁管理介面密碼設定

若你需要使用 Basic Access Authentication 進行 aria2 網頁管理界面的登入,請執行下列指令,其中,DOMAIN 請換為你 aria2 的網域名稱、USERNAME 換為你要設定的登入的賬號、PASSWORD 換為你要設定的登入密碼。(密碼會進行加密)

$ apt-get install apache2-utils
$ htpasswd -bc /data/htpasswd/DOMAIN USERNAME PASSWORD

設定連線資料

請以你喜好的網頁瀏覽器打開:http://domain

你大概會看到這樣的畫面:

右上角應當會彈出連線失敗的對話框,此時請點開選單的「Settings」->「Connection Settings」,它應該長這樣:

請照著圖示內容進行設定,其餘設定請維持預設。填寫完成後,按下最下方的藍色按鈕「Save Connection configuration」進行設定的儲存。

接著,右上角應該會彈出連線成功的訊息。

測試

你可以試試下載這個 1GB 大小的下載測試檔案:

http://ipv4.download.thinkbroadband.com/1GB.zip

若你看到如下的畫面,說明你完成設定囉!