Rat's

使用Docker快速安装NextCloud个人私有云盘
说明:NexCould是一款不错,也很漂亮的个人私有云网盘,现在使用的人是越来越多了,之前发过一篇常规的搭建教程,...
扫描右侧二维码阅读全文
22
2017/11

使用Docker快速安装NextCloud个人私有云盘

说明:NexCould是一款不错,也很漂亮的个人私有云网盘,现在使用的人是越来越多了,之前发过一篇常规的搭建教程,参考:一款不错的个人私有云:NextCloud安装教程,鉴于很多人在搭建过程中或多或少都会出点问题,今天博主发个很方便的安装方法,就是用Docker安装NextCloud,看到网上很多这样的教程都是通过编辑docker-compose.yml文件来安装的,还要配置反向代理,期间容易出现很多问题,对新手很不友好,而本教程使用纯命令形式安装,不容易出问题,适合尝鲜的新手。

截图

请输入图片描述
请输入图片描述

更新

Docker镜像已替换成更新比较频繁,体积更加小的镜像,使用的是最新稳定版Alpine Linux,环境为PHP 7Nginx

安装

Github地址:https://github.com/chrootLogin/docker-nextcloud

1、安装Docker

#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

2、安装Nextcloud

#拉取Mysql镜像,记得修改数据库信息
docker run --name mysqlnc -d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=moerats \
-e MYSQL_DATABASE=moerats \
-e MYSQL_USER=moerats \
-e MYSQL_PASSWORD=moerats \
-v /root/nextcloud/mysql:/var/lib/mysql \
mysql:5.7

#拉取Nextcloud镜像
docker run -d --name nextcloud --link mysqlnc \
-v /root/nextcloud/data:/data \
-p 3000:80 \
rootlogin/nextcloud

访问地址为http://IP:3000,启动命令里的3000端口可自行替换,不过后面有关端口的命令都自行修改,/root/nextcloud为网盘的数据库,也可以自行修改。

对于CentOS系统,还需要开启3000端口,开启如下:

#CentOS 6
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
service iptables save
service iptables restart

#CentOS 7
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload

如果要用域名访问,就需要反代了。

域名访问

反代可以用NginxApacheCaddy,这里只说宝塔和Caddy。如果你网站有宝塔,就可以使用宝塔进行反代,如果没有,建议使用第2种的Caddy反代,配置很快。

1、宝塔反代
先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:3000,再启用反向代理即可。至于启用SSL就不说了,直接在站点配置就可以启用。

2、Caddy反代
安装Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

配置Caddy

#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

#http访问,该配置不会自动签发SSL
echo "xx.com {
 gzip
 proxy / 127.0.0.1:3000 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "xx.com {
 gzip
 tls admin@moerats.com
 proxy / 127.0.0.1:3000 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }
}" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

启动Caddy

/etc/init.d/caddy start

就可以打开域名进行访问了。

3、Nginx配置
如果你使用其它的,这里就大概发个Nginx反代配置,直接添加到配置文件即可。

#在配置文件里添加
location / {
     proxy_pass http://127.0.0.1:3000;
     proxy_redirect off;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

最后要注意的是,安装的时候,Mysql数据库地址填localhost:3306

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2019 年 07 月 19 日 05 : 33 PM

发表评论

107 条评论

  1. test

    博主,安装完docker版本后怎么配置为MySQL数据库呢?

    1. Rat's
      @test

      这几天我更新下文章吧,使用Mysql

      1. test
        @Rat's

        谢谢。

        1. Rat's
          @test

          已更新Mysql数据库。

          1. test
            @Rat's

            存储&数据库的默认目录填写的/data/data/,在web页面键入信息后点击完成安装,提示:SQLSTATE[HY000] [2002] No such file or directory

          2. test
            @Rat's

            docker下载的rootlogin/nextcloud这个是什么版本?和直接输入nextcloud的版本有什么区别?

            1. Rat's
              @test

              rootlogin/nextcloud这个是镜像版本,一般拉取的仓库最新的版本,不能随便输。

          3. test
            @Rat's

            正在学习中,厉害了。

  2. rua!

    博主,你文章被人盗了:https://www.cnblogs.com/adjk/p/9842415.html

    1. Rat's
      @rua!

      没事,能帮助到人就行,都无所谓

  3. 法外狂徒周克华

    大神什么时候发可以用mysql的教程啊已经两万多次观看人够多了吧 快两年了

    1. Rat's
      @法外狂徒周克华

      你是要docker配合mysql还是纯手动配合mysql?

      1. 法外狂徒周克华
        @Rat's

        docker配合mysql

        1. Rat's
          @法外狂徒周克华

          已新增Mysql数据库

  4. lala

    发现我aria2下载的东西网盘目录不显示

  5. lala

    docker真方便,无脑安装,急速体验,觉得不行随时删除,hhh

    1. Rat's
      @lala

      是的,docker效率高

  6. 走X人韦

    博主老师您好,请教一下;
    怎样配置mysql数据库,我这边设置好了,在登录界面一直连接不上数据库
    Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

    1. 走X人韦
      @走X人韦

      设置好了,mysql镜像有问题......

      1. ML
        @走X人韦

        怎么解决的?

  7. 走X人韦
    该评论仅登录用户及评论双方可见
    1. Rat's
      @走X人韦

      是的,只要任何解析到你服务器的域名都可以访问。

      1. 走X人韦
        @Rat's
        该评论仅登录用户及评论双方可见
  8. 廖俊杨

    博主,您好:

    通过snap搭建的NC,显示不出来目录及文件,而且页面上的所有链接都无响应
    1. Rat's
      @廖俊杨

      大概意思是首页进不去?

      1. 廖俊杨
        @Rat's

        已经登进去了,但是里头的文件,共享这些模块都点不进去

        1. Rat's
          @廖俊杨

          你是指左边的目录?我用的时候没这个问题。你直接用docker安装吧,这个方便些。

          1. 廖俊杨
            @Rat's

            我已经用了snap安装,而且里面有很多数据了,这个能否扩容

            1. Rat's
              @廖俊杨

              这个我倒没研究过,一般都是安装和基本功能使用没问题了,我就不管了。

  9. 万千

    大佬,安装界面报Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory,数据库配置最后一行localhost需要加其他的端口号吗?

    1. Rat's
      @万千

      忘了,这个只能用Sqlite数据库,Mysql要用docker-compose.yml文件,我没写那个方法。

      1. 万千
        @Rat's

        感谢回复,自己翻原git搞定了MariaDB,有个新疑问想请教下就是跑了两天后提示有新版本14.0.6,这要怎么升级呢?谢谢

        1. Rat's
          @万千

          这个自己更新有点复杂,需要熟悉Docker,只能等镜像作者更新吧。

          1. 万千
            @Rat's

            收到作者更新的邮件了……可是咋升呢 用什么命令么?升了数据还在不在呢

            1. Rat's
              @万千

              重新创建镜像,映射的文件夹不变。或者映射的新文件夹和原文件夹数据一样。

  10. riddle

    老哥 试了下 还是没搞明白怎么安装。也看了原git的说明了。
    安装界面一直提示数据目录无法写入。
    这个数据目录到底是个神马东西呢。

    1. Rat's
      @riddle

      照着文章来就行,已经很小白了,后面的权限问题我自己测试没遇到,你可能需要对外部的文件夹加权限,你试试chmod -R 777 /root/nextcloud。