用Docker轻松搭建Nextcloud

这几天把腾讯云轻量香港搬回了Ucloud北京,其中有个艰巨的工作就是重新搭建Nextcloud。

使用Nextcloud已经很多年了,我有大概20GB的常用工作资料存放在用Nextcloud搭建的私有云盘中。除此之外,家中NAS还会同步这个私有云盘做二次备份。

这次,在搭建之前选择了如:可道云、Cloudreve等多种网盘方案,同时还仔细研究了如OSS、COS等S3协议对象存储,最后还是无法接受没有【同步】逻辑的网盘,又考虑到其实所有数据本地电脑里都有,就老老实实用回“Nextcloud+本地盘”方案吧。

过去,一直是用常规方式搭建Nextcloud,看起来省事,实际上每次去处理【安全与设置警告】挺麻烦的。这次,尝试用Docker方式搭建,没想到特别省事,遂记录。

一、准备工作

因为这台Ucloud北京上还要跑几个站,遂先行配置LNMP环境。
虽然早前宝塔面板爆出敏感问题,但既然都用国内机器了,难道还不老实一点。

二、安装Docker

curl -sSL https://get.docker.com/ | sh 
systemctl start docker 
systemctl enable docker

三、安装Docker版MySQL与Nextcloud

1、安装Docker版MySQL

docker run -d --name mysql \
    -v 自定义数据库位置:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=密码 \
    -e MYSQL_DATABASE=数据库名 \
    -e MYSQL_USER=数据库用户名 \
    -e MYSQL_PASSWORD=数据库密码 \
    -p 自定义数据库端口:3306 \
    --restart=always \
    mysql:8.0
示例:
docker run -d --name mysql \
    -v /root/nextcloud/mysql:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=password \
    -e MYSQL_DATABASE=nextcloud \
    -e MYSQL_USER=nextcloud \
    -e MYSQL_PASSWORD=password \
    -p 3307:3306 \
    --restart=always \
    mysql:8.0

2、安装Docker版Nextcloud

docker run -d --name nextcloud \
    -v 自定义内容文件夹:/var/www/html \
    --link mysql:mysql \
    --restart=always \
    -p 自定义端口:80 nextcloud
示例:
docker run -d --name nextcloud \
    -v /root/nextcloud/data:/var/www/html \
    --link mysql:mysql \
    --restart=always \
    -p 8888:80 nextcloud

四、配置Nextcloud

可以先查看一下MySQL和Nextcloud是不是正常跑起来了。如果第三步一切顺利,就可以开始配置Nextcloud了。

docker ps -a

1、开放端口

在宝塔面板【安全】里,放行刚才设定的MySQL和Nextcloud端口。

2、配置伪静态

在宝塔面板【网站】里,新建一个网站,【伪静态】填写

rewrite /.well-known/carddav /remote.php/dav permanent;
rewrite /.well-known/caldav /remote.php/dav permanent;

3、开启SSL

常规操作。从【SSL】申请证书,并开启【强制HTTPS】。

4、配置反向代理

在新建的网站配置的【反向代理】中,【添加反向代理】。

目标URL填写:

http://127.0.0.1:Nextcloud的自定义端口号
示例:
http://127.0.0.1:8888

创建后,编辑该反向代理的【配置文件】

在【expires 12h;】之前添加

add_header Strict-Transport-Security "max-age=63072000;";

5、初始化Nextcloud

访问新建的域名,进入熟悉的初始化表单。

重要提示:

HOST栏填写:mysql

其他就照着【安装Docker版MySQL】填写的账号密码填写就行。

等待一会儿,就应该能正常进入后台了。

五、后续调整

1、调整一下Nginx和PHP关于上传的限制

此项为正常操作,可以治疗文件过大无法上传的症状。
宝塔面板【软件商店】-【Nginx管理】-【性能调整】找到【client_max_body_size】,调整到你舒服的姿势,我改成了【10240MB】,改完【服务】点【重启】。

宝塔面板【软件商店】-【PHP-7.X管理】-【配置修改】找到【post_max_size】和【upload_max_filesize】,调整到你舒服的姿势,我也够改成了【10240MB】,找到【memory_limit】改成【512M】,我记得常规安装不改会报错的,所以顺手就改了,不知道Docker版是不是也有这个讲究。改完【服务】点【重启】。

2、解决客户端无法登陆的问题

编辑【config/config.php】,在【);】之前添加:

'overwriteprotocol' => 'https'

否则,客户端无法验证登录。
【config/config.php】的位置在【安装Docker版Nextcloud】时自定义的目录里。

 

至此,Docker版的Nextcloud就能正常使用了!!

补充:

再Docker安装个PMA方便管理MySQL

docker run -d \
    --name pma \
    --link mysql:db \
    -p 自定义端口:80 \
    phpmyadmin/phpmyadmin
示例:
docker run -d \
    --name pma \
    --link mysql:db \
    -p 3388:80 \
    phpmyadmin/phpmyadmin

 

Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments