[TOC]
OMV配置你的私有云盤--NextCloud
? 現(xiàn)在云盤廠家已經(jīng)所剩無幾封寞,你能選的余地已經(jīng)很少了然评,是時候找一個私有的云盤解決方案了。你絕對不是第一個有這個想法的人狈究,所以很幸運碗淌,在開源的大世界里,已經(jīng)有人做了出眾的產(chǎn)品(Seafile抖锥、OwnCloud亿眠,NextCloud等等),NextCloud就是其中一款,它的很多東西磅废,都可以來自云端纳像,這也是它如此受歡迎的原因之一。
目前最新版本是Nextcloud 15(15.0.6 )拯勉。
NextCloud 是一款開源網(wǎng)絡(luò)硬盤系統(tǒng)竟趾。任何人都可以自由的獲取 NextCloud 程序,在家庭或公司構(gòu)建私有且免費的網(wǎng)絡(luò)硬盤宫峦。它是完全由你用戶控制的私有岔帽、安全且功能完整的文件同步與共享解決方案。
下面的步驟需要使用到Docker,如果還沒有安裝的請先安裝导绷,查看OMV配置Docker
創(chuàng)建nextcloud配置共享文件夾
安裝docker容器時候
-v
參數(shù)有時候要映射宿主機的磁盤地址
OMV的磁盤地址一般映射在/src
下面
具體的硬盤信息可以到文件系統(tǒng)
查看
比如我的硬盤
在我的/src
下的地址是:
請記得你自己的磁盤位置 后面的命令需要替換成你自己的磁盤地址
nextcloud需要的配置文件夾
omv提倡文件管理操作都能在WEB界面管理犀勒,所以這里使用創(chuàng)建共享文件夾和SMB的方式創(chuàng)建
- 先創(chuàng)建共享文件夾
訪問權(quán)限管理
->共享文件夾
,文件夾盡量見名知意,所以這里就叫nextcloud
進入命令行可以查看創(chuàng)建的文件夾贾费,驗證文件夾是否已經(jīng)創(chuàng)建好
PS: OMV在創(chuàng)建了共享文件夾后钦购,會將共享文件夾映射到一個/sharedfolders
的文件路徑下,所以你有兩種訪問你剛才創(chuàng)建的共享文件夾的路徑褂萧,一個是定位到你磁盤的路徑押桃,一個是公共的/sharedfolders
下的路徑 這兩個路徑下的操作都是有效的 你可以隨便選一個
比如我剛才創(chuàng)建的nextcloud的共享文件夾,我要找到它箱玷,可以去兩個路徑下都能找到
- 設(shè)置nextcloud文件夾的SMB共享
為了使用SMB用戶創(chuàng)建nextcloud的其他配置子文件夾
前往服務(wù)
-> SMB/CIFS
, 設(shè)置SMB文件夾 方便我們在工作機上操作
之后在你的工作機上使用SMB協(xié)議連接NAS
連接上SMB以后怨规,就可以像操作本地文件一樣操作NAS文件了陌宿,直接鼠標(biāo)右鍵點擊創(chuàng)建文件夾操作即可創(chuàng)建一個文件夾锡足,
這里我預(yù)先準(zhǔn)備一下幾個子文件夾,用處如下:
-
db
: nextcloud依賴的持久化數(shù)據(jù)的數(shù)據(jù)庫 -
html
: nextcloud的資源配置文件夾 -
data
: nextcloud的個人同步文件(你網(wǎng)盤的數(shù)據(jù)以后就存在這里了)
如下
數(shù)據(jù)庫準(zhǔn)備
? 默認情況下,NextCloud使用的是SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲壳坪,它僅適用于沒有客戶端同步的測試和輕量級單用戶設(shè)置舶得。當(dāng)多用戶、多設(shè)備爽蝴、大數(shù)據(jù)量的時候沐批,SQLite就不太合適了,NextCloud支持MySQL蝎亚,MariaDB九孩,Oracle 11g和PostgreSQL等多種數(shù)據(jù)庫。并且推薦使用MySQL / MariaDB发框。所以為了一勞永逸躺彬,還是用MySQL代替吧,MariaDB是MySQL源代碼的一個分支梅惯。這里使用MariaDB作為數(shù)據(jù)庫支撐宪拥,
-
安裝mariadb
mariadb的安裝還是使用docker進行, 打開你的終端铣减,復(fù)制以下命令創(chuàng)建mariadb容器她君,即可。如果不想使用命令行安裝葫哗,需要使用OMV自帶的
docker-gui
界面操作也是可以的缔刹,將對應(yīng)的-*
的配置填到相應(yīng)的界面框框內(nèi)就可以了,類似的操作可以參考這里
docker run -d --name db_nextcloud \
-p 3307:3306 \
-e PUID=1000 \
-e PGID=100 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=123456 \
--restart=unless-stopped \
-v /sharedfolders/nextcloud/db:/var/lib/mysql \
mariadb
- 命令參數(shù)釋義(具體的參數(shù)釋義可以查看鏡像地址):
-p 3307:3306
: 容器服務(wù)開放的端口,前者是宿主機的端口劣针,后者是容器內(nèi)服務(wù)的端口
-e PUID校镐、-e PGID
: 運行容器的用戶的權(quán)限集id
-e MYSQL_ROOT_PASSWORD
: 數(shù)據(jù)庫root用戶的密碼
-e MYSQL_DATABASE=nextcloud
:創(chuàng)建一個名稱為nextcloud的數(shù)據(jù)庫
-e MYSQL_USER
:創(chuàng)建一個名稱為nextcloud的用戶
-e MYSQL_PASSWORD
:名稱為nextcloud的用戶的密碼
--restart=unless-stopped
:當(dāng)容器停止時候重啟容器
-v
:數(shù)據(jù)卷綁定 前者是宿主機的地址,后者是容器機器的位置? 例如:
-v /sharedfolders/nextcloud/db:/var/lib/mysql
把容器/var/lib/mysql
的內(nèi)容掛在到宿主機/sharedfolders/nextcloud/db
的位置
以下是我運行的日志
qinkangdeid@omv:~$ docker run -d --name db_nextcloud \
> -p 3307:3306 \
> -e PUID=1000 \
> -e PGID=100 \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -e MYSQL_DATABASE=nextcloud \
> -e MYSQL_USER=nextcloud \
> -e MYSQL_PASSWORD=123456 \
> --restart=unless-stopped \
> -v /sharedfolders/nextcloud/db:/var/lib/mysql \
> mariadb
Unable to find image 'mariadb:latest' locally
latest: Pulling from library/mariadb
38e2e6cd5626: Pull complete
705054bc3f5b: Pull complete
c7051e069564: Pull complete
7308e914506c: Pull complete
35e6984cb587: Pull complete
3a173c4702b4: Pull complete
efd003ff8e24: Pull complete
ba5d30791443: Pull complete
f3e943c9e01d: Pull complete
e5243a434e4f: Pull complete
910d8b012ee8: Pull complete
1fb787f18e3d: Pull complete
7a0cfbee5299: Pull complete
6fa7c8911619: Pull complete
Digest: sha256:eb6acf7f599f39c42582e11b1de3866c3934da84cc45190c0aac3e8d046e4053
Status: Downloaded newer image for mariadb:latest
`1be6b4e5f24539e8fc40ca7036a567104b067072044f878a3f4d71104ee8ee9a`
qinkangdeid@omv:~$
查看docker運行容器,看NAMES
那一欄下面 有個db_nextcloud
已經(jīng)在運行酿秸,也能看到我們配置的端口
qinkangdeid@omv:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1be6b4e5f245 mariadb "docker-entrypoint.s…" 14 seconds ago Up 8 seconds 0.0.0.0:3307->3306/tcp db_nextcloud
5b9d858e08ab opengg/aria2 "/init.sh" 24 minutes ago Up 23 minutes 0.0.0.0:6800->6800/tcp aria2
另一個方式使用telnet
驗證安裝是否成功
安裝NextCloud
NextCloud的安裝也還簡單灭翔,依然是使用docker,復(fù)制下面的命令到終端運行即可 ,記得-v
的前部分是你宿主機的地址,如果不想使用命令行安裝肝箱,需要使用OMV自帶的docker-gui
界面操作也是可以的哄褒,將對應(yīng)的-*
的配置填到相應(yīng)的界面框框內(nèi)就可以了,類似的操作可以參考這里
docker run -d --name nextcloud \
-p 8088:80 \
--restart=unless-stopped \
-v /sharedfolders/nextcloud/html:/var/www/html \
-v /sharedfolders/nextcloud/data:/var/www/html/data \
nextcloud
- 命令參數(shù)釋義(具體的參數(shù)釋義可以查看鏡像地址):
-p 8088:80
: 容器服務(wù)開放的端口,前者是宿主機的端口煌张,后者是容器內(nèi)服務(wù)的端口
--restart=unless-stopped
:當(dāng)容器停止時候重啟容器
-v
:數(shù)據(jù)卷綁定 前者是宿主機的地址,后者是容器機器的位置Nextcloud安裝以及數(shù)據(jù)庫之外的所有數(shù)據(jù)(文件上載等)都存儲在容器地址
/var/www/html
中呐赡,要想持久化你的數(shù)據(jù),不通過nextCloud也可以查看的話骏融,應(yīng)當(dāng)映射到宿主機的某個位置上Nextcloud的卷配置還是挺多的链嘀,例如配置(config)、數(shù)據(jù)(data)档玻、主題(themes)等
- nextcloud的一些卷地址:
/var/www/html
更新所需的主文件夾/var/www/html/custom_apps
你自己手動安裝的應(yīng)用位置/var/www/html/config
本地配置文件位置/var/www/html/data
你的網(wǎng)盤數(shù)據(jù)存放的位置/var/www/html/themes/<YOU_CUSTOM_THEME>
主題文件位置以上卷映射我這里只把data單獨抽出來了怀泊,其他的配置全部默認放在
/var/www/html
映射的位置里
下面是我的運行日志
qinkangdeid@omv:~$ docker run -d --name nextcloud \
> -p 8088:80 \
> --restart=unless-stopped \
> -v /sharedfolders/nextcloud/html:/var/www/html \
> -v /sharedfolders/nextcloud/data:/var/www/html/data \
> nextcloud
Unable to find image 'nextcloud:latest' locally
latest: Pulling from library/nextcloud
5e6ec7f28fb7: Pull complete
cf165947b5b7: Pull complete
7bd37682846d: Extracting [===========================================> ] 58.49MB/67.44MB
7bd37682846d: Pull complete
99daf8e838e1: Pull complete
ae320713efba: Pull complete
ebcb99c48d8c: Pull complete
9867e71b4ab6: Pull complete
936eb418164a: Pull complete
5d9617dfb66b: Pull complete
8dd7afaae109: Pull complete
8f207844da7e: Pull complete
adb3ae5e4987: Pull complete
44d7d07029db: Pull complete
fb91064652b0: Pull complete
50923e16d552: Pull complete
a7cb9c70c5d2: Pull complete
728e578e40fa: Pull complete
4c3163d09df1: Pull complete
842c4700643d: Downloading [===========================================> ] 35.98MB/41.57MB
842c4700643d: Pull complete
cc1964f4bb3e: Pull complete
125e01596295: Pull complete
Digest: sha256:a2f2bd57fcfd92b3b6c23b6f34f65d59c9b25e7cc883b1ac67fff01229325692
Status: Downloaded newer image for nextcloud:latest
b2b8cb3a61967ba08cb64490c6c8d2a173882560ae22fb0a6a45f895dea36912
例行慣例,查看容器運行:
qinkangdeid@omv:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b2b8cb3a6196 nextcloud "/entrypoint.sh apac…" 42 seconds ago Up 38 seconds 0.0.0.0:8088->80/tcp nextcloud
cb81622828c1 mariadb "docker-entrypoint.s…" 7 minutes ago Up 5 minutes 0.0.0.0:3307->3306/tcp db_nextcloud
5b9d858e08ab opengg/aria2 "/init.sh" About an hour ago Up 5 minutes 0.0.0.0:6800->6800/tcp aria2
訪問NextCloud
我把nextcloud的服務(wù)端口映射到了宿主機的8088端口上误趴,nextcloud啟動后霹琼,瀏覽器輸入http://你的IP:8088
即可訪問nextcloud了。
剛開始的界面如下:
第一項配置是配置日后訪問nextcloud的一個管理員用戶名和密碼
第二項是數(shù)據(jù)目錄凉当,這個我們在運行容器的時候已經(jīng)指定了位置枣申,所以這里不用動
第三項就是配置外置數(shù)據(jù)庫的連接信息了,將之前我們創(chuàng)建
mariadb
的信息填寫進去看杭,其實這里也可以在安裝nextcloud的時候?qū)⒅暗膍ariadb容器連接進去忠藤,這里就手動填寫了。要注意數(shù)據(jù)庫的服務(wù)端口如果宿主機和容器端口映射的不一樣的話楼雹,這里要寫宿主機的端口模孩,例如現(xiàn)在我的mariadb容器的服務(wù)端口3306映射到了宿主機的3307端口上了,所以這里使用的端口為3307烘豹。
所有信息填寫完成后瓜贾,點擊安裝完成,這一步驟會比較的耗時間携悯,nextcloud需要創(chuàng)建數(shù)據(jù)庫表和一些初始化配置信息
點擊安裝完成
安裝完成后祭芦,會自動顯示以下界面
里面會有一些默認的示例文件
至此nextcloudu已經(jīng)安裝完成,你可以繼續(xù)探索NextCloud所擁有的功能憔鬼。
拓展安裝方式
PS: 上面的安裝方式需要在第一次啟動訪問nextcloud的時候配置數(shù)據(jù)庫連接龟劲、數(shù)據(jù)卷地址,下面的方式可以減少這個步驟
也就是可以減少下面這張圖的配置情況:
docker可以使用 --link 連接另外一個容器的配置 nextcloud也支持
通過環(huán)境變量自動配置
可以在首次運行nextcloud容器時預(yù)先配置安裝頁面上詢問的所有內(nèi)容轴或。要啟用自動配置昌跌,
可以通過以下環(huán)境變量設(shè)置數(shù)據(jù)庫連接。但是只能使用一種數(shù)據(jù)庫類型照雁!
Nextcloud目前所支持的環(huán)境變量自動配置如下:
-
配置數(shù)據(jù)庫的環(huán)境變量
-
針對選用SQLITE_DATABASE數(shù)據(jù)庫的參數(shù):
- SQLITE_DATABASE: 使用SQLite數(shù)據(jù)庫時候的數(shù)據(jù)庫名稱(我們不適用這個數(shù)據(jù)庫所以不用帶這個參數(shù))
-
針對選用MYSQL/MariaDB數(shù)據(jù)庫的參數(shù):
-
MYSQL_DATABASE
: 要使用的數(shù)據(jù)庫的名稱 在這里和之前創(chuàng)建的mariadb容器
的數(shù)據(jù)庫一直db_nextcloud
-
MYSQL_USER
:數(shù)據(jù)庫用戶名 -
MYSQL_PASSWORD
數(shù)據(jù)庫用戶名密碼 -
MYSQL_HOST
: 配置的數(shù)據(jù)庫容器的名稱docker run -d --name db_nextcloud
的--name
參數(shù)指定的名稱蚕愤,也就是db_nextcloud
-
-
針對選用PostgreSQL數(shù)據(jù)庫的參數(shù):
-
POSTGRES_DB
:postgres數(shù)據(jù)庫的名稱 -
POSTGRES_USER
:postgres數(shù)據(jù)庫用戶名 -
POSTGRES_PASSWORD
postgres數(shù)據(jù)庫用戶的密碼(對應(yīng)上面用戶名的密碼) -
POSTGRES_HOST
:配置的數(shù)據(jù)庫容器的名稱
-
-
-
配置Nextcloud 管理員用戶密碼的環(huán)境變量
-
NEXTCLOUD_ADMIN_USER
:管理員用戶名 -
NEXTCLOUD_ADMIN_PASSWORD
:管理員密碼
-
-
配置Nextcloud 數(shù)據(jù)文件地址和表名前綴的環(huán)境變量
-
NEXTCLOUD_DATA_DIR
: nextcloud數(shù)據(jù)存放的位置(默認路徑是:/var/www/html/data
) 這個不設(shè)我們還可以使用-v
參數(shù)來映射 -
NEXTCLOUD_TABLE_PREFIX
: nextcloud依賴的數(shù)據(jù)庫表表名前綴 (默認是: "") 可選操作 一般也不會設(shè)啦
-
所以創(chuàng)建nextcloud容器
的方式就稍稍有些變化了,可以根據(jù)上面的環(huán)境變量自由添加,環(huán)境變量使用-e
追加萍诱,我這里只配置數(shù)據(jù)庫的環(huán)境變量悬嗓,如下命令所示:
docker run -d --name nextcloud \
--link db_nextcloud:db_nextcloud \
-p 8088:80 \
-p 4433:443 \
-e PUID=1000 \
-e PGID=100 \
-v /sharedfolders/nextcloud/html:/var/www/html \
-v /sharedfolders/nextcloud/data:/var/www/html/data \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=123456 \
-e MYSQL_HOST=db_nextcloud \
--restart=unless-stopped \
nextcloud
我的執(zhí)行日志:
root@omv:/sharedfolders/nextcloud# docker run -d --name nextcloud \
> --link db_nextcloud:db_nextcloud \
> -p 8088:80 \
> -e PUID=1000 \
> -e PGID=100 \
> -v /sharedfolders/nextcloud/html:/var/www/html \
> -v /sharedfolders/nextcloud/data:/var/www/html/data \
> -e MYSQL_DATABASE=nextcloud \
> -e MYSQL_USER=nextcloud \
> -e MYSQL_PASSWORD=123456 \
> -e MYSQL_HOST=db_nextcloud \
> --restart=unless-stopped \
> nextcloud
Unable to find image 'nextcloud:latest' locally
latest: Pulling from library/nextcloud
27833a3ba0a5: Already exists
2d79f6773a3c: Already exists
f5dd9a448b82: Already exists
95719e57e42b: Already exists
cc75e951030f: Already exists
78873f480bce: Already exists
1b14116a29a2: Already exists
887fc426d9b4: Pull complete
e8a2a7e68e47: Pull complete
44116bd4b499: Pull complete
5a7ed133cf7c: Pull complete
a0cc2e7ce3b9: Pull complete
3ea943f2a6e6: Pull complete
dc6fe404fa96: Pull complete
2970a87ebdd8: Pull complete
632923a6d419: Pull complete
78f88b7ec6fe: Pull complete
a62deb12226c: Pull complete
30d2885ecc94: Pull complete
5c72c2211abe: Pull complete
Digest: sha256:e4c59de7d564a7cec680d32ebed64bb7a7c53859d1c9dd6ef21912183719b203
Status: Downloaded newer image for nextcloud:latest
8aa333d93a38589c758efd44db429b28e65301205516d940c5e772212ce09b77
root@omv:/sharedfolders/nextcloud#
之后nextcloud啟動,第一次訪問nextcloud就出現(xiàn)如下畫面:
數(shù)據(jù)庫和數(shù)據(jù)卷的配置沒了裕坊,只需要創(chuàng)建一個管理員賬戶即可