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

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

486次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7981205
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...