Loading... <div class="tip share">请注意,本文编写于 640 天前,最后修改于 640 天前,其中某些信息可能已经过时。</div> # 需求 一直用的nextcloud做自己的网盘,虽然这个东西各种吐槽,但是已经用习惯了。原来都是用lnmp安装,但是当你发现docker这个神器之后,灵活性真的是吊打一众。所以以下记录以下docker搭建的记录。 - `nextcloud`用官方的容器,功能没有太多要求 - 习惯有`phpmyadmin`了,所以需要一块部署`phpmyadmin`,方便数据库管理 - 缓存方面需要有`redis` - 用`NginxProxyManager`反代nextcloud的80xx端口 > NginxProxyManager虽然是神器但是坑也不少。 # 准备域名和反代 - 准备域名一个,比如`cloud.imgi.com`,并解析到服务器ip - NPM增加一个Porxy,ip地址需要填写ipv4,因为部署的nextcloud和NMP不在一个docker网段里 - 增加ssl ![请输入图片描述](https://imgki.com/usr/uploads/2023/01/16203017.png) ![请输入图片描述](https://imgki.com/usr/uploads/2023/01/2823109711.png) # 部署nextcloud `vi docker-compose.yml`编辑以下部署代码 > 官方有docker-compose代码,但是不如自己改的习惯 ```bash 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](https://imgki.com/usr/uploads/2023/01/3581691282.png) > 具体说明一下每个部分的解释,中间遇到了一些坑 ### 容器组成 - **mysql**作为数据库,如果是使用sqlite可以不用写。环境变量中`MYSQL_ROOT_PASSWORD`和`MYSQL_PASSWORD`是数据库密码。 - **phpmyadmin**是为了方便数据库管理 - **redis**是作为nextcloud的缓存 - **nextcloud**中数据库的环境变量要和上面mysql的一致,`REDIS_HOST`是redis的主机地址,来自于redis中的`container_name`设置,`MYSQL_HOST`是数据库的地址,也是来自于db中`container_name`的设置 ### 环境变量【坑1】 <div class="tip inlineBlock warning"> 刚开始docker运行发现一个问题:在登录界面一直卡主不动,需要刷新才能跳转,这是由于反代的问题,需要增加以下两个环境变量。 </div> ```bash OVERWRITEHOST=cloud.imgki.com OVERWRITEPROTOCOL=https ``` ### 安装 之后直接登录反代的域名`https://cloud.imgki.com`,可以正常安装了。 ![请输入图片描述](https://imgki.com/usr/uploads/2023/01/3054526202.png) # 配置Nextcloud ### config.php配置 nextcloud的各种配置都是在`config.php`中完成,具体位置在挂载volume下的`nextcloud/config/` - 确认`'overwrite.cli.url' => 'https://cloud.imgki.com',`是否正确注意如果是开启了ssl一定要写https ![image.png](https://imgki.com/usr/uploads/2023/01/1152007056.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](https://imgki.com/usr/uploads/2023/01/546488132.png) Last modification:January 31, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏