家用 NAS 服务器(6)| Nextcloud 网盘

家用 NAS 服务器(6)| Nextcloud 网盘

原文地址:CSDN 博文

前文提要:家用 NAS 服务器(5)| winserver2022激活及远程桌面控制



1. 前言

整个 NAS 搭建过程坚持到上一篇为止,基本上已经搭建起了一个适合家用负载的小服务器。因此从这一章开始,着重介绍 NAS 服务器的一些必备应用

1.1 优质网盘的特性

对于一个 NAS 服务器而言,存储信息永远是其首要目标,其他的功能都可以当作次要目标。市面上所可以购买的一体式的 NAS,往往其核心功能就是稳定且方便地存储家庭的照片、文件等隐私信息,所以商品级的 NAS 在出厂时就会自带一套完善的网盘系统,并为用户提供成熟的多平台应用。然而可惜的是,这些网盘系统通常与其系统具有强耦合关系,因此很难独立拆分出来使用。

因此在搭建网盘时,我们只能选择已有的开源网盘项目。而在挑选一个网盘时,我们往往需要考虑一个网盘的好坏:

  • 稳定:稳定性,即鲁棒性(Robustness),描述了网盘系统在长时间运作下的能否正常提供服务的能力。一个高稳定性的网盘,必须要能在一段相对较长的时间内,持续地为用户提供网盘服务。注意,这里的“持续”即指长时间的传输文件,也指长时间的“随叫随到”,即长时间内都可用。
  • 方便:方便性,我个人更加倾向于定义为用户友好性(User friendliness)。可以简要的理解为网盘 UI/UX 的设计对于用户操作来说是否方便,并且能为不同平台的用户提供服务,例如 Windows、Mac、Android 和 iOS 用户等。
  • 高效:高效性(Efficiency),即网盘系统对于文件索引、文件传输等功能的表现,这决定了网盘的核心存储功能的上下限,亦决定了其可以同时提供服务的人数。

上面的特性,是笔者个人认为在挑选家用网盘系统时候必须考虑的标准。然而,一套稳定、方便且高效的网盘系统,就如同一个不可能的三角形一样,鲜少出现在开源社区中。所以,我们必须在上述的三个特性中进行抉择。

事实上,众多云服务商提供的“真”网盘能够同时满足上述的特性,例如百度盘、腾讯云盘等。但是这些网盘需要更加昂贵的收费,因此不能与我们自行搭建的网盘在同一层次比较 😄

1.2 开源网盘的比较与抉择

个人了解到的可供个人搭建的网盘的选择,主要如下:

  • NextCloud / ownCloud:最流行的个人网盘搭建方案之一。NextCloud 的大名应该是每个搞 NAS DIY 的人都听过的,它具有非常多的优势
    • 成熟的 UI 和几乎全平台的支持,使用方便快捷
    • 活跃的社区、丰富的插件和及时的解决方案,稳定性有保障
    • 基于 PHP 实现,如果不开启一些优化功能的话,在性能上可能会遭遇瓶颈。但事实上由于在家用场景中的负载通常不大,因此性能缺点可以忽略
  • Seafile:同为最流行的个人网盘搭建方案之一。Seafile 是由国人开发的开源项目,在文档上对于我们来说会更加亲切。Seafile 在实现上使用块存储,并且实现了增量存储,相较于 NextCloud 而言性能更好,尤其是在大文件和小文件的存储。
  • FileCloud:相较于上面两个网盘方案,FileCloud 显得比较陌生一点。FileCloud 更加偏向于文件分享与协作,更适合多人的场景。不过国内对于 FileCloud 的相关文章比较少,笔者本人也无法准确把握其优劣势。

NextCloud 和 ownCloud 使用几乎相同的代码,并由同一批人创建。ownCloud 在 2010 年先诞生,但是由于团队内部分歧,包含创始人 Frank Karlitschek 在内的主要开发人员于 2016 年离开公司,并建立新的分支,成立了如今的 NextCloud。

OpenMediaVault 和 TrueNAS 作为一个 NAS 系统,自然包含了我们所需要的网盘功能,但由于这不符合我们目前 DIY 的需求,因此排除在外。

考虑到读者们更加希望自己的网盘是稳定的,因此我们并不会冒险去使用小众的产品。因此 NextCloud 和 Seafile 应该是我们的首要选择。

最终,考虑到手机照片自动同步功能,我选择了 NextCloud 作为我的实现方案。尽管在 NextCloud 小文件存储上经常饱受诟病,但是对于个人的应用场景来说,应该是可以接受的。


2. NextCloud 搭建

NextCloud 的搭建相对而言比较简单,主要有两种方式:通过 Snap 商店安装通过 Docker 安装

2022年4月左右,Nextcloud 官方又推出了 Nextcloud AIO 项目,旨在推行基于 Docker 的 All-in-one 的部署方案,我个人觉得功能有点冗余,而且我在搭建时感觉还不太成熟,因此就没有采用此新项目。现在 AIO 已经发展的挺可以了,有兴趣自己折腾的读者可以自行戳上面的链接去了解。

Snap 商店的问题在于国内直连不太简单,不过胜在方便,本人采用的是通过 Docker 安装的方案,不过这里仍然提供基于 Snap 搭建 NextCloud 的链接,供读者选择。

使用 Docker 进行搭建的过程,主要依赖于 Nextcloud 官方 Docker 源 以及官方提供的 docker-compose 示例

使用流程如下:

  1. 直接拷贝 docker-compose 实例中的所有文件
  2. 按照个人需求,修改 db.envweb/ 中的文件,大概率不需要碰
  3. 修改 docker-compose.yml 中的挂载点,不适用 docker volume,而将我们硬盘的挂载到数据区。下面有示例。
  4. 启动 docker-compose up -d
version: '3'

services:
  db:
    image: postgres:alpine
    restart: always
    volumes:
      - db:/var/lib/postgresql/data
    env_file:
      - db.env

  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:25-fpm-alpine
    restart: always
    volumes:
      - nextcloud:/var/www/html
      - /mnt/my_data/daemon/nextcloud/data:/var/www/html/data
      - /mnt/my_data/daemon/nextcloud/config:/var/www/html/config
    environment:
      - POSTGRES_HOST=db
      - REDIS_HOST=redis
      - PHP_MEMORY_LIMIT=4096M
      - PHP_UPLOAD_LIMIT=16G
    env_file:
      - db.env
    depends_on:
      - db
      - redis
    cpu_percent: 75

  web:
    build: ./web
    restart: always
    ports:
      - 9000:80
    volumes:
      - nextcloud:/var/www/html:ro
    depends_on:
      - app

  cron:
    image: nextcloud:25-fpm-alpine
    restart: always
    volumes:
      - nextcloud:/var/www/html
      - /mnt/my_data/daemon/nextcloud/data:/var/www/html/data
      - /mnt/my_data/daemon/nextcloud/config:/var/www/html/config
    environment:
      - PHP_MEMORY_LIMIT=4096M
      - PHP_UPLOAD_LIMIT=16G
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

volumes:
  db:
  nextcloud:

这里挂载点可以自选,挂载点对应的 /var/www/html/data 是 NextCloud 的数据区,/var/www/html/config 是其配置区。

此处笔者将服务暴露到 9000 端口,然后再使用本机的 nginx 进行反代。这部分的操作读者请自行搜索相应资料。如果想直接访问的话,则自行修改端口即可。

注意:本人在 docker-compose.yml 中指定了 NextCloud 的 Docker 镜像版本,主要是为了方便版本更新。具体的当前最新版本,可以在Nextcloud 官方 Docker 源 中自行查阅。需要注意的是,NextCloud Docker 每次镜像升级,只能上升一个大版本,而且不能版本回退。

如果是按照我之前的博文中搭建了 MergerFS 的读者,这里就可以将 MergerFS 中的目录作为挂载点,然后就能用多个硬盘存文件😀。

如果进行了 nginx 反代理之类的操作的话,可能会无法打开 NextCloud 网页,并提示错误。此时,可能需要修改 NextCloud 配置目录下的 config.php 文件。具体的问题可以在网络上查找相应的报错信息,即可搜索到对应的解决方案。


3. NextCloud 网盘维护

网盘搭建好,之后更重要的就是维护。

先通过 docker ps 命令,找寻容器名大约为 nextcloud-app-1 的容器,记住其 ID。

然后,使用下面命令进入其 docker 容器:

docker exec -u 82 -it <nextcloud-app的ID> /bin/sh

需要用第 82 号用户进入,才能满足运行 ./occ 脚本的权限需求,即命令中的 -u 82 参数。

之后,docker 容器中的当前目录下的 ./occ 文件就是 NextCloud 的维护核心程序。直接运行此脚本即可看到众多功能。可提供的功能包括安装插件、维护模式和用户管理等,具体功能就不一一赘述,有需要的可以参照官方 occ 文档


4. 移动端应用

选用 NextCloud 的好处之一,就是其提供较为完善的移动端应用支持。推荐大家去 Google Play 商店,或 iOS 商店搜索并下载 NextCloud 应用。

在移动端应用的登陆界面,可以设置后端地址为自己搭建的 NextCloud 服务的网址,即可正常登录使用。

笔者最看重其照片自动同步的功能,读者可以在应用设置中自行开启并设置备份选项。

PC 端应用也非常完善,强烈推荐读者安装并使用。


5. 总结

确实,离上一篇文章已经过了将近3个月,也发现确实有人会阅读我的文章,感到很不可思议。本来这个系列是类似于“个人备忘录”的,现在看来我走过的坑,也能帮其他人少走一些弯路😄。

OK,有关于 NextCloud 网盘设置在这里就结束了。之后可能会不定期的更新一些我觉得有意思的服务,以及发表一些服务优化的方法。

有问题的小伙伴可以留言,我都会尽快回复,长问题留邮箱也可,那么我们下期再会。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林地宁宁

谢谢你给宁宁打米哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值