需求

一直用的nextcloud做自己的网盘,虽然这个东西各种吐槽,但是已经用习惯了。原来都是用lnmp安装,但是当你发现docker这个神器之后,灵活性真的是吊打一众。所以以下记录以下docker搭建的记录。

  • nextcloud用官方的容器,功能没有太多要求
  • 习惯有phpmyadmin了,所以需要一块部署phpmyadmin,方便数据库管理
  • 缓存方面需要有redis
  • NginxProxyManager反代nextcloud的80xx端口
NginxProxyManager虽然是神器但是坑也不少。

准备域名和反代

  • 准备域名一个,比如cloud.imgi.com,并解析到服务器ip
  • NPM增加一个Porxy,ip地址需要填写ipv4,因为部署的nextcloud和NMP不在一个docker网段里
  • 增加ssl

请输入图片描述

请输入图片描述

部署nextcloud

vi docker-compose.yml编辑以下部署代码

官方有docker-compose代码,但是不如自己改的习惯
version: "3.8"

services:
  db:
    image: mysql:5.7  
    container_name: nextcloud_db
    restart: always
    volumes:
      - ./mysql/conf.d:/etc/mysql/conf.d
      - ./mysql/data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
   
  redis:
    image: redis:alpine
    container_name: nextcloud_redis
    restart: always
    expose:
      - 6379
    restart: always
  
  
  app:
    image: nextcloud
    container_name: nextcloud_app
    restart: always
    links:
      - db
      - redis
    ports:
      - 8089:80
    volumes:
      - ./nextcloud:/var/www/html  
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=nextcloud_db
      - REDIS_HOST=nextcloud_redis
      - OVERWRITEHOST=cloud.imgki.com
      - OVERWRITEPROTOCOL=https
  
  
  dbweb:
    image: phpmyadmin
    container_name: nextcloud_phpmyadmin
    restart: always
    ports: 
      - 8098:80
    links:
      - db
docker-compose up -d 启动

vmware_rJuzEUMk94.png

具体说明一下每个部分的解释,中间遇到了一些坑

容器组成

  • mysql作为数据库,如果是使用sqlite可以不用写。环境变量中MYSQL_ROOT_PASSWORDMYSQL_PASSWORD是数据库密码。
  • phpmyadmin是为了方便数据库管理
  • redis是作为nextcloud的缓存
  • nextcloud中数据库的环境变量要和上面mysql的一致,REDIS_HOST是redis的主机地址,来自于redis中的container_name设置,MYSQL_HOST是数据库的地址,也是来自于db中container_name的设置

环境变量【坑1】

刚开始docker运行发现一个问题:在登录界面一直卡主不动,需要刷新才能跳转,这是由于反代的问题,需要增加以下两个环境变量。

OVERWRITEHOST=cloud.imgki.com
OVERWRITEPROTOCOL=https

安装

之后直接登录反代的域名https://cloud.imgki.com,可以正常安装了。

请输入图片描述

配置Nextcloud

config.php配置

nextcloud的各种配置都是在config.php中完成,具体位置在挂载volume下的nextcloud/config/

  • 确认'overwrite.cli.url' => 'https://cloud.imgki.com',是否正确注意如果是开启了ssl一定要写https

image.png

S3作为主存储

不再把文件存储在VPS本地,而是存储到COS的对象存储,利用多AZ等特性做好数据备份。腾讯COS有官方插件非常方便,这个插件是直接接管根目录存储,不是作为挂载项。

插件地址:https://openapp.qq.com/docs/Nextcloud/cos.html

开启方法

  1. git clone https://github.com/Tencent-Cloud-Plugins/tencentcloud-nextcloud-cos.git
  2. 复制tencentcloud-nextcloud-cos目录中的tencentcloudcosconfig文件夹到Nextcloud安装目录/apps文件夹里面
  3. 进入nextcloud应用管理后台,启用Tencentcloud COS Config这个应用

只有在Nextclou应用中启用插件,后台配置id、key、bucket等信息就可以启用了。

vmware_imsL2u1S67.png

Last modification:January 31, 2023
如果觉得我的文章对你有用,请随意赞赏