NextCloud+Docker自建私有云盘全过程

本文的方法会遇到以下问题,后续再研究其他方法:
1. 注销功能存在问题,链接是localhost:8080;
2. 无法在后端调用cron.php任务。

我的环境

天翼云主机+100G云硬盘
Ubuntu16.04 64位
腾讯云免费ssl证书

准备运行环境

修改hostname

编辑/etc/hostname/etc/hosts文件,重启后生效。

vi /etc/hostname
vi /etc/hosts

更换阿里云的apt源

编辑/etc/apt/sources.list文件,替换为以下内容。

vi /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

更清单,升级软件。

apt-get update
apt-get upgrade

正式安装

安装Nginx

apt-get install nginx

配置Nginx

新建一个/etc/nginx/conf.d/nextcloud.conf并添加以下内容,注意将XXX.XXX.XXX更换为你的域名,将申请到的ssl证书上传到/etc/nginx/cert/nextcloud.crt /etc/nginx/cert/nextcloud.key

vi /etc/nginx/conf.d/nextcloud.conf
server {
    listen 80;
    server_name XXX.XXX.XXX;
    # enforce https
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name XXX.XXX.XXX;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate /etc/nginx/cert/nextcloud.crt;
    ssl_certificate_key /etc/nginx/cert/nextcloud.key;
    add_header Strict-Transport-Security "max-age=15768000";
    add_header X-Content-Type-Options nosniff;
    add_header X-Permitted-Cross-Domain-Policies none;
    # Path to the root of your installation
    client_max_body_size 10G;

    location / {
      proxy_pass http://localhost:8080;
    }
}

修改文件权限,重启nginx服务。

chmod 600 /etc/nginx/cert/nextcloud.crt
chmod 600 /etc/nginx/cert/nextcloud.key
service nginx restart

映射云硬盘

过程略。

安装Docker

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

然后,我们需要向 source.list 中添加 Docker 软件源

sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
apt-get update
apt-get install docker-ce

启动 Docker CE

sudo systemctl enable docker
sudo systemctl start docker

使用Docker镜像加速器

编辑/etc/docker/daemon.json,添加以下内容,如果文件不存在请新建该文件。

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

重启一下docker。

systemctl daemon-reload
systemctl restart docker

安装Mariadb

-v /var/www/nextcloud/mysqldb:/var/lib/mysql是将数据库文件映射到宿主的文件夹。
注意将其中YOUR_PASSWORD修改为你的密码。

docker run -d --name db_nextcloud \
       -v /var/www/nextcloud/mysqldb:/var/lib/mysql \
       -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD \
       -e MYSQL_DATABASE=nextcloud \
       -e MYSQL_USER=nextcloud \
       -e MYSQL_PASSWORD=YOUR_PASSWORD \
       mariadb

安装NextCloud

--link db_nextcloud:db_nextcloud是因为要链接数据库的docker。
-v /var/www/nextcloud/data:/var/www/html/data是将文件映射到宿主的文件夹。

docker run -d --name nextcloud \
       --link db_nextcloud:db_nextcloud \
       -p 8080:80 \
       -p 4433:443 \
       -v /var/www/nextcloud/data:/var/www/html/data \
       nextcloud

Web配置

数据库配置

NextCloud+Docker自建私有云盘全过程_第1张图片
Snipaste_2018-11-25_19-12-58.png

安装完成

NextCloud+Docker自建私有云盘全过程_第2张图片
Snipaste_2018-11-25_19-14-12.png

参考资料:

  1. 自建私有云了解一下--开源软件方案NOA(一)之Nextcloud篇
    https://zhuanlan.zhihu.com/p/34610722
  2. Ubuntu 安装 Docker CE
    https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html
  3. NextCloud
    https://hub.docker.com/_/nextcloud/

你可能感兴趣的:(NextCloud+Docker自建私有云盘全过程)