侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

使用NextCloud构建一个私有云盘

zze
zze
2020-09-21 / 0 评论 / 0 点赞 / 591 阅读 / 4276 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

NextCould 是什么?

就是类似百度网盘的云上存储,效果如下:

image.png

下面我就在一台 Ubuntu 16.04 的机器上演示 Docker 部署 NextCloud。

Docker 部署

1、安装并启动 Docker:

$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
$ systemctl start docker

2、运行一个容器:

$ docker run --name=nextcloud -v /data/nextcloud:/var/www/html  -d -p 8089:80 nextcloud

NextCloud 的源码和数据目录都在容器的 /var/www/html 中,这里我将它映射到宿主机的 /data/nextcloud 目录,注意权限问题哦~

3、接下来就可以使用浏览器访问 NextCloud 了,如下:

image.png

4、这里需要一个数据库,默认的 SQLLite 性能及其底下,还是建议整一个 MySQL,这里我直接 Docker 启一个 MySQL 了:

$ docker run -p 3306:3306 --name mysql-server -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.30

5、进入 MySQL 容器创建数据库并授权:

$ docker exec -it mysql-server bash
root@8e4b7742c58d:/# mysql -uroot -p123456
mysql> create database nextcloud charset utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on nextcloud.* to nextcloud@'%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

6、填入相应信息,点击安装完成,然后就会跳转到登录页:

image.png

image.png

输入密码点击登录就可以正常使用啦~~~

启用 HTTPS

1、准备证书文件:

$ ls /etc/nginx/conf.d/ssl/download.zze.xyz/Nginx/
1_download.zze.xyz_bundle.crt  2_download.zze.xyz.key

这里的证书文件我是从腾讯云免费申请的,将其放到指定目录,待会让 Nginx 容器映射这个目录。

2、配置代理并启用 HTTPS:

$ cat /etc/nginx/conf.d/nextcloud.conf 
server {
    listen 443 ssl;
    server_name download.zze.xyz;
#   access_log /var/log/nginx/download.zze.xyz.log main;
    access_log off;
    charset utf8;

    location / { 
        proxy_pass http://nextcloud:80;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }   

    gzip on; 
    gzip_comp_level 6;
    
    ssl_certificate /etc/nginx/conf.d/ssl/download.zze.xyz/Nginx/1_download.zze.xyz_bundle.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/download.zze.xyz/Nginx/2_download.zze.xyz.key;
}

server {
    listen 80; 
    server_name download.zze.xyz;

    access_log off;
    return 301 https://$server_name$request_uri;
}

3、允许通过 Nginx 上传大文件:

$ cat /etc/nginx/nginx.conf 
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    server_tokens off;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 512M;
    include /etc/nginx/conf.d/*.conf;
}

4、运行一个 Nginx 容器:

$ docker run -d -p 80:80 -p 443:443 -v /etc/nginx/conf.d:/etc/nginx/conf.d --link nextcloud --name nginx-proxy nginx

5、此时在浏览器使用域名访问 NextCloud 服务,会发现 HTTPS 已经应用上了,但是还需要对 NextCloud 修改一下配置:

image.png

6、修改 NextCloud 让其信任域名,:

# 找到 trusted_domains 节,在数组中加上自己的域名
$ vim /data/nextcloud/config/config.php
...
  'trusted_domains' =>
  array (
    0 => '192.168.0.27:8089',
    1 => 'download.zze.xyz',
  ),
...
# 重启容器
$ docker restart nextcloud

7、刷新浏览器,会发现可以正常使用 HTTPS 访问了:

image.png

0

评论区