用Docker搭建Nextcloud私人云盘并配置Nginx反向代理实现二级域名
前言
最近一直在折腾服务器,慢慢开始对Linux和docker熟悉起来了,想做点比较酷的事情,恰巧看到朋友圈有人在吐槽,百度网盘下载速度只有几k,不充会员就不给用了呗。
刚好前几天逛别人博客的时候看到有人搭建了自己的私有云盘,可以自己定制背景图片、Logo什么的,而且不限速,还有配套的移动、PC客户端,手机电脑随时随地都能上传下载文件,想放什么进去都可以不用担心被封,还能分享给其他人满速下载,这也太酷了。
市面上的私有云盘虽然不算多,但还是有选择的空间的,选择困难症表示最后选了一个看起来舒服的Nextcloud,这里简单介绍一下Nextcloud,Nextcloud是国外的一个开源私人网盘系统,用户可以通过Nextcloud搭建起只属于自己的云盘。一句话来说就是私人的百度网盘。
正式开始
一、使用Docker部署容器
docker pull nextcloud
docker run -d --restart=always --name nextcloud -p 8888:8888 nextcloud
执行完毕后我们就会得到一个部署在8888端口的nextcloud网盘容器。
二、修改配置文件实现反向代理
然后我们需要更新Nginx的配置文件,才Nginx的目录下的conf.d文件夹下的default.conf中添加以下代码:
server {
listen 80;
server_name 你的二级域名;
ssl_certificate "证书地址";
ssl_certificate_key "证书key地址";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://127.0.0.1:8888;
}
}
配置完成后如果我们直接访问二级域名,会发现nextcloud会报出一个nextcloud 通过不被信任的域名访问 请联系您的管理员的错误。

原因在于nextcloud自身有个配置文件,会记录允许访问的域名地址,所以我们还需要修改这个配置文件,添加我们的二级域名进去。
配置文件在nextcloud的根目录下的config文件夹下的config.php内,找到'trusted_domains'后添加:
'trusted_domains' =>
array (
0 => '127.0.0.1',
1 => 'xx.xx.com',
2 => 'www.xx.xx.com',
3 => 'www.xx.com:8888',
),
三、服务器内部错误的问题与解决
修改完毕后我们重启docker容器,如果正常的话就可以访问到属于我们自己的网盘啦,但一半还会出现这样一个错误:内部服务器错误。

通过在网上仔细观察,深入探索,结合查看报错的日志文件,最后得出结论,nextcloud所在的文件夹权限不够,导致无法读取配置文件,只要修改网盘文件夹的权限就好了:
chmod 777 nextcloud -Rf #nwxtcloud为网站目录
之后经过简单的配置安装,我们就可以登录只属于我们自己的私人网盘了。

四、附录
参考文章:
本文系作者 @小麓 原创发布在 小麓的博客。未经许可,禁止转载。