烂泥:个人网盘nextcloud的docker化搭建

本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下

jenkins技术分享QQ群:571981257

从去年开始各大云盘厂商纷纷的关闭各自的服务,目前也就百度的个人云盘还能存放点资料,但是其下载速度我也只能呵呵了。其他的云盘厂商就更不用说了,所以我早就打算搭建的个人网盘了。

在网盘选型的过程,就看中了nextcloud这个开源云盘系统。nextcloud脱胎于owncloud,据说nextcloud代码完全是从owncloud复制而来,只是修改了相关的一些logo,和开放了企业版本的功能。

下面我就开始搭建nextcloud,因为最近一直在学习有关docker的知识,所以这篇文章我们还是会依托于docker为基础,来进行相关的搭建操作。

一、配置基础环境

前文我们已经介绍了nextcloud搭建是要依托于docker的,所以我们要安装docker的基础环境,这个可以参考《烂泥:wordpress迁移到docker》这篇文章。

二、下载相关docker镜像

搭建nextcloud云盘,我们需要几个docker镜像:nginx、mariadb和wonderfall/nextcloud。

对于nextcloud使用的数据库,我们可以使用mysql和mariadb。但是因为我们选择的是wonderfall/nextcloud这个nextcloud镜像,所以建议还是使用mariadb数据库。

在此,吐槽下nextcloud官方docker镜像,真心不好用啊,而且还是基于debian8的,整个镜像大概有600M+。而wonderfall/nextcloud镜像是基于alpine,整个镜像300M不到,比官方镜像少了一半。对于我这样的使用阿里云ecs,小磁盘空间来说真的是福利啊。

这个是我选择wonderfall/nextcloud这个镜像的最主要的一个原因,除此之外wonderfall/nextcloud镜像的配置也比较简单。

下载相关镜像,使用如下命令:

docker pull wonderfall/nextcloud

docker pull mariadb

docker pull nginx:alpine

clip_image001

三、配置docker-compose.yml文件

对于nextcloud的docker-compose.yml文件,我这边直接贴出其内容,如下:

cat docker-compose.yml

nextcloud-db:

image: mariadb

container_name: nextcloud_db

ports:

– “33034:3306”

volumes:

– ./mariadb:/var/lib/mysql

environment:

– MYSQL_ROOT_PASSWORD=123456

– MYSQL_DATABASE=nextcloud

– MYSQL_USER=wwwilanni

– MYSQL_PASSWORD=123456

nextcloud_web:

image: wonderfall/nextcloud

container_name: nextcloud_web

environment:

– UID=1000

– GID=1000

– UPLOAD_MAX_SIZE=10G

– APC_SHM_SIZE=128M

– OPCACHE_MEM_SIZE=128

– CRON_PERIOD=15m

– TZ=Aisa/Shanghai

– ADMIN_USER=admin

– ADMIN_PASSWORD=123456

– DOMAIN=pan.ilanni.com

– DB_TYPE=mysql

– DB_NAME=nextcloud

– DB_USER=wwwilanni

– DB_PASSWORD=123456

– DB_HOST=nextcloud-db:3306

volumes:

– ./nextcloud/data:/data

– ./nextcloud/config:/config

– ./nextcloud/apps:/apps2

– ./nextcloud/themes:/nextcloud/themes

links:

– nextcloud-db

nginx:

image: nginx:alpine

container_name: nginx

restart: always

ports:

– “80:80”

volumes: – ./pan.ilanni.com.conf:/etc/nginx/conf.d/pan.ilanni.com.conf

links:

– nextcloud_web

clip_image002

clip_image003

对于上面的docker-compose.yml文件,我们创建了3个docker容器,分别是nextcloud-db、nextcloud_web、nginx。

其中nextcloud-db是用于创建nextcloud数据库,nextcloud_web是nextcloud应用容器、nginx是nginx的容器,

对于nginx容器需要注意加载的配置文件和对外映射的端口,其他没有什么特殊的配置。

四、配置nginx文件

对于上述的docker-compose.yml文件中nginx容器加载的配置文件,我们在此贴出其配置内容,如下:

cat pan.ilanni.com.conf

server {

listen 80;

server_name pan.ilanni.com;

client_max_body_size 10G;

location / {

proxy_redirect off;

proxy_pass http://nextcloud_web:8888;

proxy_set_header Host $http_host;

}

}

注意:上述nginx配置文件中,我们可以很容易看到nginx容器反向代理到后端的nextcloud_web容器,而nextcloud_web容器的监听的是8888端口。

也就是说nextcloud_web如果不通过nginx容器反向代理8888端口的话,我们只要把nextcloud_web容器的8888端口映射出来也是可以访问nextcloud的。

五、启动docker容器

docker-compose.yml和nginx配置文件全部配置完毕后,我们来启动docker容器,使用如下命令:

docker-compose up –d

docker ps

clip_image004

通过上图,我们可以很明显的看出各个容器都已经正常启动。

六、验证nextcloud功能

docker容器都期待完毕后,我们现在来访问nextcloud,如下:

http://pan.ilanni.com/login

clip_image005

上述输入的用户名和密码,我们可以在docker-compose.yml文件中看到。

clip_image006

clip_image007

这样我们就可以在web端上传文件了。

七、安装相关客户端

nextcloud客户端支持PC、安卓和ios的,其中ios是需要付费的,其他是免费的。

我们可以在nextcloud的官网下载到最新版本的客户端,如下:

https://download.nextcloud.com/

clip_image008

在此我们以安卓的客户端为例,下载并安装,上传文件后如下:

clip_image009

通过上图,我们可以很明显的看到手机上的照片已经上传到nextcloud中了。(手机无法截屏,使用了其他的图片替代,见谅。)

登录到nextcloud的web界面,查看上传的文件,如下:

clip_image010

我们也可以登录到nextcloud服务器上看看文件的存放方式,如下:

clip_image011

通过上图我们可以很明显的看出,nextcloud存储文件在服务器上是以文件的形式直接存放的。

八、集成wordpress

在第三章节的docker-compose.yml文件,我们是单独为nextcloud开放了80端口。

但是现在的实际情况是我们需要把nextcloud与wordpress使用同一个nginx容器,那么我们就需要把wordpress和nextcloud集成到一个docker-compose.yml文件中。

下面直接贴出,wordpress与nextcloud集成到同一个docker-compose.yml文件内容如下:

cat docker-compose.yml

wordpress_db:

image: mysql:latest

container_name: wordpress_db

restart: always

ports:

– “33033:3306”

volumes:

– ./data:/var/lib/mysql

environment:

MYSQL_ROOT_PASSWORD: 123456

MYSQL_DATABASE: ilanni

MYSQL_USER: wwwilanni

MYSQL_PASSWORD: 123456

wordpress_php:

image: wordpress:fpm-alpine

container_name: wordpress_php

restart: always

environment:

WORDPRESS_DB_HOST: wordpress_db:3306

WORDPRESS_DB_NAME: ilanni

WORDPRESS_DB_USER: wwwilanni

WORDPRESS_DB_PASSWORD: 123456

volumes:

– ./wordpress:/var/www/html

links:

– wordpress_db

nextcloud-db:

image: mariadb

container_name: nextcloud_db

ports:

– “33034:3306”

volumes:

– ./mariadb:/var/lib/mysql

environment:

– MYSQL_ROOT_PASSWORD=123456

– MYSQL_DATABASE=nextcloud

– MYSQL_USER=wwwilanni

– MYSQL_PASSWORD=123456

nextcloud_web:

image: wonderfall/nextcloud

container_name: nextcloud_web

environment:

– UID=1000

– GID=1000

– UPLOAD_MAX_SIZE=10G

– APC_SHM_SIZE=128M

– OPCACHE_MEM_SIZE=128

– CRON_PERIOD=15m

– TZ=Aisa/Shanghai

– ADMIN_USER=admin

– ADMIN_PASSWORD=123456

– DOMAIN=pan.ilanni.com

– DB_TYPE=mysql

– DB_NAME=nextcloud

– DB_USER=wwwilanni

– DB_PASSWORD=123456

– DB_HOST=nextcloud-db:3306

volumes:

– ./nextcloud/data:/data

– ./nextcloud/config:/config

– ./nextcloud/apps:/apps2

– ./nextcloud/themes:/nextcloud/themes

links:

– nextcloud-db

nginx:

image: nginx:alpine

container_name: nginx

restart: always

ports:

– “80:80”

volumes:

– ./wordpress:/var/www/html

– ./www.ilanni.com.conf:/etc/nginx/conf.d/www.ilanni.com.conf

– ./pan.ilanni.com.conf:/etc/nginx/conf.d/pan.ilanni.com.conf

links:

– wordpress_php

– nextcloud_web

clip_image012

clip_image013

clip_image014

未经允许不得转载:烂泥行天下 » 烂泥:个人网盘nextcloud的docker化搭建

赞 (25) 打赏

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

支付宝扫一扫打赏

微信扫一扫打赏