docker利用nextcloud搭建一个私有百度云盘
突然有个需求,需要搭建一个文档存储协同的私有服务,经过多方搜索后找到onlyoffice服务可以满足我的文档编辑相关需求,而存储方面则可以利用nextcloud搭建一个私有云盘服务来满足,这样利用nextcloud+onlyoffice就可以满足我的文档在线协同存储需求,其实说白了就是可以编辑ofiice等文件并分享的的私有云盘.
前期我采用传统的镜像一个一个启动,后边我又换成了docker-compose来部署,所以我也提供了两种方案。还有一点就是我的数据库采用的是postgresql,系统还支持mysql和MariaDB,或者直接使用内置的sqLite。如果采用mysql,MariaDB配置方式和我的postgresql大同小异,内置sqLite则简单很多,直接忽略文章中数据库这一块的所有操作。
正文
安装启动服务
方式一传统部署,方式二docker-compose部署,推荐第二种,简单。
不管哪种,先安装docker
linux下的docker安装
方式一
拉取nextcloud镜像和数据库镜像
数据库镜像是可选的,还可以采用mysql或者直接使用nextcloud内置的sqlLite,我这边采用postgresql。还有就是因为我需要操作office,还安装了onlyoffice服务,可以忽略。
dockerpulldocker.io/nextcloud dockerpullpostgres dockerpullonlyoffice/documentserver
创建启动容器
如果不使用内置数据库,那首先数据库需要初始化好存储仓库,我创建了一个cloud仓库专门用来保存数据并且启动。
启动数据库(非必须)
dockerrun--restart=always--namepostgresql-v/etc/localtime:/etc/localtime-v/data/postgresql:/var/lib/postgresql/data-ePOSTGRES_PASSWORD=123456-d-p35432:5432postgres
-ePOSTGRES_PASSWORD=123456的意思是数据库密码默认123456
启动office服务(非必须)
dockerrun--nameonlyoffice-i-t-d-p9000:80onlyoffice/documentserver
启动nextcloud
dockerrun--restart=always--namenextcloud-p8080:80-v/nextcloud:/var/www/html--linkpostgresql:postgresql-dnextcloud
-namenextcloud设置容器名字
--restart=always表示总是自启动,会在关机等重启机器后重启容器
-p8080:80表示把本机8080端口映射到容器内的80端口,就是你要访问时需要本机ip:8080(你可以选择自己想要端口).
-v/nextcloud:/var/www/html用来把容器相关资源映射到本地/nextcloud目录下(你可以选择自己对应目录),方便数据持久化和外部修改页面配置等等.
--linkpostgresql:postgresql非必须,链接postgresql数据库的容器,方便配置(后面细讲作用)
方式二
安装docker-compose
curl-Lhttps://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:
dockernetworkcreatenextcloud
启动:
docker-composeup-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中配置(没有请添加)
'trusted_domains'=> array( 0=>'www.xxx.com:10080', ),
然后就是使用和邮箱的配置可以进行自行摸索.
配置onlyoffice(非必须,我只是为了在线操作word等)
进入云盘以管理员账号登录,点击用户->应用来安装ONLYOFFICE插件:
然后用户->设置->ONLYOFFICE来填入自己服务的地址即可。
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。