需求
一直用的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 启动
具体说明一下每个部分的解释,中间遇到了一些坑
容器组成
- mysql作为数据库,如果是使用sqlite可以不用写。环境变量中
MYSQL_ROOT_PASSWORD
和MYSQL_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
S3作为主存储
不再把文件存储在VPS本地,而是存储到COS的对象存储,利用多AZ等特性做好数据备份。腾讯COS有官方插件非常方便,这个插件是直接接管根目录存储,不是作为挂载项。
插件地址:https://openapp.qq.com/docs/Nextcloud/cos.html
开启方法
- git clone https://github.com/Tencent-Cloud-Plugins/tencentcloud-nextcloud-cos.git
- 复制tencentcloud-nextcloud-cos目录中的tencentcloudcosconfig文件夹到Nextcloud安装目录/apps文件夹里面
- 进入nextcloud应用管理后台,启用Tencentcloud COS Config这个应用
只有在Nextclou应用中启用插件,后台配置id、key、bucket等信息就可以启用了。