原文链接:ECHK1NG’s 学习之路

近些年来各路网盘纷纷退市,只有为数不多的网盘还在死死坚持,例如百度网盘。
NextCloud逐渐进入了人们的视野。


这几天搭建网盘的过程,遇到了许多问题,最后总算是解决掉,结束折磨辽,为了方便大家能够顺利完成自己的网盘搭建,所以我写下了这篇博客。
阅读完本文你可以自己亲手搭建一个256T的个人云盘,如果有不懂的地方,可以通过网站联系方式联系我。

  • Nextcloud是德国Nextcloud公司的一套开源的自托管文件同步和共享的通信应用平台。而NextCloud的创始人是ownCloud联合创始人Frank Karlitschek,16年他离开了原公司,成立了NextCloud。
  • 可以看出NextCloud与ownCloud两者十分相像。
  • 两者最大的区别涉及用户界面和企业许可协议。
  • NextCloud有更强大的社区支持,且开源;为所有用户提供企业级安全。

安装

NextCloud需要在Nginx(或Apache),MySQL,PHP环境下运行,建议使用Linux系统

一、选购服务器

建议选购香港服务器,离大陆近,而且也不需要备案,阿里云香港轻量型服务器在我看来最为合适,因为轻量型服务器外网带宽大于同价位ESC(轻量型服务器每个月有流量限制,但很充足),实测网盘搭建好后下载速度在6MB/s以上甚至更快。
选购这一部分就不多加赘述了,十分简单,注意选择Linux系统(Centos,ubuntu)就行了

二、安装宝塔面板(对后续安装配置很方便)

Centos安装指令

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

ubuntu安装指令

curl -sSO http://download.bt.cn/install/install_panel.sh && bash install_panel.sh

安装完成后,会显示外网登录地址,账号密码。
接着不要急着登录宝塔面板,需要先在服务器控制台的防火墙页面打开8888端口,否则无法打开宝塔面板。
进入后台,安装LNMP环境(或者LAMP环境),本文使用的是LNMP环境。

三、挂载阿里云OSS

为什么要在nextcloud安装之前挂载OSS?

  • 如果在nextcloud安装完成后再移动数据库非常麻烦,这也是我踩的坑之一。
  • 用过nextcloud的人可能会说nextcloud有一个内置应用可以添加外部存储,叫External storage support,可以在拥有服务器存储的条件下,直接添加一个外部存储空间。但是,这也是我踩的一个坑。当你的云盘有多个用户的时候,用这个添加的外部存储,所有人上传的文件其他人都能看到,相当于你将阿里云OSS变成了一个256T的共享文件夹,也不能对用户设置配额(除非你自己一个人用)。
  • 提前挂载阿里云OSS,再nextcloud安装时就能直接选择OSS作为数据盘,非常方便。

创建bucket

在阿里云OSS管理控制台页面,点击创建Bucket

最好选择与你服务器相同地域的Bucket,这样服务器到OSS的数据传输只需要使用内网,内网流量完全免费,而外网流量需要收费,0:00-8:00为0.25元/GB,8:00-24:00为0.5元/GB
具体配置可参考下图

四、创建AccessKey


云账号 AccessKey 是您访问阿里云 API 的密钥,具有账户的完全权限,请您务必妥善保管!不要以任何方式公开 AccessKey 到外部渠道(例如 Github),避免被他人利用造成 安全威胁。强烈建议您遵循 阿里云安全最佳实践,使用 RAM 用户(而不是云账号)的 AccessKey 进行 API 调用。
一定要妥善保存自己AccessKey

五、将OSS挂载到服务器

这一步我踩的坑最多,下面的内容都是我本人总结出来的,如果有问题大家可以参照网络上的教程多多测试或者向我提问。

1.获取Bucket 域名

点击刚刚创建的Bucket,按下图所示

2.在宝塔控制面板新建网站,在网站根目录创建cloud/ossfs
3.安装ossfs

需要先选取所需插件的版本
使用命令下载即可
GITHUB地址

以下载CentOS 7.0 (x64)版本为例:

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm

安装命令
Ubuntu系统
以Ubuntu 16.04 (x64)版本为例,安装命令如下:

    sudo apt-get updatesudo apt-get install gdebi-coresudo gdebi ossfs_1.80.6_ubuntu16.04_amd64.deb
CentOS系统
以CentOS 7.0(x64)版本为例,安装命令如下:
    sudo yum install ossfs_1.80.6_centos7.0_x86_64.rpm
  • ossfs_1.80.5_centos6.5_x86_64.rpm1.55 MB
  • ossfs_1.80.5_centos7.0_x86_64.rpm1.12 MB
  • ossfs_1.80.5_ubuntu14.04_amd64.deb1.18 MB
  • ossfs_1.80.5_ubuntu16.04_amd64.deb1.27 MB
  • Source code (zip)
  • Source code (tar.gz)

然后使用SSH远程连接服务器,依次输入以下命令
对于Ubuntu系统,安装命令是:

sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi your_ossfs_package

对于CentOS6.5或更高版本,安装命令是:

sudo yum localinstall your_ossfs_package

对于CentOS 5,安装命令是:

sudo yum localinstall your_ossfs_package --nogpgcheck

这个your_ossfs_package就是你选择的插件版本
例如我的命令为:sudo yum localinstall ossfs_1.80.5_centos7.0_x86_64.rpm

4.将自己的AccessKey保存到服务器
echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
  • my-bucket:创建的bucket的名称
5.挂载OSS

我将oss挂载到了网站根目录,所以在网站根目录下创建cloud/ossfs,当然你也可以挂载到其他盘中。
接下来是关键步骤
使用ssh连接到服务器,输入如下指令

id www


可以看出我这里的www用户id为1001

例如bucket名称为cunchu,挂载地址为/www/wwwroot/example.com/ossfs,bucket的Endpoint(地域节点)为oss-cn-hongkong-internal.aliyuncs.com(因为我的服务器跟oss在一个地区,所以我直接填内网地址就可以了)
具体命令为

ossfs cunchu /www/wwwroot/example.com/ossfs -o url=oss-cn-hongkong-internal.aliyuncs.com -o nonempty  -ouid=1001 -ogid=1001  -oumask=007 -o allow_other

若挂载后提示
InvalidBucketName
原因是在挂载时,错误的使用了Buket域名,而不是Endpoint(地域节点),更换一下重新执行命令即可。

解除挂载命令
不想挂载在此位置再使用

fusermount -u /挂载的目录

tips:如果不设置ouid和ogid,nextcloud将无法访问oss。
挂载完成后,在宝塔页面可以看到挂载的OSS

挂载完成后,最好将挂载命令加入到服务器启动项中,避免每次重启都需要手动挂载。

6.安装Nextcloud

在官网上下载Nextcloud安装包,上传到网站根目录,解压,通过浏览器输入你的网站域名进入安装。
在安装页面的数据目录位置填入OSS的挂载位置
若提示您的数据目录可被其他用户读取 请更改权限为 0770 以避免其他用户查看目录
请在example/config/config.php中添加以下代码(不用担心下一步会解决访问权限问题)

'check_data_directory_permissions' => false
7.安装完成后还需要通过网站配置文件设置禁止访问目录(本条仅限于将OSS挂载到根目录的用户)

在宝塔页面点击网站,点击设置,在配置文件中添加如下代码。

data是多余的(我的nextcloud存储位置不为data,所以其实我可以删掉这个。)

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|cloud)/ {deny all;
}

代码中的“build|tests|config|lib|3rdparty|templates|data”就是禁止访问的目录,data是nextcloud默认的存储数据的位置,如果你直接将OSS作为nextcloud存储数据的位置,在上方将data更换为根目录(非下一级目录)中挂载OSS的位置,如果你最开始跟我的步骤一致,直接复制粘贴上方代码即可,无需更改。

六、大功告成

Nextcloud更多的使用技巧可能我以后会再发布,敬请期待。

七、NextCloud常见问题解决(慢慢添加)

无法删除文件,提示文件被锁定:

{"reqId":"0DijSqEkfOg2iyh9VD8J","remoteAddr":"xx.xx.xx.xx","app":"webdav","message":"Exception: {\"Message\":\"HTTP\\\/1.1 423 \\\"path\\\/file.extension\\\" is locked\",\"Exception\":\"OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Exception\\\\FileLocked\",\"Code\":0,\"Trace\":\"#0

手动禁用锁定状态:

  • 将NextCloud置于维护模式:编辑config/config.php并更改这一行:
    'maintenance' => true,
  • 修改字段oc_file_locks::使用phpmyadmin之类的工具,或者直接连接到数据库并运行(默认的表前缀是oc_):
    DELETE FROM oc_file_locks WHERE 1
  • 关闭维护模式。
  • 确保您的cron作业正常运行(您的管理页面告诉您cron上次运行的时间):Https://docs.nextcloud.org/server/13/admin_manual/configuration_server/background_jobs_configuration.html

永久解决(如果经常发生)

  • 你的自己的服务器::此功能使用redis。它的速度更快,到目前为止还没有出现任何问题。您可以按照文档中的内存缓存说明:Https://docs.nextcloud.org/server/13/admin_manual/configuration_server/caching_configuration.html#id4
  • 共享托管(其他无法安装redis的人):您可以禁用文件锁定,编辑配置文件config/config.php:
    'filelocking.enabled' => false,
    然而,禁用不是一个好的解决方案。当几个进程试图写入文件时(特别是web界面中的在线编辑器),您可能会遇到问题。在单用户和单客户环境中,这可能不是什么问题。
    NextCloud原文链接

NextCloud+阿里云OSS 搭建属于自己的私人网盘相关推荐

  1. 【报错记录】阿里云OSS搭建图床 访问报错

    使用阿里云OSS搭建图床后,在Typora中自动上传图片后,却无法显示图片,在浏览器中打开链接报错: <Error> <Code>NoSuchKey</Code> ...

  2. 阿里云oss搭建图床以及使用PicGO上传图片到图床

    阿里云oss搭建图床以及使用PicGO上传图片到图床 最近喜欢上了使用markdown来写博客,可是markdown的图片却是本地的,如果我要发博客到GitHub上,那么就不行了,GitHub上是不能 ...

  3. MarkText + iPic + 阿里云Oss 搭建markdown文档写作

    MarkText + iPic + 阿里云Oss 搭建markdown文档写作 本文记录如何下载配置MarkText编辑器以及如何使用iPic+阿里云的对象存储搭建一个markdown的图床 下载安装 ...

  4. 推荐几款云服务器上搭建属于自己的私人网盘

    推荐几款云服务器上搭建属于自己的私人网盘 可道云 https://kodcloud.com/ nextcloud https://nextcloud.com/ filebrowser https:// ...

  5. 使用腾讯云服务器搭建离线(中转)网盘

    使用腾讯云服务器搭建离线(中转)网盘 本文中,使用Aria2实现离线下载,使用Rclone实现上传.应当说,Aria2+Rclone是一个很好的组合.其中,Aria2是一款非常好用的命令行下载工具.当 ...

  6. gitee图床用不了,阿里云OSS搭建图床(非常详细)

    文章目录 1. 购买阿里云oss对象存储服务 2. 新建OSS Bucket 3. 配置OSS资源访问域名 4. 配置picGO 4. 将gitee图床图片迁移到OSS中 最近,打开自己的markdo ...

  7. 阿里云OSS搭建图床

    在写markdown文档的时候,经常会想要插入一些图片来让文章变的尽可能的图文并茂,但是如果是托管到GitHub上的话,图片又不是太好处理,所以就有了今天的这篇文章. 搭建自己的图床的好处 再网上你可 ...

  8. 再见xx网盘!4 行命令搭建属于你的私人网盘!

    在之前的文章中,我分享了如何利用一台云服务器配置远程Jupyter Notebook. 最后我也提到,拥有一台服务器之后能做的绝不止这一个功能. 另一个常见的个人服务器用处就是用来搭建一个私人网盘.本 ...

  9. 阿里云OSS搭建移动应用直传服务的.Net C#示例

    OSS好几个都没有.Net示例,只有SDK 于是我就拿Java改成C#代码:使用前先去Nuget包管理器下载Aliyun.Acs.Core还有Aliyun.Acs.Sts: 在安装这个两个包的时候安装 ...

最新文章

  1. Suricata的输出
  2. pageX、clientX、screenX、offsetX、layerX、x
  3. Java 反射 使用总结
  4. 基于LZ77算法的文件解压缩项目缺陷分析
  5. 10个你应该了解的Git命令(以及Git省时小窍门)
  6. oracle中的fetchsize,oracle setFetchsize() 优化查询速度
  7. 从 Chrome 谈到 Adobe
  8. 利用互斥对象实现线程同步的实例说明
  9. mysql多条件顺序_mysql顺序由多个条件
  10. 中国天气预报网接口及城市代码
  11. 51nod 1534棋子游戏(分析)
  12. PyTorch安装及试用 基于Anaconda3
  13. android调色器 源代码,Android 上的调色板 —— Palette
  14. 酷站60个漂亮可用的外文站点欣赏(经典推荐)
  15. 甘孜州2021高考 康定中学宴冬梅成绩查询,最新2021甘孜州高中排名
  16. 哪个品牌台灯护眼效果好?分享被央视315表扬的护眼灯
  17. Photoshop设计精讲精练(读书笔记)
  18. 手机本地文档文件不能扫描出来的问题
  19. linux常用运维shell,常用的shell命令,持续更新 | linux运维小站–linux系统架构_服务器运维_Linux运维工程师工作手札...
  20. 华为鸿蒙内存机制,华为鸿蒙系统对内存有要求吗?

热门文章

  1. 【Unity3D读取数据】(四)Excel文件操作(创建、读取、写入、修改)
  2. 分享清新唯美浪漫中秋PPT模板
  3. 关于微信小程序的坑uploadFile:fail Error: unable to verify the first certificate
  4. 51nod1446 Kirchhoff矩阵+Gauss消元+容斥+折半DFS
  5. 胜者树与败者树, 多路平衡归并外部排序
  6. 简书python_在简书上一起学Python是怎样一种体验
  7. PDF小技巧 如何在PDF上添加水印
  8. 线上python培训费用大概多少
  9. 恶搞英语大厅的原理(准确来说应该是恶搞IE)
  10. 车牌识别,多场景化应用提高通行效率