【干貨】將WD My Cloud Gen2改造成私人在線云播服務器

前段時間入手了西數的My Cloud個人云,估計是由于國內網絡環境的原因,官方的遠程同步和管理功能基本連不上。于是計劃用My Cloud自己重新搭一個私有云。下面記錄一下折騰的過程和坑。

折騰思路


My Cloud 有 Gen1(固件版本 0.3.xx、04.xx)和 Gen2(固件版本2.xx)兩種,Gen2相當于是第二代,硬件升級了一點,但系統也更封閉,
關鍵Gen1的教程Gen2完全不適用!
WD論壇上的俄羅斯大神fox_exe為Gen2提供了三種折騰方法:

  1. 原生系統破解+第三方APP
  2. 原生系統破解后安裝黑群暉系統
  3. 刪掉原系統安裝純凈版的Debian 8 + OpenMediaVault

方法1的話解決不了內網穿透的問題,無法遠程訪問;方法2我沒試過,貌似有bug;方法3的我裝的OpenMediaVault認不了磁盤,所以最終采取的是方法4——

  • 安裝純凈版的Debian 8 + 芒果云

簡單說下方法1~3的步驟


方法1:原生系統破解(最簡單,改動最?。?/strong> [英文教程] [破解文件及app下載]

  1. 首先在控制面板打開SSH訪問,然后通過SSH上傳define.js覆蓋原版,解除控制面板的第三方app安裝限制。
  • 在Mac終端連接My Cloud的SSH可能需要下面的命令
ssh -oHostKeyAlgorithms=+ssh-dss sshd@192.168.XXX.XXX
  • 不熟悉SSH操作的朋友可以在chrome瀏覽器安裝插件stylish,然后添加解鎖style 就可以在網頁安裝bin,不用管什么SSH和define.js。
  1. 接著安裝fox_exe提供的WDMyCloud_WDCrack_1.0.bin

  2. 然后就可以隨意安裝大神們打包好的各種第三方app了。

  • fox_exe發布的app里有個叫WDMyCloud_Debian_8.0-1.bin的app,裝完以后可以在原生busybox里切換成debian8來用,切換命令:
chroot /mnt/HD/HD_a2/Nas_Prog/Debian/chroot/ /bin/bash 

最終沒有采用方法一的原因是搞不定內網穿透服務的自啟動問題。Gen2 重啟就會重置在busybox中的配置,西數官方論壇上有大神出過Gen2腳本自啟動教程,但我變磚兩次都搞不成,遂放棄。

方法2:安裝黑群暉DSM(據說有bug,不怕折騰可以試試)[文件下載]

群暉是一個專業做NAS的公司,他家系統口碑不錯。裝黑群暉貌的方法和裝第三方app一樣,也是先解除限制,再從控制面板上傳bin文件,但是fox_exe警告說

Its a "Beta" version of DSM, and "Alpha" of Firmware itself.Its have some bugs.But one "Bug" is really important:Sometime few lib (.so files) was "damaged" and system cant run normally. (Random bugs).

……有未知原因的嚴重bug,所以還是不按這個方法搞了

方法3:純凈版Debian8 + OpenMediaVault(OMV有坑)[英文教程] [文件下載]

  1. 把硬盤重新分區并格式化
  2. 安裝fox_exe提供的純凈版Debian8
  3. 在Debian8里加裝開源的NAS管理系統OpenMediaVault。

OpenMediaVault功能很多,但用起來太復雜并不適合小白玩家,而對于高級玩家還不如直接用命令行操作,總之也是雞肋。

方法4:自己搭積木


  • 系統:Debian 8
  • Web服務器:apache2 + mysql + php5
  • 內網穿透:frp
  • 文件管理:芒果云
  • 文件下載:Aria2
  • 文件同步:ResilioSync(就是btsync)

** 1 安裝debian 8**

基本是參照fox_exe的教程來做,英文好的可以直接看英文版,主要用到uImage、uRamdisk、jessie-rootfs.tar.gz 三個文件。(注意英文教程里把jessie-rootfs.tar.gz錯寫成了rootfs-jessie.tar.xz)

======= 把硬盤分成三個分區 ========
/dev/sda1 - Swap 交換分區
/dev/sda2 - User data 用戶數據
/dev/sda3 - Rootfs/Boot (Important for bootloader) 系統文件和啟動分區

======= 正常步驟(用telnet刷系統) =======
# 在控制面板的“網絡”那里開啟ssh訪問,然后命令行訪問MyCloud
# Windows下的ssh客戶端
ssh sshd@你的MyCloud_IP
#  在MAC終端
ssh -oHostKeyAlgorithms=+ssh-dss sshd@你的MyCloud_IP 
# 將uImage, uRamdisk和jessie-rootfs.tar.gz放進/boot/boot里。
# 重啟MyCloud
# 通過telnet鏈接MyCloud (telnet的ip和原ssh的ip不一樣,可在路由器上查看)
telnet your_device_telnet_ip
# 使用parted命令重新分區
# 刪除分區124567留下分區3,新建1G的分區1
parted /dev/sda 
rm 1
rm 2
rm 4 
rm 5
rm 6
rm 7
mkpart primary 0% 1G 
# 退出parted
q 
# 將分區1 格式化為ext4格式
mkfs.ext4 /dev/sda1 

# 把分區3 /boot/boot里的三個文件,復制到分區1里)
mkdir -p /mnt/root /mnt/data
mount /dev/sda1 /mnt/data
mount /dev/sda3 /mnt/root
cp /mnt/root/boot/uImage /mnt/data/
cp /mnt/root/boot/uRamdisk /mnt/data/
cp /mnt/root/boot/jessie-rootfs.tar.gz /mnt/data/
umount /mnt/root

# 刪除原分區3,建立新的分區2和分區3
parted /dev/sda
rm 3
mkpart primary 4G 100%  
mkpart primary 1G 4G 
q
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3

# 把分區1里的3個文件解壓并復制回分區3,
mount /dev/sda3 /mnt/root
tar xvf /mnt/data/jessie-rootfs.tar.gz -C /mnt/root
mkdir -p /mnt/root/boot
cp /mnt/data/uImage /mnt/root/boot/uImage
cp /mnt/data/uRamdisk /mnt/root/boot/uRamdisk
umount /mnt/root

# 把分區1格式化成swap
umount /mnt/data
mkswap /dev/sda1

# 重啟完成Debian8安裝
sync
reboot -f

# ssh進入Debian8 初始密碼是 mycloud
ssh root@your_device_ip 

======= 非正常步驟(救磚并刷debian8)=======
# 把硬盤拆出來安裝到另一臺linux電腦上,并安裝parted
# centos下
yum install parted 
# debian/Ubuntu下
apt-get install parted
# 查看硬盤及分區情況
parted -l
# 進入parted分區,注意/dev/sdb改成你 parted -l 看到的那個
parted /dev/sdb
mklabel gpt
# 刪掉所有分區
rm 1
rm 2
rm 3
rm 4 
rm 5
rm 6
rm 7
# 建立大小為1G的分區1
mkpart primary 0% 1G 
# 建立大小為剩余空間大小的的分區2
mkpart primary 4G 100%  
# 建立大小為3G的分區3
mkpart primary 1G 4G 
q
# 格式化
mkswap /dev/sdb1
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdb3

# 上傳文件,把三個文件解壓復制到分區3
mkdir /mnt/root
mount /dev/sdb3 /mnt/root
mkdir /mnt/root/boot
tar xvf  jessie-rootfs.tar.gz -C /mnt/root
cp uImage /mnt/root/boot/uImage
cp uRamdisk /mnt/root/boot/uRamdisk

# 重啟完成Debian8安裝
sync
reboot -f

** 2 Debian安裝Web服務器 **

# 默認在root用戶下操作

## 更改debian軟件源為華中科大
## 打開/etc/apt/sources.list文件注釋掉原來的源(在每行前加#)##
## 復制以下代碼到sources.list ##
vi /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian/ jessie main contrib non-free
deb http://mirrors.ustc.edu.cn/debian/ jessie-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian/ jessie-backports main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security/ jessie/updates main contrib non-free
apt-get update
apt-get upgrade

#語言設置
apt-get install locales
dpkg-reconfigure locales

# 時間同步(很重要)
apt-get install -y ntp

# 時區設置(參考:http://coolnull.com/235.html)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 安裝nano文本編輯器(我不習慣用原生的vi編輯器)
apt-get install nano

# 安裝Apache2服務器(參考 https://www.centos.bz/2016/10/debian-8-jessie-install-lamp/)
apt-get install apache2
# 配置服務器
nano /etc/apache2/apache2.conf
# 重啟服務器
systemctl restart apache2
# 此時用瀏覽器訪問Mycloud的IP應該可以看到apache的默認頁面了。

# 安裝Mysql數據庫
apt-get install mysql-server
# 初始化mysql數據庫
mysql_secure_installation

# 安裝PHP
apt-get install php5 php-pear
# 安裝PHP的mysql支持
apt-get install php5-mysql
# 配置PHP
nano /etc/php5/apache2/php.ini

** 3 安裝芒果云 **

# 安裝wget命令行下載工具
apt-get install wget
# 安裝zip文件解壓工具
apt-get install zip
# 下載芒果云
wget http://static.kalcaddle.com/update/download/kodexplorer3.39.zip
# 解壓到/home/kod
upzip -d /home/kod kod*.zip
# 建立軟連接
ln -s  /home/kod /var/www/kod
# 把apache2服務器的默認首頁改成kod(也可以刪掉這個默認conf文件另建一個)
nano /etc/apache2/sites-enabled/000-default.conf
# 把文件里面的DocumentRoot /var/www/html 替換成 DocumentRoot /var/www/kod
# 現在重新用瀏覽器訪問Mycloud的IP應該可以看到芒果云了。
# 注意kod文件夾必須放在/home目錄下,因為只有/home目錄是掛載了分區2,/var目錄和/root目錄都在分區3里,而分區3只有3G空間。
# 如果出現權限錯誤,嘗試 chmod -R 777 [目錄名] 來提升目錄權限

** 4 安裝aria2并設置開機啟動 **

# 我是參考https://www.zrj96.com/post-296.html 這篇文的
# 安裝Aria2
apt-get -y install aria2
# 在/root目錄下建立.aria2目錄
mkdir .aria2
# 建立配置文件(參考后面的代碼)
nano /root/.aria2/aria2.conf
# 建立進度保存空文件
echo '' > /root/aria2.session;
# 建立開機啟動文件(參考后面)
nano /lib/systemd/system/aria2c.service
# 啟動程序并加入開機啟動
systemctl start aria2c.service
systemctl enable aria2c.service
# 下載aria2的圖形界面 https://github.com/mayswind/AriaNg/releases
# 解壓后復制到/home/www/kod/aria2下,就可以直接通過 http//myloud的ip/aria2 訪問了
/root/.aria2/aria2.conf
dir=/home/kod/data/Group/public/home/downloads
file-allocation=trunc
continue=true
max-concurrent-downloads=10
max-connection-per-server=5
min-split-size=10M
split=20
disable-ipv6=true
input-file=/root/aria2.session
save-session=/root/aria2.session
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
listen-port=51413
enable-dht=true
enable-peer-exchange=true
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
seed-ratio=0.1
bt-seed-unverified=true
bt-save-metadata=true
/lib/systemd/system/aria2c.service
[Unit]
Description=Aria2 Service
After=network.target

[Service]
ExecStart=/usr/bin/aria2c --conf-path=%h/.aria2/aria2.conf

[Install]
WantedBy=default.target

我的aria2還沒有搞定磁力鏈接下載,大家誰搞好的可以分享一下。

** 5 設置內網穿透并設置Timer啟動 **

國內的寬帶貌似都成了局域網沒有公網IP,所以無論把MyCloud放公司還是家里,想要遠程操作MyCloud都必須搞內網穿透。內網穿透主要有 ① SSH反向連接+Autossh ② 收費的花生殼 ③ ngrok及從ngrok衍生各種收費Tunnel服務三種方式

大概了解過感覺都不靠譜,最后選用了frp這個工具,實現起來還不錯。

  1. 前提是你需要有一部擁有外網IP的機器(如VPS之類的)
  2. 把frps(服務端程序)放在外網機器上
  3. 把frpc(客戶端程序)放在MyCloud里
  4. 配置好服務器和客戶端的.ini文件,各自運行起來就可以了
./frps -c ./frps.ini

frp怎么配置運行官方文檔里寫得很清楚就不重復了。主要提幾點:

** frpc客戶端在MyCloud(debian8)中實現自啟動的方式 **

因為MyCloud主板沒有電池,所以每次重啟系統時間都會變回1970年1月1日
如果frp的服務器端時間是2017年,frp的客戶端時間是1970年,frp是鏈接不上的,所以我們需要ntp來做時間同步。
ntp完成時間同步的時間是不固定的,所以frp的自啟動不能設置為像aria2一樣設為開機啟動。在Debian8里,我們可以用timer(定時器)來啟動service解決這個問題。

在/lib/systemd/system/目錄下建立兩個文件frpc.service 和 frpc.timer

** /lib/systemd/system/frpc.service **

[Unit]
Description=Frp Client Service
[Service]
Type=simple
ExecStart=/usr/bin/frpc -c %h/.frp/frpc.ini

** /lib/systemd/system/frpc.timer **

[Unit]
Description=Run frpc daily and on boot

[Timer]
# 開機一分鐘后啟動
OnBootSec=1min 
# 每天啟動一次
OnUnitActiveSec=1d

[Install]
WantedBy=timers.target

編輯保存好這兩個文件以后輸入:

systemctl enable frpc.timer

用下面這個命令可以查看運行的狀態:

systemctl status frpc.service

可以愉快地食用了。

** 6 還有一些坑 **

  • Gen2不支持USB啟動,所以如果ssh和telnet都連不上,那就得拆機,把硬盤接到另一臺Linux電腦上對硬盤進行分區、格式化、刷系統
  • 拆外殼需要兩張卡插進去分別頂開兩邊扣子,然后把外殼朝后拉,注意兩邊的扣子的位置是不對稱的
  • 如果沒有臺式機來插硬盤,那么你需要一個外置硬盤盒
  • 如果要插入外置硬盤盒,那么你需要到五金店買六角匙來擰開硬盤上的螺絲
  • 分區格式化的時候注意/dev/sda 和/dev/sdb的區別,網上教程一般直接把要格式化的硬盤寫成sda,但實際上插進Linux里會變成/dev/sdb(第二塊硬盤)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容