Contents
1. Nextcloud简介
1.1 Nextcloud是什么
- Nextcloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放源代码软件,每个人都可以在私人服务器上安装并运行它。
-
与Dropbox等专有服务相比,Nextcloud的开放架构让用户可以利用应用程序的方式在服务器上新增额外的功能,并让用户可以完全掌控自己的数据。
1.2 优势与不足
-
优势:高速(直链下载速度起飞,与服务器带宽有关);私密(自己全权管理所有文件);稳定(不存在服务商关闭网盘服务的问题);实现了PC、iPhone、iPad三端自动同步;可以直接编辑云端的文件(代码文件也直接查看编辑);
-
不足:云盘需要自己维护(出现各种问题就很糟心);服务器的硬盘容量通常不大(多为几十G,不适合做仓库盘)
2. Nextcloud搭建步骤
2.1 准备工作
[1] 买VPS并使用Xshell通过ssh远程连接
- 推荐的国外VPS服务商:Bandwagon host
-
服务器的带宽不要太低,不然用起来糟心,存储容量够用即可(建议购买国外的,带宽通常为1Gigabit)
[2] 利用Speedtest测试服务器到国内的速度
一键脚本:
1 |
wget https://raw.githubusercontent.com/oooldking/script/master/superspeed.sh && chmod +x superspeed.sh && ./superspeed.sh |
测速效果:
说明:
- 被测速服务器的带宽是1Gigabit,即理论速度125MB/s,实际有一定的损耗,故测试结果如此。
- 至于我的NextCloud实际下载速度只有12MB/S,是受本地网速的制约(受宽带、光纤、路由器等多个因素影响)
2.2 安装宝塔面板
以下以我所使用过的Debian9和Centos7为例,其余发行版的安装方式参见:宝塔Linux面板安装教程
Debian 9:
1 |
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh |
Centos 7:
1 |
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh |
最后得到了宝塔面板的登陆信息,将其保存下来
1 2 3 |
Bt-Panel: http://IP/******** username: ******** password: ******** |
2.3 安装网站环境
1)使用刚刚获得到的信息,浏览器访问你的后台,登陆宝塔面板,首次登陆宝塔面板后台,会弹出一键安装环境
- 选择LNMP环境,节省资源
- 调整Mysql和PHP版本(Mysql5.5,PHP 7.1)
- 安装方式选择为编译安装
2)新建站点
网站——添加网站——提交(这里面的密码记不记无所谓,可以随时查看)
备注:如果没有域名的话可以编一个,用IP访问(需要设置默认站点,否则会出现404错误)
网站——默认站点——选择自己的域名——提交
2.4 安装Nextcloud
1)上传Nextcloud程序
1 2 3 4 5 6 7 |
#Step1:进入站点根目录,自行修改路径 cd /www/wwwroot/域名 #Step2:下载最新版程序,将链接换成最新版的下载地址 wget https://download.nextcloud.com/server/releases/nextcloud-17.0.0.zip #Step3:解压并移动到根目录 unzip nextcloud-*.zip && rm -rf nextcloud-*.zip index.html mv nextcloud/* . && rm -rf nextcloud |
由于以上方法下载速度过慢,提供替代方案如下:
- Step1:使用IDM到Nextcloud官网下载Nextcloud程序到本地
-
Step2:宝塔面板——文件—— /www/wwwroot/域名目录——上传nextcloud-17.0.0.zip
-
Step3:到Xshell里先 cd /www/wwwroot/域名,之后输入解压并移动到根目录的两条命令
2)登录Nextcloud
在网址上输入: http://IP
初次登录:用户名填数据库名,密码填数据库密码(可在“宝塔面板-数据库”处查看,此密码可在 Nextcloud——设置——安全处更改)
备注:如果出现了以下问题,进入宝塔面板把整个网站的权限改为775即可(原先为755)
2.5 伪静态设置
网站——设置——伪静态——添加以下代码——保存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
location / { rewrite ^ /index.php$request_uri; } location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { deny all; } location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { try_files $uri/ =404; index index.php; } location ~ \.(?:css|js|woff2?|svg|gif|map)$ { try_files $uri /index.php$request_uri; add_header Cache-Control "public, max-age=15778463"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$request_uri; access_log off; } |
2.6 使用域名访问
NameSilo域名解析:
[1] 打开NameSilo官网,依次完成下图所示的三步操作
[2] 修改如下:
[3] 一般十分钟左右 DNS 解析记录会生效(可以直接在cmd里ping域名验证是否解析成功)
网站绑定域名:
宝塔Linux面板——网站——设置——域名管理——添加域名
更改Nextcloud的设置:
宝塔Linux面板——文件,找到 /www/wwwroot/网站名/config路径——修改 config.php(在 trusted_domains处添加已解析的域名)
1 2 3 4 5 |
'trusted_domains' => array ( '服务器IP地址', '已解析的域名', ), |
完成以上配置便可使用域名访问Nextcloud了。
3. Nextcloud使用指南
3.1 客户端基本使用
1)全平台客户端下载:官网传送门
2)客户端的使用和配置
- 网页端:http://IP
- 桌面端:网页端授权登录,安装 Nextcloud-2.6.0-setup.exe后设置开机自启、文件夹同步
- iOS、iPadOS端:App Store搜索下载 Nextcloud【点击下面的“改用旧的登录方式”,输入服务器地址、用户名、密码】
3)Nextcloud成品
3.2 解决大文件上传问题
1)修改php.ini上传文件大小限制
Xshell连接VPS,修改 nano /etc/php.ini的内容如下:
1 2 3 |
max_execution_time = 0 #默认是30秒,改为0,表示没有上传时间限制 post_max_size = 10800M #设定POST数据所允许的最大大小 upload_max_filesize = 10240M #表示所上传的文件的最大大小 |
2)修改nginx.conf的文件大小限制
在宝塔面板的“文件”处找到 /www/server/nginx/conf/nginx.conf,修改的内容如下:
1 |
client_max_body_size 10240M; |
说明:也可以在宝塔面板首页的“软件”处直接修改nginx配置文件
3)重启php和nginx服务,然后进行测试,大文件可以成功上传了
3.3 解决同步时423错误的问题
问题描述:使用Nextcloud同步资料时,意外遇到了423错误,文件被锁定,怎么都传不上去。
解决办法:在nextcloud的config目录下找到config.php文件,添加一句 'filelocking.enabled' => false,即可
4. 搭建DirectoryLister下载站
4.1 项目简介
- 为什么搭建:我的Nextcloud私有云盘搭建之初就是为了给自己用,不想用它来长期分享资源。Github上有一个名为DirectoryLister的项目,可以用它作为自己的资源下载站点,分享一些公用的软件和工具。
-
功能:一个简单易用的PHP目录列表器,可作为资源下载站。
-
效果演示:本网站的BlackCatのToolbox即是由此搭建而成。
-
历史版本及变更日志:DirectoryLister_Github releases
4.2 项目部署
部署:
[1] 去Download Directory Lister 2.7.1下载压缩包并解压(不建议下载新版)
[2] 将解压后的文件夹上传到VPS的域名根目录
[3] 将 resources/default.config.php重命名为 resources/config.php后即部署完成
说明:
1)解压后的文件夹内仅有 resources文件夹和 index.php有用,其余的可自行删除。
2)该文件夹名即为访问路径,建议重命名为简单易用的。
3)目录列表器中:html文件是直接打开,其他文件是直接下载。
4.3 使用方法
- 访问路径: https://域名/文件夹名/
- 文件管理:将欲显示的文件目录上传到那个文件夹内即可(可借助于 宝塔面板进行上传和文件管理操作)
- 主题魔改:修改 DirectoryLister\resources\themes\bootstrap内的文件即可,自行发挥吧。
5. 搭建calibre-web私有书库
5.1 项目简介
- 功能:Web应用程序,用于浏览,阅读和下载Calibre数据库中存储的电子书。
-
项目地址:calibre-web_Github
-
效果演示:私用,不对外提供体验账号
5.2 安装Docker
在Debian9服务器安装Docker(其他发行版如何安装Docker自行查找)
[1] 设置存储库
Step1:安装sudo命令
1 |
$ apt install sudo -y |
Step2:更新apt包索引
1 |
$ sudo apt-get update |
Step3:安装包以允许apt通过HTTPS使用存储库
1 2 3 4 5 6 |
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common |
Step4:添加Docker的官方GPG密钥:
1 |
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - |
Step5:验证您现在拥有带指纹的密钥
1 |
$ sudo apt-key fingerprint 0EBFCD88 |
Step6: 添加源
1 2 3 4 |
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" |
[2] 安装DOCKER CE
1 2 |
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io |
[3] 验证
Step1:启动docker(如果没有启动)
1 |
$ sudo systemctl start docker |
Step2:查看版本
1 |
$ sudo docker --version |
[4] 管理Docker
- 为了方便管理Docker及部署在Docker里的项目,可从宝塔面板里下载一个“Docker管理器”。
5.3 安装Calibre-Web for Docker
[1] 创建Calibre-Web映射文件
先创建文件夹 calibre-web 在其中创建 app 、 books 、 kindlegen 、 config
1 2 3 |
$ cd /usr/local //切换目录 $ mkdir calibre-web && mkdir calibre-web/app calibre-web/books calibre-web/kindlegen calibre-web/config //创建目录 $ ls -l //查看是否创建成功 |
说明:这几个文件是用来存放Calibre-Web的文件的
[2] 拉取Calibre-web镜像并创建容器
1 |
$ docker create --name=calibre-web --restart=always -v /usr/local/calibre-web/books:/books -v /usr/local/calibre-web/app:/calibre-web/app -v /usr/local/calibre-web/kindlegen:/calibre-web/kindlegen -v /usr/local/calibre-web/config:/calibre-web/config -e USE_CONFIG_DIR=true -e SET_CONTAINER_TIMEZONE=true -e CONTAINER_TIMEZONE=Asia/Shanghai -e PGID=0 -e PUID=0 -p 8083:8083 technosoft2000/calibre-web |
以上是我使用到的参数,如需要配置其他参数可参考官方给出的参数合理增删,上面的命令解释如下:
1 2 3 4 5 6 7 8 9 10 |
--name=calibre-web #指定容器名称 --restart=always #让容器自动重启 #本地的目录与docker容器进行映射 -v /usr/local/calibre-web/books:/books -v /usr/local/calibre-web/app:/calibre-web/app -v /usr/local/calibre-web/kindlegen:/calibre-web/kindlegen -v /usr/local/calibre-web/config:/calibre-web/config -p 8083:8083 端口映射 |
注意:要开启主机映射的端口,否则用不了(宝塔面板——安全——放行8083端口)
[3] 启动Calibre-web容器
1 |
$ docker start calibre-web |
其他扩展命令
1 2 3 4 |
docker stop calibre-web #停止 docker restart calibre-web #重启 docker logs -f calibre-web #启动日志 docker rm calibre-web #删除容器 |
[4] 安装完成后Calibre-web初始化配置
安装后,输入 http://IP:8083会进入配置页面,第一项书库配置下的Calibre数据库位置填成 /books ,然后点击提交即可。
默认用户账号为 admin,密码为 admin123,登录进去后请及时修改密码
5.4 设置反向代理用域名访问
[1] 域名解析并新建站点
- 前文已经提到了,此处不再赘述。
[2] 配置https
- 缘由:Chrome一直在推动https网站,所有的http协议网站被标记为不安全,如果再不对网站进行https改造的话,那么可能会对信任度造成一定的影响,所以说对一个面向用户的网站来说,开启https是非常有必要的。
-
操作步骤:
1)宝塔Linux面板——网站——设置——SSL——选择 Let’s Encrypt,输入邮箱,并在两个域名前边打钩,确认没问题后点击申请
2)稍等一下就会看到开启成功,勾选强制https(这样即使有用户访问http网页也会自动跳转到https格式)
[3] 设置反向代理
完成以上配置便可使用域名访问该私有书库了。
5.5 基本设置
[1] 更改语言为简体中文
[2] 开启图书上传功能
在【管理权限】中开启图书上传功能
[3] Calibre-web主题更改
个人认为默认的主题没有黑色主题酷,可以自行选择更改。
6. 参考资料
[1] 使用NextCloud搭建私有网盘、并结合Redis优化性能
[2] VPS 完美搭建 Nextcloud 私有云盘图文教程
[3] SuperSpeed.sh 一键测试服务器到国内的速度
[4] 解决NextCloud文件太大无法上传的问题 from 伍文龙的小木屋
[5] 在宝塔控制面板已经成功安装nginx,但是在根目录没有 from 宝塔
[6] NextCloud 解决 OCP\Lock\LockedException: “files/ 官方永久解决方案 from 心中有梦
It’s going to be end of mine day, except before end I am reading this wonderful article to increase my knowledge