type
status
date
slug
summary
tags
category
icon
password
概述
- 目前网盘服务要么都限速, 要么都空间比较小; 对于使用来说, 十分的不方便;
- 对于一些文档, 图片以及视频想通过电视来播放, 又不想插硬盘或u盘;
- 想对自己的数字资料进行集中式管理;
刚好手中有一台树莓派, 一台带宽8M云服务器, 还有几个淘汰下来的机械硬盘; 因此准备自己搭建一个私有云; 对于大流量的访问基本也会是在内网, 外网最多偶尔看看文件, 看看照片之类的, 对于应急使用, 通过云服务器穿透的速度也基本够用了;
环境及耗材信息:
- 安装ubuntu2004的树莓派4B
- 1Tb的机械硬盘,
- 8M云服务器 - ubuntu2004
- 网线一根
注: 根据当前教程创建出来, nextcloud是samba的一个子集, 如果要完整覆盖的话, 需要自行去理清相关目录关系;
环境准备
网络
树莓派通过网线连接千兆路由器, 因为树莓派4B的wifi是百兆带宽的, 而网口是千兆的, 因此必须通过网线来连接;
否则通过wifi最大网速(即使手动设置wifi为5G)理论也就 12.5Mb/s, 实测最大峰值也就11多, 平均也就9Mb/s;
网速监控:

机械硬盘格式化及分区
机械硬盘需要插在树莓派的 usb3.0 接口上
Samba安装部署
到这里, 一个网络文件系统就已经部署完成了; 如果不需要云盘相关的一些功能, 直接使用也没有问题
nextCloud安装部署
官方文档:
为了移植方便, 这里选择了docker的方式进行安装, 数据信息全部存储在samba共享目录下, 方便下次迁移到其他机器; 当然会占用磁盘的io了, 不过个人使用, 不想费力气去运维本地环境; 速度也够用;
docker安装
安装相关容器
对于nexcloud, 这里基于mariadb来进行构建, pg/mysql也是可以的; 同时使用redis作为缓存; 因为不使用缓存的话, 访问速度是有些限制的, 用着一点不丝滑...
到这里nextcloud基本能运行起来了, 可以在浏览器中打开或者到谷歌商店去下载一个app来连接看看.
配置及优化
创建数据库next_cloud
注册错误提示:nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
您的数据目录可被其他用户读取, 请更改权限为 0770 以避免其他用户查看目录。
因为我们还要能够通过samba来访问,而且是私服, 完全没必要这么设置, 自己的数据当然自己做主, 这个可以跳过
保存后, 刷新页面即可
视频文件不显示缩略图
启用缓存
通过不被信任的域名访问
后台任务cron的配置
局域网上传速度优化
扫描手动拷贝进入的文件
提前生成缩略图
严格模式禁止http访问
web使用https反向代理了http导致的, 配置文件中新增以下配置
提示”php-imagick模块不支持SVG”
管理员后台【概览】页提示“此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它。
您的安装没有设置默认的电话区域
此实例中的 php-imagick 模块不支持 SVG
您的网页服务器未正确设置以解析“/.well-known/caldav”, “/.well-known/carddav”
由于我的环境比较复杂,
- nexcloud是在树莓派4B的docker中运行
- 通过frp的 tcp + tls 到云服务器
- K8s增加对应外部服务的Service (服务名: simple-zero, port: web12711)
- 通过k8s的ingress-nginx进行反向代理, 最终暴露到外网;
最终等效场景应该是: 反向代理 + docker部署;
解决方案如下:
设置定时任务执行时间
安装bz2模块
商店使用国内镜像站
外网穿透部署
外网穿透推荐frp来实现
- 作者:leiax00
- 链接:https://blog.leiax00.cn/article/pi4-nas
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。