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

发表评论

108 条评论

  1. ko

    OP机器(ubuntu 18 系统)
    大佬,我想问下,如果先通过你这个方法安装了nextcloud(caddy反代域名nc.abc.com,此时访问正常)
    ,然后我又装了quickboxlite(通过TUI安装,也绑定qb.abc.com),结果发现两个域名都打不开了,这种情况要怎么办(纯新手- -)

  2. DZ

    登陆后设置数据库出现:
    Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory
    麻烦博主看下,谢谢!

    1. Rat's
      @DZ

      这个不太清楚,没遇到过

  3. f0x

    caddy反代以后,用域名访问显示“通过不被信任的域名访问”怎么解决

  4. xxx101

    您好博主,挂载本地存储没有权限怎么办...

    1. xxx101
      @xxx101

      sudo chown -R 也试过了

  5. bbiinn

    折腾了半天还是大佬的教程有用,建议把那个nextcloud镜像换成官方的镜像,或者LinuxServer的镜像,他们更新维护的比较频繁。不过这个--link这个参数是真的好用,为什么官方不推荐,可惜。

    1. bbiinn
      @bbiinn

      对了,可以补充一下登录后链接数据库的操作说明啊,特别是最后那个链接端口是填localhost:3306还是mysqlnc:3306, 还是两个都是可以的?

      1. Rat's
        @bbiinn

        忘了,应该都有用,镜像我先找找

  6. lzbzz

    No Space Left on Device怎么办

    1. Rat's
      @lzbzz

      看是不是硬盘满了,df -h查看下

  7. kanlee

    ====安装成功=====

  8. 123

    完全按这个安装了,但是IP:3000访问不了?求解

    1. Rat's
      @123

      看下docker进程,docker ps如果有这个进程,就去检查下防火墙端口,比如像阿里云这种,控制面板都有安全组什么的。

      1. jioke
        @Rat's

        也我是安装完成之后,无法访问IP:3000这个。不知道卡在哪里了。防火墙肯定开了

  9. 只爱凌晨四点

    楼主你好,我卡在最后完成安装的步骤,提示”无法创建或写入数据目录 /root/nextcloud/data”,怎么回事呀

    1. Rat's
      @只爱凌晨四点

      选的什么数据库类型?或者把你的安装链接私发我看看。

      1. 只爱凌晨四点
        @Rat's

        MySQL5.7

        1. mou
          @只爱凌晨四点

          我也是卡在这,楼主有解决办法吗

  10. 浮生若梦

    docker安装好nextcloud怎么修改nextcloud的存储目录??
    我想把整个机子的硬盘都给他当存储空间,,

    1. yj
      @浮生若梦

      docker 安装的话,可以在启动的时候,挂载 容器中的 /data 文件夹到宿主机中的指定目录。
      可以参考这一个,基于docker 安装连接mysql: http://thisforyou.cn:180/blog/2020/03/01/shi-yong-docker-kuai-su-an-zhuang-nextcloud-mysql-ge-ren-si-you-yun-pan-wang-su-chao-kuai/

    2. Rat's
      @浮生若梦

      好像就是默认服务器整个根目录

      1. 浮生若梦
        @Rat's

        不是的,我试了,机子还可以存储18G,可我放个3G文件上去,都提示没空间了……