树莓派搭建NextCloud:给数据一个安全的家
前言
NAS有很多方案,常见的有 Nextcloud、Seafile、iStoreOS、Synology、ownCloud 和 OpenMediaVault ,以下是他们的特点:
1. Nextcloud
- 优势:
- 功能全面:支持文件同步、共享、在线文档编辑、视频会议、日历、联系人等功能,可通过插件进一步扩展。
- 开源免费:无需支付软件费用,用户完全掌控数据。
- 灵活性强:可部署在各种硬件平台上(如树莓派、PC、服务器等)。
- 安全性高:支持端到端加密、多因子认证,保障数据隐私。
- 不足:
- 功能丰富导致性能要求较高,适合有一定技术背景的用户。
2. Seafile
- 优势:
- 高性能:采用文件分块机制,上传和同步速度快,特别适合大文件处理。
- 轻量化:系统资源占用少,运行效率高。
- 安全性强:提供端到端加密。
- 不足:
- 功能较少:扩展能力有限,缺乏丰富的插件支持。
- 社区支持不如 Nextcloud 活跃。
3. iStoreOS
- 优势:
- 轻量化:适合低功耗硬件,运行效率高。
- 易于部署:配置简单,入门门槛低。
- 适配家庭环境:支持文件共享、下载管理等基础功能。
- 不足:
- 功能有限:缺乏扩展能力和高级功能,无法满足多样化需求。
- 社区支持较少:遇到问题可能难以找到解决方案。
4. Synology DSM
- 优势:
- 完整解决方案:软硬件深度集成,提供高度优化的用户体验。
- 功能丰富:支持文件同步、备份、媒体服务器、虚拟机等多种功能。
- 用户友好:界面直观,操作简单,无需技术背景。
- 不足:
- 成本高:需购买专用硬件,初始投入较大。
- 自定义能力有限:无法深度控制和定制系统。
5. ownCloud
- 优势:
- 与 Nextcloud 类似,提供文件同步、共享和扩展能力。
- 成熟稳定:作为早期开源私有云方案,用户基础广泛。
- 提供企业版:适合企业用户,支持更多功能和专业服务。
- 不足:
- 插件数量和功能拓展不及 Nextcloud。
- 社区热度逐渐被 Nextcloud 超越。
6. OpenMediaVault
- 优势:
- 简单易用:通过 Web 界面轻松管理 NAS 功能。
- 模块化设计:支持插件扩展文件共享、FTP、媒体流和备份功能。
- 适配低功耗设备:适合树莓派等硬件。
- 不足:
- 功能较基础:更倾向于作为 NAS 解决方案,而非完整的云存储平台。
- 缺乏在线编辑、协作等高级功能。
本文选择Nextcloud作为NAS方案,以下是树莓派5安装Nextcloud详细教程,涵盖硬件选购、软件安装和配置等内容。
硬件选购
- 树莓派5
- TF卡 64G
- 西数红盘 4T
- 读卡器
软件设置
1. 系统更新
安装系统,选择这个
在树莓派启动后,首先更新系统:
sudo apt update && sudo apt upgrade -y
2. 安装 LAMP 环境
Nextcloud需要以下组件支持:
- Web 服务器:Apache
- 数据库:MariaDB
- PHP:用于处理动态内容
2.1 安装 Apache
安装 Apache Web 服务器并设置为开机自启:
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2
2.2 安装 MariaDB
安装 MariaDB 数据库并进行安全配置:
sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
根据提示设置密码并提升安全性。
2.3 安装 PHP
安装 PHP 及其扩展:
sudo apt install php libapache2-mod-php php-mysql php-gd php-xml php-curl php-mbstring php-zip php-intl php-bcmath php-imagick -y
3. 安装 Nextcloud
3.1 下载并解压 Nextcloud
从官网下载最新版本的 Nextcloud:
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
tar -xjf latest.tar.bz2
4. 挂载硬盘
4.1 检测硬盘
插入西数红盘,确认设备是否被识别:
sudo fdisk -l
示例输出:
Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Device Start End Sectors Size Type
/dev/sda1 2048 7814035455 7814033408 3.6T Linux filesystem
4.2 手动挂载硬盘
创建挂载点并挂载硬盘:
sudo mkdir /mnt/disk
sudo mount /dev/sda1 /mnt/disk/
4.3 设置自动挂载
- 获取硬盘 UUID:
sudo blkid
示例:
/dev/sda1: UUID="22bccf31-5f9b-46a7-ae59-caff8da2188b" TYPE="ext4"
- 编辑
/etc/fstab
文件:
sudo nano /etc/fstab
添加以下内容:
UUID=22bccf31-5f9b-46a7-ae59-caff8da2188b /mnt/disk ext4 defaults 0 0
- 保存并重启系统验证挂载:
sudo reboot
5. 配置 Nextcloud
5.1 移动文件并设置权限
将 Nextcloud 文件移动到硬盘:
sudo mv nextcloud /mnt/disk/
sudo chown -R www-data:www-data /mnt/disk/nextcloud/
sudo chmod -R 755 /mnt/disk/nextcloud/
5.2 配置 Apache
创建 Apache 配置文件:
sudo nano /etc/apache2/sites-available/nextcloud.conf
添加以下内容:
<VirtualHost *:80>ServerAdmin admin@yourdomain.comDocumentRoot /mnt/disk/nextcloudServerName 192.168.1.106Alias /nextcloud "/mnt/disk/nextcloud/"<Directory /mnt/disk/nextcloud/>Require all grantedAllowOverride AllOptions FollowSymlinks MultiViews</Directory>ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.logCustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
启用配置并重启 Apache:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
6. 配置 MariaDB
创建数据库和用户:
sudo mysql -u root -p
在 MariaDB 命令行中执行:
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
7. 完成安装
在浏览器中访问树莓派的 IP 地址:
http://<树莓派IP>
按提示完成安装:
- 创建管理员账户。
- 填写数据库信息:
- 数据库名:
nextcloud
- 用户名:
nextclouduser
- 密码:设置的
yourpassword
- 数据库主机:
localhost
- 数据库名:
8. 文件管理
8.1 文件扫描
拷贝数据到 data
文件夹后,需要手动触发文件扫描:
cd /mnt/disk/nextcloud
sudo -u www-data php occ files:scan --all
8.2 修复权限
确保文件权限正确:
sudo chown -R www-data:www-data /mnt/disk/nextcloud/data
sudo chmod -R 755 /mnt/disk/nextcloud/data
9. 可选优化
9.1 启用 HTTPS
使用 Let’s Encrypt 安装 SSL 证书:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache
9.2 性能优化
启用 APCu 缓存:
sudo nano /mnt/disk/nextcloud/config/config.php
添加:
'memcache.local' => '\OC\Memcache\APCu',
至此,树莓派5上已经成功搭建 Nextcloud 服务器,支持PC端和手机端共享文件
相关文章:
树莓派搭建NextCloud:给数据一个安全的家
前言 NAS有很多方案,常见的有 Nextcloud、Seafile、iStoreOS、Synology、ownCloud 和 OpenMediaVault ,以下是他们的特点: 1. Nextcloud 优势: 功能全面:支持文件同步、共享、在线文档编辑、视频会议、日历、联系人…...
深入解读 MongoDB 查询耗时:Execution 和 Fetching 阶段详解
在使用 MongoDB 时,查询性能的分析与优化是开发者关注的重点。MongoDB 的查询过程通常分为两个主要阶段:Execution(执行阶段)和Fetching(拉取阶段)。每个阶段的耗时代表不同的性能瓶颈,优化思路…...
frida_hook_dlopen(当年到lib目录下找发现一个so都没有,hook下dlopen)
Frida 脚本用于拦截 Android 应用程序中的 dlopen 和 android_dlopen_ext 函数。这两个函数用于动态加载共享库,脚本通过拦截这些函数的调用来记录加载的库的路径。 代码分析 var dlopen Module.findExportByName(null, "dlopen"); // 6.0 var android…...
Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录
前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…...
WordCloud去掉停用词(fit_words+generate)的2种用法
-------------词云图集合------------- WordCloud去掉停用词(fit_wordsgenerate)的2种用法 通过词频来绘制词云图(jiebaWordCloud) Python教程95:去掉停用词词频统计jieba.tokenize示例用法 将进酒—李白process_t…...
Python 中如何处理异常?
在Python中,异常处理是一种重要的编程技术,它允许开发者优雅地处理程序运行过程中出现的错误或异常情况,而不是让程序直接崩溃。 通过异常处理,我们可以使程序更加健壮、用户友好。 异常处理的基本结构 Python中最基本的异常处…...
C++——多态(下)
目录 引言 多态 4.多态的原理 4.1 虚函数表指针 4.2 多态的原理 5.单继承和多继承关系的虚函数表 5.1 单继承中的虚函数表 5.2 多继承中的虚函数表 结束语 引言 接下来我们继续学习多态。 没有阅读多态(上)的可以点击下面的链接哦~ C——多态…...
qsort函数详解+代码展示
文章目录 概要系列文章目录前言(1) 定义(2) 使用(举例子 上代码)1、定义数组:2、定义比较函数:3、调用 qsort:4、输出结果: (3) 注意事项 小结 概要 本篇博客将详细地介绍qsort排序函数,&#x…...
leetcode hot100【LeetCode 136. 只出现一次的数字】java实现
LeetCode 136. 只出现一次的数字 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 …...
(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…...
对抗攻击算法:FGSM和PGD
FGSM 传送门 FGSM 利用了梯度上升的思想,通过损失函数相对于输入图像的梯度来找到 最容易 迷惑网络的方向,并沿着这个方向对图像进行微小的扰动。 FGSM 的基本想法是,沿着这个梯度的符号方向对图像进行微调,以最大化损失函数。具…...
【八股文】小米
文章目录 一、vector 和 list 的区别?二、include 双引号和尖括号的区别?三、set 的底层数据结构?四、set 和 multiset 的区别?五、map 和 unordered_map 的区别?六、虚函数和纯虚函数的区别?七、extern C …...
xtu oj 众数
样例输入# 3 1 0 1 2 1 1 2 3 1 1 2 2样例输出# 1 2 3 解题思路:与数组大小有关,先排序 举个例子思考一下 n4 k2 数组为1 2 3 4 如果我们想让众数那个位的值为3(即max3),3出现的次数为3,即众数为3,需要修改多少次…...
ENVI计算ROI分离度为灰色compute roi separability
我们在使用ENVI做影像分类的时候,需要采集样本兴趣区(ROI),在采集完兴趣区需要计算样本ROI的分离度。 但是有时会发下你 计算ROI分离度的选项为灰色状态不能计算。 如果不是以下问题: “一个是必须首先选择或创建至少…...
Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测
目录 效果一览基本介绍程序设计参考资料效果一览 基本介绍 基于NuSVR-Adaboost多输入单输出回归预测python代码 NuSVR是一种支持向量回归(SVR)算法的变体,用于解决回归问题。SVR是一种监督学习方法,它用于预测连续目标变量,而不是分类标签。NuSVR在SVR的基础上引入了一个…...
Python学习第十三天--面向对象,类和对象
一、面向过程和面向对象区别 面向过程:需要实现一个功能时,着重的是开发的步骤和过程,每个步都需要自己亲力亲为,需要编写代码(自己来做) 面向对象:需要实现一个功能时,不注重的是…...
AI运用落地思考:如何用AI进行系统运维?
1. 故障预测与预防 数据收集与分析:通过收集系统的各种运行数据,如服务器性能指标(CPU使用率、内存占用、磁盘I/O等)、网络流量数据、应用程序日志等。利用AI算法对这些海量数据进行分析,挖掘数据中的模式和相关性。例…...
springboot学习-分页/排序/多表查询的例子
最近喜欢上了springboot,真是个好的脚手架。今天继续学习分页/排序/多表查询等复杂功能。按步骤记录如下. 按步骤做的发现不可用,最终还是用的jdbctemplate解决。这也是一次经验。总计在最后。 1.maven依赖 首先从https://start.spring.io/ 选择需要的…...
windows 应用 UI 自动化实战
UI 自动化技术架构选型 UI 自动化是软件测试过程中的重要一环,网络上也有很多 UI 自动化相关的知识或资料,具体到 windows 端的 UI 自动化,我们需要从以下几个方面考虑: 开发语言 毋庸置疑,在 UI 自动化测试领域&am…...
ffmpeg命令详解
原文网址:ffmpeg命令详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍ffmpeg命令的用法。 命令示例 1.mp4和avi的基本互转 ffmpeg -i D:\input.mp4 E:\output.avi ffmpeg -i D:\input.avi E:\output.mp4 -i 表示input,即输入。后面填一个输入地址和一…...
【漏洞复现】CVE-2022-43396
漏洞信息 NVD - CVE-2022-43396 In the fix for CVE-2022-24697, a blacklist is used to filter user input commands. But there is a risk of being bypassed. The user can control the command by controlling the kylin.engine.spark-cmd parameter of conf. 背景介绍…...
文件的摘要算法(md5、sm3、sha256、crc)
为了校验文件在传输中保证完整性和准确性,因此需要发送方先对源文件产生一个校验码,并将该值传输给接收方,将附件通过ftph或http方式传输后,由接收方使用相同的算法对接收文件再获取一个新的校验码,将该值和发送方传的…...
如何借助AI生成PPT,让创作轻松又高效
PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…...
云技术-docker
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…...
对docker安装的mysql实现主从同步
1:分别安装mysql主,从数据库 将主库容器名称改为mysql_master,将从库容器名称改为mysql_slave 安装教程:docker安装mysql 2:配置主库的my.cnf挂载文件 [mysqld] #log-bin:表示启用binlog功能,并指定二进制日志的存储目录。 log-binmysql-bin #binlog_f…...
【不定长滑动窗口】【灵神题单】【刷题笔记】
采摘水果 fruits[i]表示第i棵树上的水果种类目的是尽可能多收集水果规矩: 只有两个篮子,且每个篮子只能装一种水果,但是每个篮子能装的总量没限制一旦开始采摘,就会连续采摘,把两个篮子都用掉也就是说,采摘到最后一颗…...
AI写论文指令
一、论文选题指令 1、确定研究对象:我是一名xxx,请从以下素材内容中,结合xx相关知识,提炼出可供参考的学术概念 。以下是结合素材内容,提炼出的几个可供参考的学术概念 概念a:概念b:概念C&…...
2625扁平化嵌套数组
请你编写一个函数,它接收一个 多维数组 arr 和它的深度 n ,并返回该数组的 扁平化 后的结果。 多维数组 是一种包含整数或其他 多维数组 的递归数据结构。 数组 扁平化 是对数组的一种操作,定义是将原数组部分或全部子数组删除,…...
QT6学习第五天 第一个QT Quick程序
QT6学习第五天 第一个QT Quick程序 概述创建Qt Quick程序使用Qt资源文件 概述 如果将程序的用户界面成为前端,程序的数据存储和逻辑业务成为后端,那么传统QT Widgets程序的前后端都是用C完成的。对于现代软件开发而言,前端演化速度远快于后端…...
【开发商城系统】
在广西开发商城系统,可以按照以下步骤进行: 确定项目需求:与客户沟通,了解商城系统所需的功能和特性,并确定项目的预算和时间限制。 进行市场调研:了解广西地区的电商市场情况,包括竞争对手、消…...
百度网站推广找谁做/seo建站优化推广
如何避免子图中重复的图例标签?我要在matplotlib中进行处理的一种方法是将自定义图例标签传递给图例对象.我找不到有关等效选项的任何文档.有任何想法吗?traces []colors {Iris-setosa: rgb(31, 119, 180),Iris-versicolor: rgb(255, 127, 14),Iris-vi…...
厦门外贸网站建设公司/西安霸屏推广
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼怎样转换下面的二维数组到一维数组,然后输入数字,然后显示出输入数字在数组中相对应的词char commonWords[13][60] {"C is a structured, procedural programming","language that has been …...
python web网站开发/媒体发稿平台
C程序设计实验报告 实验项目: 1、利用复化梯形公式计算定积分2、计算Ackerman函数3、编写计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出4、编写计算学生年龄的递归函数5、编写递归函数实现Ackman函数 姓名:张时锋 …...
DW怎么做网站下拉菜单/it培训机构排名
php爆绝对路径方法? 单引号引起数据库报错 访问错误参数或错误路径 探针类文件如phpinfo 扫描开发未删除的测试文件 google hacking phpmyadmin报路径:/phpmyadmin/libraries/lect_lang.lib.php 利用漏洞读取配置文件找路径 恶意使用网站功能,…...
自己做的网站加载慢的原因/百度关键词优化和百度推广
https://www.zhihu.com/question/34183746javaScript原型、原型链的定义?prototype:每个函数都有一个prototype(显式原型),这个属性是一个对象(属性的集合),默认有一个叫做constructor(和_proto_࿰…...
邯郸做网站的地方/潍坊住房公积金管理中心
这几天使用dropna,又出现了错误,就再次记录一下: 准确的说,dropna中的subset接受的值必须是array 顺便说一下,drop_duplicates(subset""),接受的值可以是string,或者sequnence。也就是说&#…...