1. 程式人生 > >搭建自己的私有云

搭建自己的私有云

如果你家裡有多臺裝置需要聯網需要娛樂,你一定會或多或少遇到裝置碎片化帶來的煩惱。當然,已經有很多廠商包括新晉的小米、360在內的網際網路公司做了這個事情,給你搞個家庭儲存中心,基本能解決你的大部分需求。

但是,本著不折騰就會死的機翼安勁兒,咱自個來造個低成本低功耗的解決方案,成本680元,耗時2個小時左右。

NAS基礎設施搭起來

材料:先要有Raspberry Pi/路由器/破電腦等能裝Linux的裝置,適當容量的行動硬碟或SATA硬碟;
原理:在執行Linux的裝置上,掛載大容量硬碟,並利用Samba搭建NAS;
具體步驟之前有過教程,可移步:http://wemaker.cc/21

NAS

至此,如果你是嚴格按照教程部署,你的NAS應該已經開始正常運轉,

iOSAndroid、Windows、Mac等不同系統都有連線NAS伺服器的應用,可自行度之。

變身雙向同步雲盤

NAS主要服務於同一區域網內的裝置,如果你想將你的NAS打造成可以外網訪問並進行資料同步的網盤,我們只需藉助FTP+動態域名解析即可實現。

A、配置FTP服務

接下來,我們使用vsftpd來搭建FTP服務(VSFTPD是一個開源的輕量級FTP伺服器程式),按照以下步驟進行配置:

sudo apt-get install vsftpd //安裝vsftpd伺服器 (約400KB)
sudo nano /etc/vsftpd.conf //編輯vsftdp的配置檔案

在配置檔案中找到以下行,並設定為對應值:

anonymous_enable=NO //表示不允許匿名訪問
local_enable=YES //設定本地使用者可以訪問。
write_enable=YES //設定可以進行寫操作
local_umask=022 //支援斷點續傳
sudo service vsftpd restart //重啟vsftpd服務

OK,此時搭載有NAS的伺服器也已經具備FTP服務,現在可以使用瀏覽器訪問試試。此時,你的FTP依然只能在內網訪問,我們需要藉助動態域名解析服務實現外網訪問:

B、外網訪問設定(如果不需要外網訪問,此步非必須)

如果你還沒自己的域名,可以在網上申請各類免費得二級域名或直接在花生殼、3322上進行動態域名申請及配置。如果你有自己的域名,參照以下教程使用DNSPOD服務進行設定。先在DNSPOD註冊並新增域名,然後將你的域名DNS配置為DNSPOD的。之後,在linux上進行指令碼設定。確保你已經安裝了

Python環境,然後新建Py指令碼,貼上如下程式碼(Via e-fly):

  1. #!/usr/bin/env python
  2. #<strong style="color:black; background-color:#99ff99">-</strong>*<strong style="color:black; background-color:#99ff99">-</strong> coding:utf<strong style="color:black; background-color:#99ff99">-</strong>8 <strong style="color:black; background-color:#99ff99">-</strong>*<strong style="color:black; background-color:#99ff99">-</strong>
  3. import urllib2,urllib,json  
  4. class Dns:  
  5.     #Dnspod賬戶
  6.     _dnspod_user = '你的賬戶'
  7.     #Dnspod密碼
  8.     _dnspod_pwd = '你的密碼'
  9.     #Dnspod主域名,注意:是你註冊的域名
  10.     _domain = 'cb.e<strong style="color:black; background-color:#99ff99">-</strong>fly.org'
  11.     #子域名,如www,如果要使用根域名,用@
  12.     _sub_domain = '@'
  13.     def getMyIp(self):  
  14.         try:  
  15.             u = urllib2.urlopen('http://members.3322.org/dyndns/getip')  
  16.             return u.read()  
  17.         except HTTPError as e:  
  18.             print e.read()  
  19.             returnNone;  
  20.     def api_call(self,api,data):  
  21.         try:  
  22.             api = 'https://dnsapi.cn/' + api  
  23.             data['login_email'] = self._dnspod_user  
  24.             data['login_password'] = self._dnspod_pwd  
  25.             data['format'] ='json'
  26.             data['lang'] =  'cn'
  27.             data['error_on_empty'] = 'no'
  28.             data = urllib.urlencode(data)  
  29.             req = urllib2.Request(api,data,  
  30.                 headers = {  
  31.                     'UserAgent' : 'LocalDomains/1.0.0([email protected])',  
  32.                     'Content<strong style="color:black; background-color:#99ff99">-</strong>Type':'application/x<strong style="color:black; background-color:#99ff99">-</strong>www<strong style="color:black; background-color:#99ff99">-</strong>form<strong style="color:black; background-color:#99ff99">-</strong>urlencoded;text/html; charset=utf8',  
  33.                     })  
  34.             res = urllib2.urlopen(req)  
  35.             html = res.read()  
  36.             results = json.loads(html)  
  37.             return results  
  38.         except Exception as e:  
  39.             print e  
  40.     def main(self):  
  41.         ip = self.getMyIp()  
  42.         dinfo = self.api_call('domain.info',{'domain' : self._domain})  
  43.         domainId = dinfo['domain']['id']  
  44.         rs = self.api_call('record.list',  
  45.             {  
  46.                 'domain_id': domainId,  
  47.                 'offset' :'0',  
  48.                 'length' : '1',  
  49.                 'sub_domain' : self._sub_domain  
  50.             })  
  51.         if rs['info']['record_total'] == 0:  
  52.             self.api_call('record.create',  
  53.                 {  
  54.                     'domain_id' : domainId,  
  55.                     'sub_domain' : self._sub_domain,  
  56.                     'record_type' : 'A',  
  57.                     'record_line' : '預設',  
  58.                     'value' : ip,  
  59.                     'ttl' : '3600'
  60.                 })  
  61.             print'Success.'
  62.         else:  
  63.             if rs['records'][0]['value'].strip() != ip.strip():  
  64.                 self.api_call('record.modify',  
  65.                 {  
  66.                     'domain_id' : domainId,  
  67.                     'record_id' : rs['records'][0]['id'],  
  68.                     'sub_domain' : self._sub_domain,  
  69.                     'record_type' : 'A',  
  70.                     'record_line' : '預設',  
  71.                     'value' : ip  
  72.                     })  
  73.             else:  
  74.                 print'Success.'
  75. if __name__ == '__main__':  
  76.     d = Dns();  
  77.     d.main()  

將以上程式碼儲存後,設定755許可權,執行即可。如需要定時檢測更新域名IP地址,可以將該指令碼檔案加入 /etc/crontab 進行定時執行任務。

至此,你的整個伺服器已經同時具備了內網的NAS,以及內網和外網的FTP服務。接下來,開始在你的各類終端上進行雙向網盤同步設定吧,本文以Android系統為例,其他系統的FTP同步教程請自行度之。

C、安卓手機資料同步

原理很簡單,找一個FTP的App,指定手機某個資料夾(一般都是相簿所在資料夾)自動同步到上文搭建好的NAS路徑中。相比使用百度雲等網盤同步,我們這樣做的優勢除了隱私性更強外,還能在本地WiFi網路內以極高的上行速率進行資料備份。

一處備份(從手機至NAS),多處共享(從NAS到Mac、PC、iPhone、iPad)。

本文以FtpSyncX安卓版為例進行設定:

ftpsyncx

第一步:新增伺服器,點選Add server,選擇FTP格式,設定好伺服器地址(建議填入以上文中的額動態域名,如不需要填入內網IP即可),填寫登入帳號和密碼;
第二步:設定要同步的兩端資料夾目錄,選擇Local Diectory設定手機上的資料夾,Remote directory設定NAS上對應的同步資料夾,建議新建一個。接下來設定同步型別,remote<=>local雙向同步、remote=>local NAS到手機單向同步、 local=>remote 手機到NAS單向同步,根據需要進行選擇。勾選上WiFi Only,只在WiFi下同步;

設定完成後開始同步看看效果吧。此軟體還可以設定同步時間間隔等高階引數。

搭建完美下載機

看了小米路由宣稱的1T硬碟和迅雷離線下載很心動?別急,咱也能。

Linux下可以實現BT下載的應用有很多,目前支援下載格式最多和最知名的是Aria2。相比以往的開源BT程式,Aria2不僅支援BT下載,還支援Http、Ftp、磁力連結等格式下載,當然,文章最後完美還附上了迅雷離線下載+Aria2的完美方案。

A、安裝並配置Aria2

在Linux終端內執行以下命令安裝Aria2程式:

sudo apt-get install aria2 //安裝Aria2

接下來配置Aria2的配置檔案,每行為一個單獨命令:

mkdir ~/.aria2 //新建資料夾
touch ~/.aria2/aria2.session //新建session檔案
nano ~/.aria2/aria2.conf //新建配置檔案

在aria2.conf配置檔案裡貼上以下程式碼,別忘記將裡邊的路徑替換為自己的:

dir=/home/cubie/Download //下載的預設目錄
disable-ipv6=true
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/home/cubie/.aria2/aria2.session //路徑要絕對路徑
save-session=/home/cubie/.aria2/aria2.session //儲存你的下載列表
max-concurrent-downloads=3

儲存並執行以下命令:

aria2c –conf-path=/home/cubie/.aria2/aria2.conf

如果沒有錯誤,Ctrl+C終止並繼續下一步,把aria2做成系統服務:

sudo nano /etc/init.d/aria2c

貼上內容如下:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

case "$1" in
start)

    echo -n "Starting aria2c"
    sudo -u cubie aria2c --conf-path=/home/cubie/.aria2/aria2.conf -D 
    #sudo -u後面的是你正在使用的使用者名稱,因為我用的cubie,別忘記改成自己的
;;
stop)

    echo -n "Shutting down aria2c "
    killall aria2c
;;
restart)

    killall aria2c
    sudo -u cubie aria2c --conf-path=/home/cubie/.aria2/aria2.conf -D
    #同上面的一樣,根據自己的使用者名稱改cubie
;;
esac
exit

儲存後退出,然後設定這個檔案的許可權為755:

sudo chmod 755 /etc/init.d/aria2c

測試Aria2服務是否可以啟動:

sudo service aria2c start

如果只顯示Starting aria2c,沒有其他錯誤提示的話就說明成功了。然後新增aria2c服務到開機啟動:

sudo update-rc.d aria2c defaults

由於Aria2不具備Web管理,所以需要使用第三方開發的開源程式Yaaw進行Web管理。先要確保你的Linux已經配置了Nginx或Apache等Web伺服器環境,關於Nginx的配置可參考此文:http://wemaker.cc/59,此處不再累述。

進入Web服務的檔案目錄,以Nginx為例:

cd /srv/www
git clone http://github.com/wzhy90/yaaw

程式執行完成後,在瀏覽器中開啟http://IP地址或域名地址//yaaw,即看到Aria2的Web管理介面,此時一個支援BT、FTP、HTTP、磁力等格式的下載機已在完美運轉。點選右上角的設定項,在彈出的介面中找到Aria2 JSON-RPC Path,留好在下一步備用。

B、配置迅雷離線下載

這一步需要額外的程式支援,國內有高手開發出了Aria2結合迅雷離線的瀏覽器外掛,本文以Chrome為例設定。

開啟此連結,安裝Chrome瀏覽器擴充套件程式,然後登入迅雷離線的Web站(需要會員),點選頁面右上角的設定,在彈出的視窗中,找到Aria2 JSON-RPC Path項,將Yaaw中複製出來的URL貼上進去並儲存。接下來,試試在迅雷離線下一部片子,基本是秒下,然後點選“取回本地”旁的下拉按鈕,在選項中選擇Yaaw。回到你的Aria2 Web管理頁,是不是已經有一項任務躺在裡邊了?

至此,大功告成。咱也過上了想什麼時候下就什麼時候下、想在哪下就再哪下、想下啥就下啥、想在哪看就再哪看、想怎麼同步就怎麼同步的性福生活。

推薦方案:樹莓派B英國產+4G TF(255元)+ 1T硬碟 (400元) + 有源的USB Hub(25元)進行搭建,總成本680元左右。

預告:接下來會把樹莓派替換為一個802.11ac雙頻可刷OpenWRT的路由器,將整體成本和能耗降到最低。敬請期待我們帶來的路由器的解決方案。有了這神器,還等啥小米路由、360路由……

相關推薦

Ubuntu 搭建owncloud私有

1.安裝Apache2 sudo apt-get install apache2 2.修改Apache2埠(可以選擇不修改) vi /etc/apache2/ports.conf   #將80改為想要的埠 #重啟服務 service apache2 resatrt 3

搭建ownCloud私有盤(CentOS 7.4)

1.1 LAMP安裝與啟動 [[email protected] xie]# yum install -y httpd php php-mysql mariadb-server mariadb php-dom php-mbstring php-

資料安全存放,全民搭建kodexplorer私有儲存

資料安全存放可以說越來的重要,新聞上也經常報道出關於個人資訊洩露的事件,不僅洩露,還有一些進行個人隱私買賣,之前報道出facebook便是如此。數字資訊存放好比存錢一樣,存在別人那裡總會不放心。不如自己修建一個金庫,放在自己家中,更安心!網路上也應該有這樣一個空間,存放自己的東西。之前的做法大部分都是把資料存

Docker搭建Nextcloud私有

Nextcloud簡介 nextcloud是一個開源免費的私有云盤,它在功能上類似於Dropbox或者國內的百度雲,允許任何人在私人伺服器上安裝和使用它。 安裝docker和compose docker安裝參考:https://blog.csdn.net/networken

搭建eucalyptus私有-遇到問題

安裝桉樹所有的包之後,配clc、cc、nc端的xend.conf.sxp # -*- sh -*- # # Xend configuration file. # # This example configuration is appropriate for an instal

搭建owncloud私有

1、選擇     近來雲端儲存大行其道,確實對於多臺裝置的檔案共享,雲端儲存是一種很好的解決方案。更加專業的解決方案是NAS ,但考慮到成本問題,筆者決定在私人伺服器上搭建私有云。(VPS是一個很好的方案,但是在資料可靠性還有待論證,畢竟資料無價) 私有

搭建自己私有

如果你家裡有多臺裝置需要聯網需要娛樂,你一定會或多或少遇到裝置碎片化帶來的煩惱。當然,已經有很多廠商包括新晉的小米、360在內的網際網路公司做了這個事情,給你搞個家庭儲存中心,基本能解決你的大部分需求。 但是,本著不折騰就會死的機翼安勁兒,咱自個來造個低成本低功耗的解決

Docker整合Seafile搭建屬於自己私有

一、docker環境正常(省略)、獲取seafile映象     -docker search seafile(搜尋映象名)-docker pull jenserat/seafile(不指定映象版本預設會拉取最新的映象latest)二、檢視docker映象我這裡打了tag:d

快速零成本搭建屬於自己私有

寫在前面 國內市場某雲一家獨大,限速著實腦殼疼。搭建私有云一是為了去除各種限制之外,還有一個重要原因,就是可以實現多個裝置終端的資源共享和服務。免去各種插拔資料線的煩惱。再有,我想這也對於辦公上資料同步上也會有所幫助。部署簡單,大約30分鐘以內即可完成。 環境準備 伺服器 這裡的伺服器並非特指雲伺服器,本

私有搭建

私有云桌面 第1步.百度搜“VMware虛擬機器破解版”,點選第一個網址 金鑰為: 然後再根據教程對之進行安裝,沒太多要注意的地方。百度經驗上就一搜一大把:https://jingyan.baidu.com/article/2fb0ba40f093fd00f2ec5fb0.html

CentOS7下使用 Seafile安裝搭建私有

一、系統環境 二、安裝seafile 三、設定防火牆、selinux 設定SELinux[[email protected] ~]#vi /etc/selinux/config將SELINUX=enforcing改為SELINUX=disabled使selinux立即生效[[email&#

www808888webcom使用OwnCloud搭建屬於199O8836661自己私有的雲端儲存網

其實國內有很多的大網盤,也有很多使用者在用。比如360網盤,百度網盤,等等。但是誰都無法確定國內的伺服器會不會奔潰等情況,這時候我們可以使用OwnCloud建立自己的私有的儲存網盤 OwnCloud是一個開源免費專業的私有云儲存專案,它可以幫你快速的在個人電腦或者伺服器上假設一套專屬的私有云檔案同步網盤

www808888webcom使用OwnCloud搭建屬於199O8836661自己私有的雲存儲網

防火 ios 也有 png 下界 部署 ces entos 很慢 其實國內有很多的大網盤,也有很多用戶在用。比如360網盤,百度網盤,等等。但是誰都無法確定國內的服務器會不會奔潰等情況,這時候我們可以使用OwnCloud建立自己的私有的存儲網盤 OwnCloud是一個開源

服務計算學習之路-VirtualBox搭建私有桌面遇到的問題

VirtualBox搭建私有云桌面遇到的問題 文章目錄 VirtualBox搭建私有云桌面遇到的問題 配置163源時共享資料夾問題 配置第二塊網絡卡地址 最終實現 本次實驗

Nextcloud私有搭建

安裝mysql   移動到/var/www/html目錄 下載 Nextcloud 服務端 wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zi

window搭建私有,只要幾分鐘

本文介紹如何在window搭建私有云網盤。 工具/原料:一臺window系統電腦或者window伺服器(vps),Xampp 安裝包,可道雲kodexplorer安裝包 第一步,xampp安裝 1.官網下載xampp: https://www.apachefriends.org/zh_cn/downlo

阿里雲linux+kodexplorer可道雲搭建私有

kodexplorer可道雲介紹KodExplorer可道雲,原名芒果雲,是基於Web技術的私有云和線上檔案管理系統。致力於為使用者提供安全可控、可靠易用、高擴充套件性的私有云解決方案。使用者只需通過簡單環境搭建,即可使用KodExplorer快速完成私有云/私有網盤/線上文件管理系統的部署和搭建。可道雲提供

搭建私有環境,證件類OCR識別的運作流程概述

私有云證件識別產品是一款基於伺服器平臺的OCR識別服務程式,企業可將該識別服務部署在自有伺服器上(雲伺服器或本地伺服器),部署完成後,APP端、PC客戶端、web端、微信H5端等均可傳送識別請求,通過Web Service介面呼叫該識別服務,上傳證件影象在伺服器端完成識別後,返回標準XML識別結果,整個識別過

服務計算:搭建私有

1. 實驗目的 初步瞭解虛擬化技術,理解雲端計算的相關概念 為後續課程提供統一的程式設計與實驗環境 理解系統工程師面臨的困境 2. 實驗內容 搭建自己的私有云 3. 實驗步驟 (1)下載安裝Virtual Box 第一步:從Virtual Box官網上下載最

Vmware私有平臺搭建(1)

神州數碼外包交付中心技術總監,劉亮,有十幾年的資料中心運維經驗。長期從事資料中心伺服器及系統、虛擬化、雲平臺建設和運維工作。 本章主要介紹一下雲端計算、虛擬化技術的概念和Vmware伺服器虛擬化平臺實際搭建過程。雲端計算是一種按使用量付費的模式,提供可用的、便捷