利用nextcloud搭建一個私有「百度雲盤」

忽然有個需求,須要搭建一個文檔存儲協同的私有服務,通過多方搜索後找到onlyoffice服務能夠知足個人文檔編輯相關需求,而存儲方面則能夠利用nextcloud搭建一個私有云盤服務來知足,這樣利用nextcloud+onlyoffice就能夠知足個人文檔在線協同存儲需求,其實說白了就是能夠編輯ofiice等文件並分享的的私有云盤.

前期我採用傳統的鏡像一個一個啓動,後邊我又換成了docker-compose來部署,因此我也提供了兩種方案。還有一點就是個人數據庫採用的是postgresql,系統還支持mysql和MariaDB,或者直接使用內置的sqLite。若是採用mysql,MariaDB配置方式和個人postgresql大同小異,內置sqLite則簡單不少,直接忽略文章中數據庫這一塊的全部操做。php

title

正文

安裝啓動服務

方式一傳統部署,方式二docker-compose部署,推薦第二種,簡單。html

無論哪一種,先安裝docker
linux下的docker安裝mysql

方式一

拉取nextcloud鏡像和數據庫鏡像

數據庫鏡像是可選的,還能夠採用mysql或者直接使用nextcloud內置的sqlLite,我這邊採用postgresql。還有就是由於我須要操做office,還安裝了onlyoffice服務,能夠忽略。linux

docker pull docker.io/nextcloud
    docker pull postgres
    docker pull onlyoffice/documentserver

建立啓動容器

若是不使用內置數據庫,那首先數據庫須要初始化好存儲倉庫,我建立了一個cloud倉庫專門用來保存數據而且啓動。git

啓動數據庫(非必須)
docker run --restart=always --name postgresql -v /etc/localtime:/etc/localtime -v /data/postgresql:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -d -p 35432:5432 postgres

-e POSTGRES_PASSWORD=123456的意思是數據庫密碼默認123456github

啓動office服務(非必須)

docker run  --name onlyoffice  -i -t -d -p 9000:80 onlyoffice/documentserver
啓動nextcloud
docker run --restart=always  --name nextcloud -p 8080:80 -v /nextcloud:/var/www/html --link postgresql:postgresql -d nextcloud

-name nextcloud 設置容器名字sql

--restart=always 表示老是自啓動,會在關機等重啓機器後重啓容器docker

-p 8080:80 表示把本機8080端口映射到容器內的80端口,就是你要訪問時須要本機ip:8080(你能夠選擇本身想要端口).數據庫

-v /nextcloud:/var/www/html 用來把容器相關資源映射到本地/nextcloud目錄下(你能夠選擇本身對應目錄),方便數據持久化和外部修改頁面配置等等.瀏覽器

--link postgresql:postgresql 非必須,連接postgresql數據庫的容器,方便配置(後面細講做用)

方式二

安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.10.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

編寫docker-compose文件

建立一個專屬文件夾,以nextcloud爲例,在裏面建立docker-compose.yml文件

version: '2'
services:
  nextcloud:
    container_name: nextcloud_app
    image: nextcloud
    ports:
      - "8080:80"
    volumes:
      - ./app:/var/www/html
    links:
      - postgresql
    restart: always

  onlyoffice:
    container_name: nextcloud_office
    image: onlyoffice/documentserver
    ports:
      - "9000:80"
    restart: always

  postgresql:
    container_name: nextcloud_db
    image: postgres:11.4
    environment:
      - POSTGRES_PASSWORD:123456
    volumes:
      - ./postgresql:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime
    restart: always

networks:
  default:
    external:
      name: nextcloud

啓動容器

在docker-compose.yml同級目錄操做。
第一次啓動會自動拉取鏡像,因此要有網。而且採用了網絡鏈接方式,得手動建立一個net橋。
建立net:

docker network create nextcloud

啓動:

docker-compose up -d

等到以上服務正式啓動好了後,接下來就是配置了。

初始化配置

瀏覽器訪問ip:8080

title

  • 4.1 輸入管理員帳戶密碼
  • 4.2 數據目錄建議保持不動,默認就好
  • 4.3 數據庫選擇

    內置SQLite數據庫,存儲文件較少能夠直接選擇默認安裝完成就好.

    若是選用其餘數據庫,以PostgreSQL爲例:

    圖片標題

    數據庫用戶名和密碼就不用說了,數據庫名對應數據庫須要提早建立好.

    最重要的數據庫主機就是數據庫的訪問ip+端口號.

    注: 可是我填的postgresql是否是有點眼熟,對,就是--link(方式二里面使用的net方式,目的同樣). 個人數據庫用的也是docker容器,使用--link能夠將PostgreSQL數據庫的容器以別名形式傳遞過來,因此這邊直接可使用postgresql表示數據庫(這是docker容器間的一種通訊方式,注意一點是PostgreSQL容器必定要在nextcloud容器前啓動).

白名單配置和使用

若是你須要域名和一些新的ip端口能夠訪問,須要修改/nextclou/config/config.php中配置(沒有請添加)

'trusted_domains' =>
  array (
    0 => 'www.xxx.com:10080',
  ),

而後就是使用和郵箱的配置能夠進行自行摸索.

配置onlyoffice(非必須,我只是爲了在線操做word等)

進入雲盤以管理員帳號登陸,點擊用戶->應用來安裝ONLYOFFICE插件:
title
而後用戶->設置->ONLYOFFICE來填入本身服務的地址便可。
title
效果圖:
title

相關文章
相關標籤/搜索