本文由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
三、配置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
对于上面的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
通过上图,我们可以很明显的看出各个容器都已经正常启动。
六、验证nextcloud功能
docker容器都期待完毕后,我们现在来访问nextcloud,如下:
http://pan.ilanni.com/login
上述输入的用户名和密码,我们可以在docker-compose.yml文件中看到。
这样我们就可以在web端上传文件了。
七、安装相关客户端
nextcloud客户端支持PC、安卓和ios的,其中ios是需要付费的,其他是免费的。
我们可以在nextcloud的官网下载到最新版本的客户端,如下:
https://download.nextcloud.com/
在此我们以安卓的客户端为例,下载并安装,上传文件后如下:
通过上图,我们可以很明显的看到手机上的照片已经上传到nextcloud中了。(手机无法截屏,使用了其他的图片替代,见谅。)
登录到nextcloud的web界面,查看上传的文件,如下:
我们也可以登录到nextcloud服务器上看看文件的存放方式,如下:
通过上图我们可以很明显的看出,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
未经允许不得转载:烂泥行天下 » 烂泥:个人网盘nextcloud的docker化搭建