好讀版本
https://takahashi65.blogspot.tw/2017/09/raspberry-pi-3-raspbian-hentaihome.html
前前後後間斷的弄了一個月,確定可以穩定運作至少兩週了,所以來發個技術文
基本上這是一種在本地端跑 [email protected] 最廉價的方案,兩千不到的樹莓派,幾百塊的硬碟外接盒,再加上一個小容量的固態硬碟,五千塊以內打死,而且樹莓派還可以同時作其他事情,如果你不喜歡租 VPS 在遙遠又看不到的機房跑這種東西的話,是可以這樣玩
我省略了一些的東西,像是設定 DHCP 保留,將樹莓派的內部網路位址固定,以及設定 DHCP/NAT 的傳輸埠指定,將特定的傳輸埠開放到網路( WAN )上、並轉發給內部網路( LAN )的指定網路位址,這個各家無線網路分享器的實作介面都不一樣,請自己去查
申請 [email protected] 客戶端、網頁上設定客戶端的部分,請參閱版上其他文章
======
或許很多人會想樹莓派跟一般電腦的架構完全不一樣( ARM 架構的 Broadcom BCM2837 之於一般電腦的 x86-64 處理器)怎麼可能跑這些東西,但其實只要是使用跨平台的方式去撰寫,比如用 Python 或是 Qt 模式去撰寫的軟體通常都可以在各種平台上運行,而 [email protected] 這種運行在 Java 架構上的軟體更不是問題
首先來講一下要運行 [email protected],在樹莓派所運行的 Raspbian 上需要安裝的軟體與設定
https://farm5.staticflickr.com/4397/36634099774_d9eb0e45f1_b.jpg
終端機登入樹莓派
https://farm5.staticflickr.com/4344/37296234096_6cf746d683_b.jpg
再來跑個 sudo apt-get update 跟 sudo apt-get upgrade
https://farm5.staticflickr.com/4420/37086925220_d60f211dd0_b.jpg
使用 speedtest.py 腳本測速一下,確定樹莓派可以連線並跑出最大速度
https://farm5.staticflickr.com/4445/37343184071_4737dd0dcc_b.jpg
sudo apt-get install trickle 安裝限速模組,抓個想要讓 [email protected] 跑的速度
https://farm5.staticflickr.com/4350/23491969508_76345d5876_b.jpg
大概抓個 2 Mbps 然後輸出測試結果,然後去填寫客戶端申請
https://farm5.staticflickr.com/4506/37511013941_60d27d717c_b.jpg
sudo apt-get install default-jre 跟 sudo apt-get install default-jdk
之後 java -version 會像是這樣
其實一開始我也在想不安裝 Oracle Java SE 真的沒問題嗎,畢竟參閱不少資料都說需要 Oracle Java 套件,但跑起來確實是沒問題就是了
接著講一下硬體的部分,樹莓派是使用 MicroSD 記憶卡當作系統硬碟來運作,即使用大容量的記憶卡,但考慮到頻繁的讀寫還是建議使用外接硬碟,畢竟跑 [email protected] 就是要越大的檔案快取空間( Files Served / Maximum Disk Cache Size )越好,弄顆有一定容量的外接硬碟是最佳解,剛好手上有一顆小容量的固態硬碟,可以在讀取速度跟耗電量上取得不錯的平衡,畢竟樹莓派的 USB 埠最大輸出電流量只能到 1200mAh
https://farm5.staticflickr.com/4454/36841884643_b5d18382dd_b.jpg
左邊是樹莓派跟它的風扇,右邊是中華電信光世代的數據機
https://farm5.staticflickr.com/4485/37252604930_07d28cb409_b.jpg
固態硬碟跟外接盒用 3M 魔鬼氈固定在櫃子頂部
接下來要把外接的固態硬碟掛載到樹莓派的系統,並能被運行的 Raspbian 系統存取使用
也就是要把外接硬碟資料清空、建立新的 GPT 分割表與一個 Ext4 格式分割區
因此請確定這顆硬碟裡面沒有你需要的資料
而 Linux 的硬碟管理邏輯跟 Windows 不太一樣,因此可能很多人不能理解把硬碟掛載到資料夾這個概念,沒關係,照作就好(欸?
https://farm5.staticflickr.com/4457/36841893783_d45bf430b3_b.jpg
使用 df -h 指令顯示系統上的磁碟區跟可用空間
https://farm5.staticflickr.com/4507/37479893892_b94f9d8cb8_b.jpg
lsblk 指令顯示硬碟分割狀態跟分割區
https://farm5.staticflickr.com/4484/37479893692_37ae2f09e5_b.jpg
接上外接硬碟並重新開機後可以看到硬碟 sda 與磁碟區 sda1
https://farm5.staticflickr.com/4477/36841893773_184c7fa83d_b.jpg
https://farm5.staticflickr.com/4490/36841893143_314d855d30_b.jpg
使用 fdisk -l 來檢視硬碟與磁碟區的詳細資料,最下面的 /dev/sda 就是外接硬碟
https://farm5.staticflickr.com/4493/37479893592_86963519e9_b.jpg
使用 sudo fdisk /dev/sda 來編輯外接硬碟,先 d 後 w 來刪除硬碟上的分割表與磁碟區
https://farm5.staticflickr.com/4462/36841892713_f43cde6029_b.jpg
再一次 sudo fdisk /dev/sda 建立磁碟區,先 n 後 p、1、按兩次輸入,最後 w 儲存
https://farm5.staticflickr.com/4506/36841892373_ca3c676519_b.jpg
使用 sudo mkfs.ext4 /dev/sda1 來將分割區格式化成 Ext4
https://farm5.staticflickr.com/4473/36841892043_430b8ea047_b.jpg
結果是這樣,將 /dev/sda1 格式化成Ext4
https://farm5.staticflickr.com/4511/36841891553_8e9aec9a45_b.jpg
使用 sudo mkdir /media/hd 來建立一個資料夾,之後外接硬碟會掛載在這裡
並用 sudi chmod 777 /media/hd 的指令給予它權限
https://farm5.staticflickr.com/4485/36841891833_b5da92f554_b.jpg
s -lh /dev/disk/by-uuid 可以看到硬碟與分割區的 UUID
sudo blkid /dev/sda1 列出外接硬碟分割區的 UUID
https://farm5.staticflickr.com/4469/36841891353_9b9a2fbb8b_b.jpg
記住剛剛的 UUID,編輯 fstab 來達成開機自動掛載外接硬碟
https://farm5.staticflickr.com/4489/36841891053_9c2c27bbc0_b.jpg
在最下面加入剛剛的 UUID,並指向 /media/hd
https://farm5.staticflickr.com/4465/36841890793_af75c85c6e_b.jpg
重新開機後外接硬碟就會掛載到 /media/hd 下
https://farm5.staticflickr.com/4462/36841890473_320874c31d_b.jpg
再輸入一次 sudo chmod 777 /media/hd 給予它權限
再來就跟正常安裝一樣,在 /media/hd 建立一個 hath 資料夾
把 HentaiAtHome.jar 丟進 /media/hd/hath,並設定 sudo chmod +x HentaiAtHome.jar
建議安裝一下 screen 這個套件來有效管理 [email protected],畢竟 SSH 終端機登出就會關掉程序這點還蠻討厭的,請參考下面這篇文章
https://goo.gl/jirXb2
再來就是在開啟的 shell 中啟動 HentaiAtHomeGUI.jar,在啟動指令中設定資料夾指向,填入客戶端編號與金鑰就可以完成
https://farm5.staticflickr.com/4499/37511016191_e1a3892fc3_b.jpg
設定 /etc/motd 後可以在登入終端機時看到一些自訂提示
https://farm5.staticflickr.com/4509/37511016381_2cd7685429_b.jpg
使用 df -h 指令就可以看到資料都儲存在外接硬碟
https://farm5.staticflickr.com/4505/37252604300_0dbeeafed2_b.jpg
在 E-hentai 可以看到樹莓派上的客戶端已經連線
兩個客戶端 6000 KBps 大約是亞洲區的百分之二運算力
通常樹莓派都是以 Headless computer (沒有外接螢幕與鍵盤滑鼠)的方式運作,因此可以用一些自動化腳本來監控並在發生異常時提醒你去處理,當然樹莓派內建的硬體看門狗也是必須的
詳細請參考 https://goo.gl/5qomS2
而我也額外寫了一些基於 Python 的小程式來監控,並使用 Crontab 來達成自動化運作
並在異常時通知我,我把撰寫好的程式放在 GitHub 上,可以自由取用
https://github.com/Suzhou65/RaspberryPi-Automatically-Report
https://farm5.staticflickr.com/4474/37252604030_5472a9382b_b.jpg
使用 Crontab 來來達成自動化運作,回報處理器溫度與 [email protected] 異常運作
https://farm5.staticflickr.com/4449/36841884903_e4e06bda78_b.jpg
定時回報處理器溫度與在 [email protected] 異常時回報