1. 介绍

官方列举的特点

  • Nextcloud 让您的数据触手可及,尽在您的掌控之中。将您的文档、日历、联系人和照片存储在家里的服务器、我们的供应商之一或您信任的数据中心。
  • Nextcloud 仪表板是您一天的起点,为您提供即将到来的约会、紧急电子邮件、聊天消息、收到的票证、最新推文等等的概览!用户可以设置他们的状态,以便其他人知道他们在做什么。
  • 简单的 Web 界面允许您与服务器上的其他用户共享文件,创建和发送受密码保护的公共链接,让其他人将文件上传到您的云,并在另一个云服务器上的用户共享时在您的手机和桌面上获得通知文件直接与你。您也可以从桌面或移动客户端执行所有这些操作。
  • 运行您自己的服务器需要工作,但 Nextcloud 可以尽可能轻松地为您和您的家人运行可靠、安全的服务。我们在设置屏幕中为您提供提示和建议,警告您更新并让您在 Web 界面中单击几下即可运行更新,提供 Web 安装程序和超级易于管理的 Snap 和 VM 映像等等。
  • 高效、易于使用的界面是 Nextcloud 在竞争中脱颖而出的主要因素之一。设计不仅仅是漂亮。目标是让用户以最少的努力完成工作,使如何完成任务变得一目了然,并减少了完成任务所需的步骤数。良好的设计可以在整个用户界面中看到,每个版本都会向前迈进。
  • 适用于 Android、iOS 和桌面系统的免费 Nextcloud 客户端允许您通过加密连接以完全安全的方式同步和共享文件。移动客户端具有自动上传您拍摄的照片和视频的功能,并且可以同步选择的文件和文件夹。客户端可以处理多个帐户,显示您服务器上发生的所有活动,并通知您新事件,例如新共享的可用性。
  • 等等…

总结一下就是美观,方便,安全,多平台,扩展性强

常用地址

官网:https://nextcloud.com/

Github:https://github.com/nextcloud

官方DockerHub:https://hub.docker.com/_/nextcloud/

本次使用的镜像仓库:https://hub.docker.com/r/crazymax/nextcloud

image-20220618190252201

2. 安装

1. 镜像简介

本次使用的NextCloud并不是官方仓库镜像

使用的是由crazy-max大佬制作的NextCloud镜像

2. 安装

创建文件夹

mkdir -p /root/data/docker_data/nextcloud

cd /root/data/docker_data/nextcloud

下载docker-compose和env环境文件

wget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/docker-compose.yml
wget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/.env
wget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/msmtpd.env
wget https://raw.githubusercontent.com/DDSRem/nextcloud-docker-compose/main/crazymax/nextcloud.env

所有文件都是开源的,可以去我的Github查看,也可以自行修改

下载完成会出现4个文件,分别是docker-compose.yml .env msmtpd.env nextcloud.env

docker-compose.yml

version: "3.2"

services:
## mariadb数据库
  db:                                        
    image: mariadb:10.5
    container_name: nextcloud_db
    volumes:
      - "./db:/var/lib/mysql"
    environment:
      - "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
      - "MYSQL_DATABASE"
      - "MYSQL_USER"
      - "MYSQL_PASSWORD"
    restart: always
## redis缓存数据库
  redis:
    image: redis:6-alpine
    container_name: nextcloud_redis
    volumes:
      - "./redis:/data"
    environment:
      - "TZ"
    restart: always
    command: redis-server --requirepass 'nextcloud'
    expose:
     - "6379"
## msmtpd邮件服务
  msmtpd:
    image: crazymax/msmtpd:latest
    container_name: nextcloud_msmtpd
    env_file:
      - "./msmtpd.env"
    environment:
      - "TZ"
    restart: always
## nextcloud主体
  nextcloud:
    image: crazymax/nextcloud:latest
    container_name: nextcloud
    depends_on:
      - db
      - redis
      - msmtpd
    ports:
      - target: 8000
        published: 8000
        protocol: tcp
    volumes:
      - "./nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
    restart: always
## cron模式运行
  cron:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_cron
    depends_on:
      - nextcloud
    volumes:
      - "./nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_CRON=1"
      - "CRON_PERIOD=*/5 * * * *"
    restart: always
## 预览生成器
  previewgen:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_previewgen
    depends_on:
      - nextcloud
    volumes:
      - "./nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_PREVIEWGEN=1"
      - "PREVIEWGEN_PERIOD=0 * * * *"
    restart: always
## 更新服务
  news_updater:
    image: crazymax/nextcloud:latest
    container_name: nextcloud_news_updater
    depends_on:
      - nextcloud
    volumes:
      - "./nextcloud:/data"
    env_file:
      - "./nextcloud.env"
    environment:
      - "TZ"
      - "PUID"
      - "PGID"
      - "DB_TYPE=mysql"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "SIDECAR_NEWSUPDATER=1"
      - "NC_NEWSUPDATER_THREADS=10"
      - "NC_NEWSUPDATER_TIMEOUT=300"
      - "NC_NEWSUPDATER_INTERVAL=900"
      - "NC_NEWSUPDATER_LOGLEVEL=error"
    restart: always

#volumes:
#  db:
#  nextcloud:

.env

# 默认环境变量设置

TZ=Asia/Shanghai
PUID=1000
PGID=1000

MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=nextcloud

msmtpd.env

# https://github.com/crazy-max/docker-msmtpd

# SMPT服务器设置

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_TLS=on
SMTP_STARTTLS=on
SMTP_TLS_CHECKCERT=on
SMTP_AUTH=on
SMTP_USER=foo
SMTP_PASSWORD=bar
SMTP_FROM=foo@gmail.com

nextcloud.env

# nextcloud环境变量设置

MEMORY_LIMIT=512M
UPLOAD_MAX_SIZE=512M
OPCACHE_MEM_SIZE=128
APC_SHM_SIZE=128M
REAL_IP_FROM=0.0.0.0/32
REAL_IP_HEADER=X-Forwarded-For
LOG_IP_VAR=remote_addr

HSTS_HEADER=max-age=15768000; includeSubDomains
RP_HEADER=strict-origin
SUBDIR=

设置完成就可以启动了

docker-compose up -d

3. 简单配置和解决问题

1. 初始化

设置用户名密码

image-20220618191716988

安装推荐应用

image-20220618191824244

2. 解决问题

进入概览会发现有这些问题

image-20220618192005115

解决你还没有设置或验证你的电子邮件服务器配置。请前往基本设置,以便进行设置。之后,使用表单下方的 "发送电子邮件 "按钮来验证您的设置问题

cd /root/data/docker_data/nextcloud/nextcloud/config

nano config.php

在倒数第二行添加这条

'default_phone_region' => 'CN',

image-20220618192416834

再次刷新,发现解决了

image-20220618192501080

解决你还没有设置或验证你的电子邮件服务器配置。请前往基本设置,以便进行设置。之后,使用表单下方的 "发送电子邮件 "按钮来验证您的设置问题

进入设置-管理-基本设置

image-20220618192644700

添加自己的SMPT服务就可以解决了

解决**通过 HTTP 不安全访问站点。强烈建议你将服务器设置为要求 HTTPS,参考步骤见 安全小贴士 ↗**问题

自己配置SSL

配置完成后会遇见这个问题

image-20220618194219227

cd /root/data/docker_data/nextcloud/nextcloud/config

nano config.php

加入

1 => 'nextcloud.rcbczd.ga',

nextcloud.rcbczd.ga改为你的域名

image-20220618194715760

更改'overwrite.cli.url' => 'xxxxxxxx',

  'overwrite.cli.url' => 'https://xxxx.xxxx.xxxx',  
  'overwriteprotocol' => 'https',

https://xxxx.xxxx.xxxx为你的域名

image-20220619144842278

全部解决

image-20220619145102639

3. 配置

解决完成问题后我们开始配置

基本设置 选择Cron

image-20220619144243347

配置redis

修改config.php

//  'memcache.local' => '\\OC\\Memcache\\APCu',         //注释这一行,默认是没有注释的
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => array(
    'host' => 'redis',
    'port' => 6379,
    'password' => 'nextcloud'
  ),
  'filelocking.enabled' => 'true',

docker-compose restart重启

4. 安装OnlyOffice(自选,非必要)

安装OnlyOffice连接器

选择应用

image-20220618195608554

搜索OnlyOffice

image-20220618195716591

下载并启用

image-20220618195753169

安装documentserver_community

wget https://github.com/nextcloud/documentserver_community/releases/download/v0.1.12/documentserver_community.tar.gz -P /root/data/docker_data/nextcloud/nextcloud/userapps

tar -zxvf /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community.tar.gz -C /root/data/docker_data/nextcloud/nextcloud/userapps

rm -rf /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community.tar.gz

chown -R 1000:1000 /root/data/docker_data/nextcloud/nextcloud/userapps/documentserver_community

选择启用

image-20220618200127321

再次启用

image-20220618200154034

完成

image-20220618200224005

来到OnlyOffice,发现地址已经自动填写

image-20220618200314875

可以正常使用了