忽然有個需求,須要搭建一個文檔存儲協同的私有服務,通過多方搜索後找到onlyoffice服務能夠知足個人文檔編輯相關需求,而存儲方面則能夠利用nextcloud搭建一個私有云盤服務來知足,這樣利用nextcloud+onlyoffice就能夠知足個人文檔在線協同存儲需求,其實說白了就是能夠編輯ofiice等文件並分享的的私有云盤.
前期我採用傳統的鏡像一個一個啓動,後邊我又換成了docker-compose來部署,因此我也提供了兩種方案。還有一點就是個人數據庫採用的是postgresql,系統還支持mysql和MariaDB,或者直接使用內置的sqLite。若是採用mysql,MariaDB配置方式和個人postgresql大同小異,內置sqLite則簡單不少,直接忽略文章中數據庫這一塊的全部操做。php
方式一傳統部署,方式二docker-compose部署,推薦第二種,簡單。html
無論哪一種,先安裝docker
linux下的docker安裝mysql
數據庫鏡像是可選的,還能夠採用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
docker run --name onlyoffice -i -t -d -p 9000:80 onlyoffice/documentserver
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數據庫的容器,方便配置(後面細講做用)
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
建立一個專屬文件夾,以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
內置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插件:
而後用戶->設置->ONLYOFFICE來填入本身服務的地址便可。
效果圖: