阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker安装私有云盘NextCloud过程记录

245次阅读
没有评论

共计 6805 个字符,预计需要花费 18 分钟才能阅读完成。

简介

Nextcloud 是私有云盘服务应用,由开源的 Owncloud 项目 fork 而来,其中包含部分 Owcloud 原开发人员。其中服务器端 Nextcloud 和 Owncloud 基本上是一致的(owncloud9 和 nextcloud11),所以两者的安装过程大同小异。
P.S. 个人原本使用免费版的坚果云,因为 1G 流量实在不够使用,加上以前安装过 owncloud,这次试着在服务器的 docker 上安装 nextcloud

准备工作:
  • Host 宿主机(这里是腾讯云服务器)
  • Docker 环境(+docker-compose 环境)
  • Ubuntu 16.04
过程概述:
  • Host 主机安装 Nginx
  • Host 主机配置 SSL,安装证书
  • Docker 安装 NextCloud,开放 8888 端口
  • Host 主机反向代理到 Docker 的 NextCloud
  • 测试

1、本机安装 Nginx

本内容参考:
Nginx 安装 http://www.nginx.cn/install
也可以使用 apt-get install nginx 安装,但文件结构有不同

ubuntu@VM-95-41-ubuntu:~$ uname -a
Linux VM-95-41-ubuntu 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@VM-95-41-ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:    16.04
Codename:    xenial
ubuntu@VM-95-41-ubuntu:~$
Docker 安装私有云盘 NextCloud 过程记录

图片.png
sudo apt-get update

云主机是腾讯云,Docker 我是使用阿里的 Docker 镜像安装的,所以这里两对头聚在一起了。。。

Docker 安装私有云盘 NextCloud 过程记录

图片.png
sudo apt-get install build-essential
sudo apt-get install libtool
Docker 安装私有云盘 NextCloud 过程记录

图片.png

安装

#PCRE - Perl Compatible Regular Expressions
sudo wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
sudo tar -zvxf pcre-8.40.tar.gz
cd pcre-8.40
sudo ./configure 
sudo make && sudo make install
#zlib - compression && decompression
cd /usr/local/src
sudo wget http://zlib.net/zlib-1.2.11.tar.gz
sudo tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
sudo ./configure
sudo make && sudo make install
#openssl - ssl
cd /usr/local/src
sudo wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_0e.tar.gz
sudo tar -zvxf OpenSSL_1_1_0e.tar.gz
cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.11.12.tar.gz
sudo tar -zvxf nginx-1.11.12
cd nginx-1.11.12
sudo ./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.40 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-OpenSSL_1_1_0e
sudo make && sudo make install

查看

Docker 安装私有云盘 NextCloud 过程记录

图片.png

配置

cd /usr/local/nginx
sudo vim nginx.conf

配置文件,重点①内容

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {worker_connections  1024;}

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local]"$request"''$status $body_bytes_sent "$http_referer" ''"$http_user_agent""$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;

server {
        listen 443 ssl ;
        ssl_certificate /etc/letsencrypt/live/laurt.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/laurt.com/privkey.pem;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
        server_name www.laurt.com laurt.com;
        location / {
            root   /var/www/html;
            index  index.html index.htm;
        }
}
# vhost of nextcloud with proxy ①
server {
        listen 443 ssl ;
        ssl_certificate /etc/letsencrypt/live/laurt.com/fullchain.pem; ②
        ssl_certificate_key /etc/letsencrypt/live/laurt.com/privkey.pem; ③
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
        server_name cloud.laurt.com; ④
        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://172.18.0.5:8888; ⑤
        }
}
server {
        listen 80;
        server_name www.laurt.com laurt.com;
        rewrite ^/(.*) https://laurt.com/$1 permanent;
}
}

说明

  • 证书签发的 pem 文件②和③
  • 设置域名④
  • 设置反向代理(这里应该映射到本机端口或者使用 socket,因为 docker 与宿主机是可以通信的,用了 docker container 的 ip 测试)⑤
    * 反向代理可以直接使用 127.0.0.1,这时 docker 容器需要绑定到宿主机端口
    * 反向代理可以使用 docker container 的 ip(容器桥接且暴露端口)
    * 反向代理可以使用套接字(性能应该是最好的)

启动测试

cd /usr/local/nginx
sudo ./nginx

2、SSL 签名

免费 CA 网站
https://certbot.eff.org/#ubuntutyakkety-nginx
具体请参考网站说明
另外,csr 证书有效期 90 天,需要定期续签

# ubuntu 
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot 

sudo certbot certonly --webroot -w /var/www/html -d laurt.com -d www.laurt.com -d cloud.laurt.com

注意:
-w /var/www/html 是项目路径,与配置相同,certbot 会在这个路径上创建一个.well-known 路径以便认证 CA 访问来确定网站拥有权
-d 域名,一定是可达的,否则不成功提示 dns 问题

签署成功

签署成功提示信息

签署成功后要把 fullchain.pem 文件和 privkey.pem 配置到 nginx 里(参考 nginx 配置文件的②和③)

启动测试

cd /usr/local/nginx
sudo ./nginx -s reload

3、编排 nextcloud

安装 docker-compose

参考:
docker-compose 安装地址
nextcloud 镜像地址

国内用户建议使用迅雷等工具从 github.com 下载 docker-compose

使用 compose 进行编排
version: '2'
services:
  nextcloud:
    image: wonderfall/nextcloud
    links:
      - nextcloud-db:nextcloud-db   # If using MySQL
      #- solr:solr                   # If using Nextant
      - redis:redis                 # If using Redis
    environment:
      - UID=1000
      - GID=1000
      - UPLOAD_MAX_SIZE=10G
      - APC_SHM_SIZE=128M
      - OPCACHE_MEM_SIZE=128
      - CRON_PERIOD=15m
      - TZ=Europe/Berlin
      - ADMIN_USER=admin            # Don't set to configure through browser
      - ADMIN_PASSWORD=admin        # Don't set to configure through browser
      - DOMAIN=laurt.com
      - DB_TYPE=mysql
      - DB_NAME=nextcloud
      - DB_USER=nextcloud
      - DB_PASSWORD=supersecretpassword
      - DB_HOST=nextcloud-db
    volumes:
      - /mnt/nextcloud/data:/data
      - /mnt/nextcloud/config:/config
      - /mnt/nextcloud/apps:/apps2
      - /mnt/nextcloud/themes:/nextcloud/themes
    expose:
      - 8888
#   ports:
#     - 80:8888


  # If using MySQL
  nextcloud-db:
    image: mariadb:10
    volumes:
      - /mnt/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=supersecretpassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=supersecretpassword

  # If using Nextant
  solr:
    image: solr:6-alpine
    container_name: solr
    volumes:
      - /mnt/nextcloud/solr:/opt/solr/server/solr/mycores
    entrypoint:
      - docker-entrypoint.sh
      - solr-precreate
      - nextant

  # If using Redis
  redis:
    image: redis:alpine
    container_name: redis
    volumes:
      - /mnt/nextcloud/redis:/data

这里使用作者的镜像进行的,具体细节请参考原作者的说明
https://store.docker.com/community/images/wonderfall/nextcloud
https://github.com/Wonderfall/dockerfiles/tree/master/nextcloud
需要说明的是,我 nextcloud 容器暴露了 8888 端口,并没有映射到宿主机,这时外部是无法进行访问,一般的做法是端口映射或者使用 socket

ports :
    - 80:8888

因为 docker 容器与宿主机可以通过 docker0 通信ip addr show docker0,其实宿主机是可以直接访问容器的(从宿主机到 172.17.0.1 到 172.18.0.1 到容器的 172.18.0.5),但这么做不利于部署和迁移。

运行
与 docker-compose.yml 同级目录执行

sudo docker-compose up -d
Docker 安装私有云盘 NextCloud 过程记录

使用 docker-compose 启动 nextcloud

查看

Docker 安装私有云盘 NextCloud 过程记录

安装桌面客户端
如果使用 nextcloud 的桌面 client 配置始终出错,我不确定原因出在哪?
下载地址:https://nextcloud.com/install/#install-clients

Docker 安装私有云盘 NextCloud 过程记录

因为 nextcloud 是 owncloud 的 fork 版本,所以尝试使用 owncloud 的 client 进行连接
owncloud 的 client 地址:https://owncloud.org/install/#install-clients
输入地址后输入账号密码即可连接服务器

Docker 安装私有云盘 NextCloud 过程记录

安装移动客户端
可以直接从商店下载 app,或者从源码自己构建
owncloud Android 源码:https://github.com/owncloud/android
owncloud ios 源码:https://github.com/owncloud/ios
nextcloud android 源码:https://github.com/nextcloud/android
nextcloud ios 源码:https://github.com/nextcloud/ios
移动端构建部分抽空再发上来。

参考资料

  1. Nginx 开发从入门到精通 http://tengine.taobao.org/book/
  2. Nextcloud 官方地址:https://nextcloud.com/install/#install-clients
  3. Owncloud 官方地址:https://owncloud.org/install/#install-clients
  4. docker-compose 官方参考:https://docs.docker.com/compose/

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148201.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6805字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中