突然有個需求,需要搭建一個文檔存儲協同的私有服務,經過多方搜索后找到onlyoffice服務可以滿足我的文檔編輯相關需求,而存儲方面則可以利用nextcloud搭建一個私有云盤服務來滿足,這樣利用nextcloud+onlyoffice就可以滿足我的文檔在線協同存儲需求,其實說白了就是可以編輯ofiice等文件并分享的的私有云盤.
前期我采用傳統的鏡像一個一個啟動,后邊我又換成了docker-compose來部署,所以我也提供了兩種方案。還有一點就是我的數據庫采用的是postgresql,系統還支持mysql和mariadb,或者直接使用內置的sqlite。如果采用mysql,mariadb配置方式和我的postgresql大同小異,內置sqlite則簡單很多,直接忽略文章中數據庫這一塊的所有操作。
正文
安裝啟動服務
方式一傳統部署,方式二docker-compose部署,推薦第二種,簡單。
不管哪種,先安裝docker
方式一
拉取nextcloud鏡像和數據庫鏡像
數據庫鏡像是可選的,還可以采用mysql或者直接使用nextcloud內置的sqllite,我這邊采用postgresql。還有就是因為我需要操作office,還安裝了onlyoffice服務,可以忽略。
1
2
3
|
docker pull docker.io /nextcloud docker pull postgres docker pull onlyoffice /documentserver |
創建啟動容器
如果不使用內置數據庫,那首先數據庫需要初始化好存儲倉庫,我創建了一個cloud倉庫專門用來保存數據并且啟動。
啟動數據庫(非必須)
1
|
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的意思是數據庫密碼默認123456
啟動office服務(非必須)
1
|
docker run --name onlyoffice -i -t -d -p 9000:80 onlyoffice /documentserver |
啟動nextcloud
1
|
docker run --restart=always --name nextcloud -p 8080:80 - v /nextcloud : /var/www/html --link postgresql:postgresql -d nextcloud |
-name nextcloud
設置容器名字
--restart=always
表示總是自啟動,會在關機等重啟機器后重啟容器
-p
8080:80 表示把本機8080端口映射到容器內的80端口,就是你要訪問時需要本機ip:8080(你可以選擇自己想要端口).
-v /nextcloud:/var/www/html
用來把容器相關資源映射到本地/nextcloud目錄下(你可以選擇自己對應目錄),方便數據持久化和外部修改頁面配置等等.
--link postgresql:postgresql
非必須,鏈接postgresql數據庫的容器,方便配置(后面細講作用)
方式二
安裝docker-compose
1
2
|
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文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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:
1
|
docker network create nextcloud |
啟動:
1
|
docker-compose up -d |
等到以上服務正式啟動好了后,接下來就是配置了。
初始化配置
瀏覽器訪問ip:8080
4.1 輸入管理員賬戶密碼
4.2 數據目錄建議保持不動,默認就好
4.3 數據庫選擇
內置sqlite數據庫,存儲文件較少可以直接選擇默認安裝完成就好.
如果選用其他數據庫,以postgresql為例:
數據庫用戶名和密碼就不用說了,數據庫名對應數據庫需要提前創建好.
最重要的數據庫主機就是數據庫的訪問ip+端口號.
注:
但是我填的postgresql是不是有點眼熟,對,就是--link(方式二里面使用的net方式,目的一樣). 我的數據庫用的也是docker容器,使用--link可以將postgresql數據庫的容器以別名形式傳遞過來,所以這邊直接可以使用postgresql表示數據庫(這是docker容器間的一種通信方式,注意一點是postgresql容器一定要在nextcloud容器前啟動).
白名單配置和使用
如果你需要域名和一些新的ip端口可以訪問,需要修改/nextclou/config/config.php中配置(沒有請添加)
1
2
3
4
|
'trusted_domains' => array ( 0 => 'www.xxx.com:10080' , ), |
然后就是使用和郵箱的配置可以進行自行摸索.
配置onlyoffice(非必須,我只是為了在線操作word等)
進入云盤以管理員賬號登錄,點擊用戶->應用來安裝onlyoffice插件:
然后用戶->設置->onlyoffice來填入自己服務的地址即可。
效果圖:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://segmentfault.com/a/1190000021769337