OMV配置你的私有云盘--NextCloud
[TOC]
OMV配置你的私有云盘–NextCloud
现在云盘厂家已经所剩无几,你能选的余地已经很少了,是时候找一个私有的云盘解决方案了。你绝对不是第一个有这个想法的人,所以很幸运,在开源的大世界里,已经有人做了出众的产品(Seafile、OwnCloud,NextCloud等等),NextCloud就是其中一款,它的很多东西,都可以来自云端,这也是它如此受欢迎的原因之一。
目前最新版本是Nextcloud 15(15.0.6 )。
NextCloud 是一款开源网络硬盘系统。任何人都可以自由的获取 NextCloud 程序,在家庭或公司构建私有且免费的网络硬盘。它是完全由你用户控制的私有、安全且功能完整的文件同步与共享解决方案。
下面的步骤需要使用到Docker,如果还没有安装的请先安装,查看OMV配置Docker
创建nextcloud配置共享文件夹
安装docker容器时候-v
参数有时候要映射宿主机的磁盘地址
OMV的磁盘地址一般映射在 /src
下面
具体的硬盘信息可以到 文件系统
查看
比如我的硬盘
在我的/src
下的地址是:
请记得你自己的磁盘位置 后面的命令需要替换成你自己的磁盘地址
nextcloud需要的配置文件夹
omv提倡文件管理操作都能在WEB界面管理,所以这里使用创建共享文件夹和SMB的方式创建
- 先创建共享文件夹
访问权限管理
->共享文件夹
,文件夹尽量见名知意,所以这里就叫nextcloud
进入命令行可以查看创建的文件夹,验证文件夹是否已经创建好
PS: OMV在创建了共享文件夹后,会将共享文件夹映射到一个/sharedfolders
的文件路径下,所以你有两种访问你刚才创建的共享文件夹的路径,一个是定位到你磁盘的路径,一个是公共的/sharedfolders
下的路径 这两个路径下的操作都是有效的 你可以随便选一个
比如我刚才创建的nextcloud的共享文件夹,我要找到它,可以去两个路径下都能找到
- 设置nextcloud文件夹的SMB共享
为了使用SMB用户创建nextcloud的其他配置子文件夹
前往服务
-> SMB/CIFS
, 设置SMB文件夹 方便我们在工作机上操作
之后在你的工作机上使用SMB协议连接NAS
连接上SMB以后,就可以像操作本地文件一样操作NAS文件了,直接鼠标右键点击创建文件夹操作即可创建一个文件夹, 这里我预先准备一下几个子文件夹,用处如下:
db
: nextcloud依赖的持久化数据的数据库html
: nextcloud的资源配置文件夹data
: nextcloud的个人同步文件(你网盘的数据以后就存在这里了) 如下
数据库准备
默认情况下,NextCloud使用的是SQLite数据库进行数据存储,它仅适用于没有客户端同步的测试和轻量级单用户设置。当多用户、多设备、大数据量的时候,SQLite就不太合适了,NextCloud支持MySQL,MariaDB,Oracle 11g和PostgreSQL等多种数据库。并且推荐使用MySQL / MariaDB。所以为了一劳永逸,还是用MySQL代替吧,MariaDB是MySQL源代码的一个分支。这里使用MariaDB作为数据库支撑,
-
安装mariadb
mariadb的安装还是使用docker进行, 打开你的终端,复制以下命令创建mariadb容器,即可。如果不想使用命令行安装,需要使用OMV自带的
docker-gui
界面操作也是可以的,将对应的-*
的配置填到相应的界面框框内就可以了,类似的操作可以参考这里
|
|
- 命令参数释义(具体的参数释义可以查看镜像地址):
-p 3307:3306
: 容器服务开放的端口,前者是宿主机的端口,后者是容器内服务的端口
-e PUID、-e PGID
: 运行容器的用户的权限集id
-e MYSQL_ROOT_PASSWORD
: 数据库root用户的密码
-e MYSQL_DATABASE=nextcloud
:创建一个名称为nextcloud的数据库
-e MYSQL_USER
:创建一个名称为nextcloud的用户
-e MYSQL_PASSWORD
:名称为nextcloud的用户的密码
--restart=unless-stopped
:当容器停止时候重启容器
-v
:数据卷绑定 前者是宿主机的地址,后者是容器机器的位置例如:
-v /sharedfolders/nextcloud/db:/var/lib/mysql
把容器/var/lib/mysql
的内容挂在到宿主机/sharedfolders/nextcloud/db
的位置
以下是我运行的日志
|
|
查看docker运行容器,看NAMES
那一栏下面 有个db_nextcloud
已经在运行,也能看到我们配置的端口
|
|
另一个方式使用telnet
验证安装是否成功
安装NextCloud
NextCloud的安装也还简单,依然是使用docker,复制下面的命令到终端运行即可 ,记得-v
的前部分是你宿主机的地址,如果不想使用命令行安装,需要使用OMV自带的docker-gui
界面操作也是可以的,将对应的-*
的配置填到相应的界面框框内就可以了,类似的操作可以参考这里
|
|
- 命令参数释义(具体的参数释义可以查看镜像地址):
-p 8088:80
: 容器服务开放的端口,前者是宿主机的端口,后者是容器内服务的端口
--restart=unless-stopped
:当容器停止时候重启容器
-v
:数据卷绑定 前者是宿主机的地址,后者是容器机器的位置Nextcloud安装以及数据库之外的所有数据(文件上载等)都存储在容器地址
/var/www/html
中,要想持久化你的数据,不通过nextCloud也可以查看的话,应当映射到宿主机的某个位置上Nextcloud的卷配置还是挺多的,例如配置(config)、数据(data)、主题(themes)等
- nextcloud的一些卷地址:
/var/www/html
更新所需的主文件夹/var/www/html/custom_apps
你自己手动安装的应用位置/var/www/html/config
本地配置文件位置/var/www/html/data
你的网盘数据存放的位置/var/www/html/themes/<YOU_CUSTOM_THEME>
主题文件位置以上卷映射我这里只把data单独抽出来了,其他的配置全部默认放在
/var/www/html
映射的位置里
下面是我的运行日志
|
|
例行惯例,查看容器运行:
|
|
访问NextCloud
我把nextcloud的服务端口映射到了宿主机的8088端口上,nextcloud启动后,浏览器输入http://你的IP:8088
即可访问nextcloud了。
刚开始的界面如下:
-
第一项配置是配置日后访问nextcloud的一个管理员用户名和密码
-
第二项是数据目录,这个我们在运行容器的时候已经指定了位置,所以这里不用动
-
第三项就是配置外置数据库的连接信息了,将之前我们创建
mariadb
的信息填写进去,其实这里也可以在安装nextcloud的时候将之前的mariadb容器连接进去,这里就手动填写了。要注意数据库的服务端口如果宿主机和容器端口映射的不一样的话,这里要写宿主机的端口,例如现在我的mariadb容器的服务端口3306映射到了宿主机的3307端口上了,所以这里使用的端口为3307。
所有信息填写完成后,点击安装完成,这一步骤会比较的耗时间,nextcloud需要创建数据库表和一些初始化配置信息
点击安装完成 安装完成后,会自动显示以下界面
里面会有一些默认的示例文件
至此nextcloudu已经安装完成,你可以继续探索NextCloud所拥有的功能。
拓展安装方式
PS: 上面的安装方式需要在第一次启动访问nextcloud的时候配置数据库连接、数据卷地址,下面的方式可以减少这个步骤 也就是可以减少下面这张图的配置情况:
docker可以使用 –link 连接另外一个容器的配置 nextcloud也支持
通过环境变量自动配置
可以在首次运行nextcloud容器时预先配置安装页面上询问的所有内容。要启用自动配置, 可以通过以下环境变量设置数据库连接。但是只能使用一种数据库类型!
Nextcloud目前所支持的环境变量自动配置如下:
-
配置数据库的环境变量
-
针对选用SQLITE_DATABASE数据库的参数:
- SQLITE_DATABASE: 使用SQLite数据库时候的数据库名称(我们不适用这个数据库所以不用带这个参数)
-
针对选用MYSQL/MariaDB数据库的参数:
MYSQL_DATABASE
: 要使用的数据库的名称 在这里和之前创建的mariadb容器
的数据库一直db_nextcloud
MYSQL_USER
:数据库用户名MYSQL_PASSWORD
数据库用户名密码MYSQL_HOST
: 配置的数据库容器的名称docker run -d --name db_nextcloud
的--name
参数指定的名称,也就是db_nextcloud
-
针对选用PostgreSQL数据库的参数:
POSTGRES_DB
:postgres数据库的名称POSTGRES_USER
:postgres数据库用户名POSTGRES_PASSWORD
postgres数据库用户的密码(对应上面用户名的密码)POSTGRES_HOST
:配置的数据库容器的名称
-
-
配置Nextcloud 管理员用户密码的环境变量
NEXTCLOUD_ADMIN_USER
:管理员用户名NEXTCLOUD_ADMIN_PASSWORD
:管理员密码
-
配置Nextcloud 数据文件地址和表名前缀的环境变量
NEXTCLOUD_DATA_DIR
: nextcloud数据存放的位置(默认路径是:/var/www/html/data
) 这个不设我们还可以使用-v
参数来映射NEXTCLOUD_TABLE_PREFIX
: nextcloud依赖的数据库表表名前缀 (默认是: "") 可选操作 一般也不会设啦
所以创建nextcloud容器
的方式就稍稍有些变化了,可以根据上面的环境变量自由添加,环境变量使用-e
追加,我这里只配置数据库的环境变量,如下命令所示:
|
|
我的执行日志:
|
|
之后nextcloud启动,第一次访问nextcloud就出现如下画面:
数据库和数据卷的配置没了,只需要创建一个管理员账户即可