如何搭建一個私人網盤

文章主要講了爲何要搭建私有網盤,以及如何用 docker + ownCloud 搭建。原文地址:http://geekplux.com/2016/10/2...html

前兩天,360 雲盤宣佈將中止我的服務。一石激起千層浪,關於如何選擇網盤,如何應對網盤關閉的討論一會兒又變得此起彼伏。沒辦法,目前的現狀是,網盤很難有大的盈利空間,還面對嚴苛的內容審查和隱私保護,雖然於用戶來講提供了便利,但於公司來講實在是一件出力不討好的事情。git

以前的網盤方案

國外的網盤我一直是三家一塊兒用,分別是 Dropbox 存儲代碼和一些重要或私密文件;Google Drive 存儲一些大文件和私密文件;OneDrive 存儲一些電子書(同步太慢了)。國內的網盤我以前只用兩家,一是堅果雲,放一些我的經常使用的小文件,包括一些文檔和軟件配置文件;另外一個是百毒雲,放一些各處轉存來的大文件、本身的照片和學習資料,一方面因其空間大,另外一方面因其同步流暢。然而,百毒雲前段時間把個人網盤全面封掉了,丟失了不少大學時的照片(其它文件要不不重要,要不有備份),申訴無果,實屬無奈。github

搭建一個只屬於本身的網盤

因此我決定搭建一個只屬於本身的網盤。考察了幾種方案(包括買 RAID 或 NAS 等),發現已有人在這方面作了努力,提供了像 SeafileownCloud 這樣的產品。接下來對比了兩個軟件,我決定選擇用 ownCloud,主要出於如下幾點考慮:sql

  • 能夠設置是否加密,保證數據安全。docker

  • ownCloud 能夠用於同步日程、聯繫人、瀏覽器書籤等,最重要的是密碼管理,這對於目前有無數密碼須要記的咱們很是實用。ownCloud 還有個應用商店,你們能夠自行發現有用的應用。數據庫

  • ownCloud 提供網頁和各類設備、系統的客戶端(Windows、Mac、Linux、iOS、Android皆有)進行訪問你的網盤。瀏覽器

  • ownCloud 能將外部存儲(如 FTP、WebDAV、Amazon S3,甚至 Dropbox 和 Google Drive)的文件掛載到 ownCloud 上,實現無縫存儲和分享。安全

  • 文件支持版本管理,還有回收站,因此沒必要擔憂誤刪。bash

搭建方法

首先你得先有一個本身的 VPS。。沒錯,要否則你的數據往哪放,ownCloud 在哪運行。app

有了 VPS 以後,就能夠按照官網教程一步一步安裝搭建了。然而,步驟至關繁瑣,你得先安裝 PHP、MySQL、 Apache 等等,因此咱們要祭出神器 —— docker(這裏就不介紹 docker 的用法了,如下內容默認你們對 docker 的基本使用有所瞭解)。這樣一來,以前冗長的步驟,就化成了三步:

  1. 安裝 docker、docker-compose,下載 ownCloud 的 image

  2. 配置 docker-compose.yml

  3. 配置完畢,啓動,打開 ownCloud 主界面配置數據庫、管理員等

下面是對上面三步的詳細講解,嫌太長的話能夠不看。只須要把下面用到的兩個 docker images (owncloud、postgres)下載好,安裝 docker-compose 並拷貝 docker-compose.yml 文件到你想要存儲 ownCloud 數據的文件夾,而後運行 docker-compose up 就好,一鼓作氣。

使用 docker

安裝好 docker 以後,直接下載 owncloud image 運行

docker run --name owncloud -p 80:80 owncloud

其實就能夠看到 ownCloud 已經運行起來了,訪問你的 VPS 地址,就能夠看到 ownCloud 的界面。

但這時的 ownCloud 尚未數據庫,因此咱們還須要用 docker --link 來添加一個數據庫存儲 ownCloud 的數據,這裏用到了 postgres 這個 image(數據庫你能夠本身定,不必定要用 postgreSQL)。

docker run --name owncloud-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker run --rm --link owncloud-postgres:owncloud-db --name owncloud -p 80:80 owncloud

第一條命令會啓動一個 postgreSQL 數據庫,默認的用戶是 postgres,密碼設爲了 mysecretpassword,host 是 owncloud-db。

但這時咱們運行的 docker container 一旦刪掉,咱們的數據就沒有了,因此咱們須要用 docker 中的 volumes (或 docker data volumes)來把 ownCloud 的數據持久化。

配置 docker compose

這樣一來,咱們得啓動兩個 container 做爲 data-only container,而後再啓動 owncloud 和 postgres 關聯這兩個 data-only container,很是繁雜,幸好咱們有 docker-compose 幫忙。先安裝它:

pip install docker-compose

而後配置 docker-compose.yml,下面配置中的 volumes 就是在配置數據持久化的目錄結構。因爲我把 docker-compose.yml 存在了VPS 的~/owncloud文件夾下,因此底下 volumes 配置中,冒號前面的宿主目錄是那樣寫的,而冒號後面的是 container 中的目錄,具體:

  • /etc/postgresql 存儲數據庫的配置

  • /var/lib/postgresql 存儲數據庫中的數據

  • /var/www/html/app 存儲 ownCloud APP 的數據

  • /var/www/html/data 存儲 ownCloud 的數據

  • /var/www/html/config 存儲 ownCloud 的配置

# Composition of the containers

postgres-data:
  image: postgres
  command: /bin/true
  volumes:
    - ~/owncloud/etc/postgresql:/etc/postgresql
    - ~/owncloud/var/lib/postgresql:/var/lib/postgresql

owncloud-data:
  image: owncloud
  # This is a data container, so we want to exit as soon as the container is created
  # BUT we will have to fix permissions issues first (33 is the ID of the www-data user)
  command: /bin/bash -c "/bin/chown -R 33 /var/www/html/data && /bin/chown -R 33 /var/www/html/config"
  volumes:
    - ~/owncloud/var/www/html/apps:/var/www/html/apps
    - ~/owncloud/var/www/html/data:/var/www/html/data
    - ~/owncloud/var/www/html/config:/var/www/html/config

owncloud:
  image: owncloud
  ports:
    - 8080:80
  volumes_from:
    - owncloud-data
  links:
    - postgres:postgres
  hostname: cloud
  domainname: cloud.example.org # Change to the hostname you will use

postgres:
  image: postgres
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=mypostgrespassword
  volumes_from:
    - postgres-data

把 docker-compose.yml 配置好以後,只需運行

docker-compose up

就能夠把 ownCloud 運行起來了,上一步中的不少操做,這裏一步就搞定了。不過切記!owncloud-datapostgres-data兩個 container 和 volume 千萬不要刪。刪以前請備份

ownCloud 配置

訪問你 VPS 的 8080 端口(剛纔配置文件裏寫了)打開 ownCloud 主頁,須要作兩件事

  1. 輸入管理員的帳號和密碼

  2. 選擇數據庫用哪一個,且輸入數據庫配置,這裏對照咱們剛纔 docker-compose 裏的寫的輸入就好

點擊完成,一切 OK,進入文件頁面盡情探索吧!

參考&延伸閱讀


本做品採用知識共享 署名-非商業性使用-禁止演繹 4.0 國際 許可協議進行許可。

相關文章
相關標籤/搜索