博主前两天在阿里云买了一台云服务器,在服务器上部署了Directadmin,但是我还想部署一个nextcloud做自己的云盘。
原来的想法是直接在Directadmin上部署nextcloud,但是有很多莫名其妙的问题暂时无法解决,所以就采用了Docker部署的方式。
操作系统:centos7 x64
directadmin:nginx+php+mysql
一、准备
1.1 参考资料
参考资料
http://www.jianshu.com/p/a2798b1ac8a4
1.2 思路
1、使用Docker安装nextcloud
2、使用directadmin的nginx做反向代理,代理到nextcloud的端口
3、使用ssl,通过https访问
4、ssl部署在directadmin上,由nginx完成ssl加密+反向代理
1.3大致实现思路
1、部署nextcloud
2、申请ssl整数,并应用
3、设置nextcloud默认通过https访问
二、部署nextcloud
2.1 安装Docker
curl -sSL https://get.docker.com/ | sh
Tips:博主是按照官网步骤安装的
2.2 安装compose
curl -L https://github.com/docker/compose/releases/download/1.10.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
2.3 配置Docker镜像源
采用国内源,加快下载速度。编辑/etc/docker/daemon.json并加入以下内容:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
2.4部署NextCloud
2.4.1 为nextcloud创建独立容器网络
docker network create nextcloud
2.4.2 创建WEB服务器
本次使用轻量化的Caddy(想用nginx也可以)。
新建一个容器文件夹,新建Caddyfile文件。
mkdir -p /root/tools/nextcloud cd /root/tools/nextcloud vim Caddyfile
文件内容如下:
example.com { proxy / 233.233.233.233:2333 { proxy_header Host {host} proxy_header X-Real-IP {remote} proxy_header X-Forwarded-Proto {scheme} } log /var/log/caddy.log gzip }
2.4.3 创建nextcloud配置文件
vim docker-compose.yml
内容如下:
version: '2' services: app: container_name: cloud_app image: nextcloud volumes: - ./data/cloud/config:/var/www/html/config - ./data/cloud/data:/var/www/html/data - ./data/cloud/apps:/var/www/html/apps ports: - "2333:80" restart: always cron: container_name: cloud_cron image: nextcloud volumes_from: - app user: www-data entrypoint: | bash -c 'bash -s <<EOF trap "break;exit" SIGHUP SIGINT SIGTERM while /bin/true; do /usr/local/bin/php /var/www/html/cron.php sleep 900 done EOF' restart: always web: container_name: cloud_web image: abiosoft/caddy volumes: - ./Caddyfile:/etc/Caddyfile - ~/.caddy:/root/.caddy ports: - 8081:8081 - 8443:8443 restart: always networks: default: external: name: nextcloud
保存以后,一个命令即可启动:
docker-compose up -d
开始部署nextcloud...
2.4.4 登录并初始化
上面完成之后,已经可以登录nextcloud了。
登录链接:http://127.0.0.1:2333
博主使用了sqlite,没有用mysql等三方数据库。
2.5 使用Directadmin反向代理
directadmin切换到管理级后,点击【自定义httpd配置】,点击相应的域名后,在第一个输入框输入:
location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:2333; }
保存后,反向代理已经可以正常作用。
2.6 设置nextcloud
nextclou安装好之后,其数据位于/root/tools/nextcloud/data/cloud目录下。
修改配置文件/root/tools/nextcloud/data/cloud/config/config.php,加入:
'overwriteprotocol' => 'https',
使得所有连接均转向https.
到此结束!