当前位置: 首页 > news >正文

树莓派搭建NextCloud:给数据一个安全的家

前言

NAS有很多方案,常见的有 NextcloudSeafileiStoreOSSynologyownCloudOpenMediaVault ,以下是他们的特点:

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 设置自动挂载

  1. 获取硬盘 UUID:
sudo blkid

示例:

/dev/sda1: UUID="22bccf31-5f9b-46a7-ae59-caff8da2188b" TYPE="ext4"
  1. 编辑 /etc/fstab 文件:
sudo nano /etc/fstab

添加以下内容:

UUID=22bccf31-5f9b-46a7-ae59-caff8da2188b /mnt/disk ext4 defaults 0 0
  1. 保存并重启系统验证挂载:
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有很多方案&#xff0c;常见的有 Nextcloud、Seafile、iStoreOS、Synology、ownCloud 和 OpenMediaVault &#xff0c;以下是他们的特点&#xff1a; 1. Nextcloud 优势&#xff1a; 功能全面&#xff1a;支持文件同步、共享、在线文档编辑、视频会议、日历、联系人…...

深入解读 MongoDB 查询耗时:Execution 和 Fetching 阶段详解

在使用 MongoDB 时&#xff0c;查询性能的分析与优化是开发者关注的重点。MongoDB 的查询过程通常分为两个主要阶段&#xff1a;Execution&#xff08;执行阶段&#xff09;和Fetching&#xff08;拉取阶段&#xff09;。每个阶段的耗时代表不同的性能瓶颈&#xff0c;优化思路…...

frida_hook_dlopen(当年到lib目录下找发现一个so都没有,hook下dlopen)

Frida 脚本用于拦截 Android 应用程序中的 dlopen 和 android_dlopen_ext 函数。这两个函数用于动态加载共享库&#xff0c;脚本通过拦截这些函数的调用来记录加载的库的路径。 代码分析 var dlopen Module.findExportByName(null, "dlopen"); // 6.0 var android…...

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言&#xff1a;纯个人记录使用。 搭建 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去掉停用词&#xff08;fit_wordsgenerate&#xff09;的2种用法 通过词频来绘制词云图&#xff08;jiebaWordCloud&#xff09; Python教程95&#xff1a;去掉停用词词频统计jieba.tokenize示例用法 将进酒—李白process_t…...

Python 中如何处理异常?

在Python中&#xff0c;异常处理是一种重要的编程技术&#xff0c;它允许开发者优雅地处理程序运行过程中出现的错误或异常情况&#xff0c;而不是让程序直接崩溃。 通过异常处理&#xff0c;我们可以使程序更加健壮、用户友好。 异常处理的基本结构 Python中最基本的异常处…...

C++——多态(下)

目录 引言 多态 4.多态的原理 4.1 虚函数表指针 4.2 多态的原理 5.单继承和多继承关系的虚函数表 5.1 单继承中的虚函数表 5.2 多继承中的虚函数表 结束语 引言 接下来我们继续学习多态。 没有阅读多态&#xff08;上&#xff09;的可以点击下面的链接哦~ C——多态…...

qsort函数详解+代码展示

文章目录 概要系列文章目录前言(1) 定义(2) 使用&#xff08;举例子 上代码&#xff09;1、定义数组&#xff1a;2、定义比较函数&#xff1a;3、调用 qsort&#xff1a;4、输出结果&#xff1a; (3) 注意事项 小结 概要 本篇博客将详细地介绍qsort排序函数&#xff0c;&#x…...

leetcode hot100【LeetCode 136. 只出现一次的数字】java实现

LeetCode 136. 只出现一次的数字 题目描述 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 …...

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品&#xff0c;从而也带动了一系列与此相关产业&#xff0c;是人们的生活发生了翻天覆地的变化&#xff0c;而网络化的出现也在改变着人们传统的生活方式&#xff0c;包括工作&#xff0c;学习&#xff0c;社交…...

对抗攻击算法:FGSM和PGD

FGSM 传送门 FGSM 利用了梯度上升的思想&#xff0c;通过损失函数相对于输入图像的梯度来找到 最容易 迷惑网络的方向&#xff0c;并沿着这个方向对图像进行微小的扰动。 FGSM 的基本想法是&#xff0c;沿着这个梯度的符号方向对图像进行微调&#xff0c;以最大化损失函数。具…...

【八股文】小米

文章目录 一、vector 和 list 的区别&#xff1f;二、include 双引号和尖括号的区别&#xff1f;三、set 的底层数据结构&#xff1f;四、set 和 multiset 的区别&#xff1f;五、map 和 unordered_map 的区别&#xff1f;六、虚函数和纯虚函数的区别&#xff1f;七、extern C …...

xtu oj 众数

样例输入# 3 1 0 1 2 1 1 2 3 1 1 2 2样例输出# 1 2 3 解题思路&#xff1a;与数组大小有关&#xff0c;先排序 举个例子思考一下 n4 k2 数组为1 2 3 4 如果我们想让众数那个位的值为3(即max3)&#xff0c;3出现的次数为3&#xff0c;即众数为3&#xff0c;需要修改多少次…...

ENVI计算ROI分离度为灰色compute roi separability

我们在使用ENVI做影像分类的时候&#xff0c;需要采集样本兴趣区&#xff08;ROI&#xff09;&#xff0c;在采集完兴趣区需要计算样本ROI的分离度。 但是有时会发下你 计算ROI分离度的选项为灰色状态不能计算。 如果不是以下问题&#xff1a; “一个是必须首先选择或创建至少…...

Adaboost集成学习 | Python实现基于NuSVR-Adaboost多输入单输出回归预测

目录 效果一览基本介绍程序设计参考资料效果一览 基本介绍 基于NuSVR-Adaboost多输入单输出回归预测python代码 NuSVR是一种支持向量回归(SVR)算法的变体,用于解决回归问题。SVR是一种监督学习方法,它用于预测连续目标变量,而不是分类标签。NuSVR在SVR的基础上引入了一个…...

Python学习第十三天--面向对象,类和对象

一、面向过程和面向对象区别 面向过程&#xff1a;需要实现一个功能时&#xff0c;着重的是开发的步骤和过程&#xff0c;每个步都需要自己亲力亲为&#xff0c;需要编写代码&#xff08;自己来做&#xff09; 面向对象&#xff1a;需要实现一个功能时&#xff0c;不注重的是…...

AI运用落地思考:如何用AI进行系统运维?

1. 故障预测与预防 数据收集与分析&#xff1a;通过收集系统的各种运行数据&#xff0c;如服务器性能指标&#xff08;CPU使用率、内存占用、磁盘I/O等&#xff09;、网络流量数据、应用程序日志等。利用AI算法对这些海量数据进行分析&#xff0c;挖掘数据中的模式和相关性。例…...

springboot学习-分页/排序/多表查询的例子

最近喜欢上了springboot&#xff0c;真是个好的脚手架。今天继续学习分页/排序/多表查询等复杂功能。按步骤记录如下. 按步骤做的发现不可用&#xff0c;最终还是用的jdbctemplate解决。这也是一次经验。总计在最后。 1.maven依赖 首先从https://start.spring.io/ 选择需要的…...

windows 应用 UI 自动化实战

UI 自动化技术架构选型 UI 自动化是软件测试过程中的重要一环&#xff0c;网络上也有很多 UI 自动化相关的知识或资料&#xff0c;具体到 windows 端的 UI 自动化&#xff0c;我们需要从以下几个方面考虑&#xff1a; 开发语言 毋庸置疑&#xff0c;在 UI 自动化测试领域&am…...

ffmpeg命令详解

原文网址&#xff1a;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&#xff0c;即输入。后面填一个输入地址和一…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络&#xff08;如 RNN&#xff09;的自动分词在原理、实现方式和效果上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 实现原理对比 对比维度手动分词&#xff08;规则 / 词典驱动&#xff09;神经网络 RNN 分词&#xff08;数据驱动&#xff09…...

循环语句之while

While语句包括一个循环条件和一段代码块&#xff0c;只要条件为真&#xff0c;就不断 循环执行代码块。 1 2 3 while (条件) { 语句 ; } var i 0; while (i < 100) {console.log(i 当前为&#xff1a; i); i i 1; } 下面的例子是一个无限循环&#xff0c;因…...

vue3 手动封装城市三级联动

要做的功能 示意图是这样的&#xff0c;因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...

第21节 Node.js 多进程

Node.js本身是以单线程的模式运行的&#xff0c;但它使用的是事件驱动来处理并发&#xff0c;这样有助于我们在多核 cpu 的系统上创建多个子进程&#xff0c;从而提高性能。 每个子进程总是带有三个流对象&#xff1a;child.stdin, child.stdout和child.stderr。他们可能会共享…...