如何在树莓派上安装 NextCloud,打造属于自己的私有云存储?

对于此项目,我们将向您展示如何设置和配置树莓派 NextCloud 服务器,该服务器可以充当您自己的个人” 云” 存储系统。

随着时间的流逝,与第三方公司一起保护自己的隐私变得越来越困难。这是诸如 Nextcloud 之类的软件应运而生的地方,因为它使您可以完全控制文件,而无需第三方控制器。

重要的是要记住,由于数据将存储在本地网络中,因此从本地网络外部上载和下载文件时,最终将占用大量带宽。如果您的 Internet 连接不是很好,那么如果您计划在本地网络之外使用它,则可能无法获得最佳体验。

如果看起来很熟悉,那是因为可能是因为 Nextcloud 是我之前介绍过的 [owncloud 软件的一个积极维护的分支。开发的时间越长,这两个软件包的差异就越大,我建议对这两个软件包进行研究,然后再决定使用哪个软件包。

如果您想了解有关 Nextcloud 的更多信息,可以查看 Nextcloud 网站

注意: 树莓派上的 USB 端口通常无法为外部硬盘驱动器供电。如果您发现这种情况,并且您的硬盘驱动器不使用外部电源,那么我建议您考虑为 Pi 购买 * 供电的 USB 集线器 。

设备清单

您可以在下面找到我为树莓派 nextcloud 教程使用 / 推荐的所有细节。

推荐的

  • 树莓派 2 或 3

  • Micro SD 卡或 * SD 卡 Pi 的旧版本。

  • 电源

  • Ethernet Cord 或 * Wifi dongle (Pi 3 内置 WiFi)

  • 外部硬盘或 * USB 驱动器

可选的

  • 树莓派外壳

  • USB 键盘

  • USB 鼠标

安装 Apache 和 PHP

要在树莓派上运行 Nextcloud ,我们首先需要安装和设置 Apache 和 PHP 。

我们不会太深入地安装这些组件,因为它们是本教程的次要组件。

如果您想了解有关设置 Web 服务器的更多信息,请务必按照我们的教程进行操作。

为了获得最佳性能,我建议使用 Raspbian lite,但是普通的 Raspbian 也可以使用。

如果您需要有关如何全部设置的信息,请查看 Pi 操作系统部分中的指南

在本教程中,我们将使用最新的 PHP 7 版本。

1 首先,请使用以下命令更新软件包存储库:

sudo apt update
sudo apt upgrade

2 完成后,我们现在使用以下命令安装 apache :

sudo apt  install apache2

您可以转到 Pi 的 IP 地址,以检查 Apache2 是否已成功启动并运行,这将加载默认的 Apache 页面。

如果不确定树莓派的本地 IP 地址是什么,请在终端中输入” 主机名 - I”。

3 现在在树莓派上安装了 Apache2 之后,我们只需要安装 PHP 及其一些软件包即可。

对于本教程,我们将使用 ** PHP 7.3 **,这将要求您已安装 Raspbian Buster。

您可以按照我们的指南升级到 Raspbian 破坏者。

要安装 PHP 和所需的软件包,请运行以下命令。

sudo apt install php7 .3 php7.3-gd php7.3-sqlite3 php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-mysql php7.3-bz2 php7.3-国际 php7 .3-smbclient php7.3-imap php7.3-gmp

4 现在安装了 Apache 和 PHP 之后,我们需要做的最后一件事就是重启 Apache 。

您可以使用以下命令来执行此操作:

sudo service apache2 restart

为 Nextcloud 设置 MySQL 数据库和用户

在本节中,我们将向您展示如何为 Nextcloud 设置用户和数据库以用于存储其数据。

在开始本节之前,您必须已经在树莓派上设置 MySQL 服务器。1 我们要做的第一件事是通过运行以下命令来打开 MySQL 命令行工具。
我们将使用此命令行工具为 MySQL 创建用户和数据库。

sudo mysql  -u root -p

2 登录到该工具后,我们可以从创建数据库开始。

我们将通过运行以下命令来创建名为 nextclouddb 的数据库。

创建数据库 nextclouddb ;

3 下一步是创建一个用户,该用户将用于与新数据库进行交互。

通过运行以下命令,我们将创建一个名为” nextclouduser” 的用户。确保用安全密码替换” [PASSWORD]”,并记下来以备后用。

创建用户'nextclouduser'@'localhost'由'[PASSWORD]'标识;

4 创建用户后,我们现在需要为其授予与数据库交互的权限。

我们可以通过运行以下命令来做到这一点。

将所有特权授予 nextclouddb 。*至'nextclouduser'@'localhost';

该命令向用户 nextclouduser 授予 nextclouddb 数据库及其所有表的所有特权。

5 我们的最后任务是刷新特权表。

要刷新特权,我们需要做的就是运行以下命令。

冲洗特权;

完成此操作后,我们现在可以继续在树莓派上安装 Nextcloud 了。

在树莓派上下载 Nextcloud

在您的树莓派上获取 Nextcloud 非常简单,它主要涉及从其网站下载 zip 文件,将其解压缩然后制作一些。

1 首先,使用以下命令转到 html 目录:

cd/var/www /

2 现在,我们可以将最新版本的 Nextcloud 下载到我们的设备中。

为此,我们将使用 wget 将最新版本下载到当前文件夹。

sudo wget  https://download.nextcloud.com/server/releases/latest.tar.bz2

3 现在将 Nextcloud 下载到我们的树莓派中,让我们提取存档。

要使用 tar 提取档案,我们需要使用以下命令。

sudo tar  -xvf Latest.tar.bz2

4 现在,我们需要为 Nextcloud 创建一个数据目录以供操作,对于 Nextcloud 的初始设置,我们必须在” html/nextcloud” 目录中创建此文件夹。

使用以下命令创建目录:

sudo mkdir  -p/var/www/nextcloud/data

5 现在,通过运行以下命令,对整个 Nextcloud 文件夹及其中的所有内容进行正确的用户和组控制。

sudo chown  -R www-data:www-data/var/www/nextcloud /

6 最后,我们需要给它正确的权限,再次运行以下命令:

sudo chmod  750/var/www/nextcloud/data

为 Nextcloud 配置 Apache

接下来,我们需要处理 Nextcloud 的.htaccess 文件。

由于我们将 Nextcloud 安装到默认的 Apache2 目录 /var/www / 中,因此我们需要更改 Apache2 中的某些设置以允许.htaccess 文件覆盖设置。

为了仅针对 Nextcloud 目录处理此问题,我们将创建一个新的配置文件。

1 首先,我们创建一个文件来存储 Nextcloud 的配置更改:

sudo vim /etc/apache2/sites-available/nextcloud.conf

2 在此文件中输入以下行。

别名/nextcloud"/var/www/nextcloud /"

<目录/var/www/nextcloud />
  要求所有授予
  允许全部覆盖
  选项 FollowSymLinks 多视图

  <IfModule mod_dav.c>
    Dav关闭
  </IfModule>

</目录>

这些行基本上告诉 Apache2 如何在 /var/www/nextcloud / 文件夹中处理自身。

这些更改将使 Apache2 可以读取和利用 Nextcloud 目录中的.htaccess 文件。

3 现在,我们可以保存并退出文件,方法是按 CTRL + X,然后按 Y ,然后按 Enter 。

4 创建文件后,我们现在需要告诉 Apache 使用它。

我们可以通过使用 a2ensite 命令和 nextcloud.conf 来做到这一点。

sudo a2ensite  nextcloud.conf

5 现在,我们需要重新启动 Apache2 以强制其读取更新后的配置文件。我们可以使用以下命令轻松地做到这一点:

sudo systemctl重新加载 apache2 

完成此操作后,您现在可以继续在其 Web 界面中设置 Nextcloud 软件。

Nextcloud 初始设置

1 至此,我们现在终于可以进入 Nextcloud 本身并开始其安装过程了。

首先,请转到您的树莓派的 IP 地址和 /nextcloud

如果您不知道树莓派的 IP 地址,则可以使用命令” 主机名 - I”。

请记住,将 [[IPADDRESS]] 替换为您的树莓派。

[IPADDRESS]/nextcloud

2 现在,您将看到以下屏幕。

在这里,您需要输入打算用于管理员帐户的用户名密码 (1 )。如果计划允许从网络外部访问 Nextcloud 文件服务,请确保使用安全的长密码。
接下来,我们需要指定数据库服务器的详细信息。要获得这些选项,您需要单击”Storage&Datbase“选项 (2 )。

现在,您需要选择我们要使用的数据库类型。当我们使用 SQL Server 时,请点击”MySQL/MariaDB“(3 ) 选项。

最后,我们需要输入数据库服务器的详细信息。我们需要输入三点信息。

1. 将与我们的数据库服务器交互的用户的用户名。 (A ) 如果您使用的是与我们相同的信息,则此设置应设置为” nextclouduser”。
2. 您为上述用户设置的密码。 (B )
3. 您需要设置的最后一个选项是数据库名称。 (C ) 如果您一直遵循我们的指南,则为 nextclouddb

对此感到满意后,请按” 完成设置 “按钮 (4 ),请注意,这可能需要一些时间才能完成,以完成设置。

3 之后,您现在应该会看到以下欢迎屏幕,它只是列出了可用于连接 Nextcloud 安装的各种程序。

只需点击右上角的 ** X ** 按钮即可继续。

4 现在,您终于可以看到树莓派 Nextcloud 的界面了,您应该花一些时间来熟悉 Nextcloud 界面的所有功能。

我们不会深入介绍如何使用 Nextcloud 界面,如果您需要更多信息,那么我建议您查看 Nextcloud 的支持部分

但是,我们在下面的屏幕截图中突出显示了一些关键区域。

移动 Nextcloud 的数据文件夹

现在安全安装了 Nextcloud 之后,我们就可以调整设置,使其更加安全和实用。我们应该做的第一件事就是移动数据目录,使其不位于我们的 Web 可访问目录中。

这与将 Nextcloud 数据目录移动到更大的外部硬盘驱动器上,而不是在树莓派的 SD 卡上增加负载一样。

1 首先,我们将在新目录中存储数据文件。

为了简单起见,我们将在 /var/nextcloud 中创建一个新文件夹,并将我们的数据文件夹移到该文件夹​​中。

通过运行以下命令创建文件夹:

sudo mkdir  -p/var/nextcloud

2 使用我们创建的新文件夹,我们现在将数据目录移动到该文件夹​​中,由于使用了 mv 命令,这很容易做到。

请注意,当我们移动文件然后调整配置文件时,您的 Nextcloud 系统将无法使用。

要开始移动,请输入以下命令:

sudo MV  -v/var/www/nextcloud/data/var/nextcloud/data

3 现在,随着文件移动,我们现在可以修改 datadirectory 配置以指向我们的新目录。

首先,使用以下命令将其更改为 Nextcloud 的配置目录。

cd/var/www/nextcloud/config

4 现在,我们可以复制配置文件以对其进行备份,可以使用以下命令执行此操作:

sudo cp  -p config.php config.php.bk

5 最后,我们打开 config .php 文件,以使用 ** vim ** 进行编辑。

sudovimconfig.php

6 在此文件中,我们需要更改以下行:

'数据目录'=>'/var/www/nextcloud/data',

'数据目录'=>'/var/nextcloud/data',

7 现在,我们可以通过按 CTRL + X,然后按 Y ,然后按 ENTER 保存并退出文件。

8 作为最后的准备,我们应确保 www -data 用户仍然对我们的新文件夹拥有所有权。

sudo chown  -R www-data:www-data/var/nextcloud/data

您现在应该可以刷新 Web 浏览器,并且所有文件的显示都应与以前完全一样。

增加 Nextcloud 的最大上传大小

默认情况下,PHP 的上传限制非常低,因此只有 2 MB。要更改此设置,我们需要修改 php.ini 文件并增加限制。如果您只能上传 2mb 的文件,那么云存储系统并不是很有用。

1 首先,我们需要使用以下命令开始编辑配置文件:

sudo vim /etc/php/7.3/apache2/php.ini

2 现在,我们需要查找并替换以下两行。

post_max_size = 8M
upload_max_filesize = 2M

post_max_size = 1024M
upload_max_filesize = 1024M

当然,您可以将文件大小限制设置为远高于 20M 的文件,因此,可以随意将该数字更改为您认为要上传到 Nextcloud 的最大文件大小。

3 现在,我们可以保存并退出文件,方法是按 CTRL + X,然后按 Y ,然后按 Enter 。现在,我们需要重新启动 Apache2 以强制其读取更新后的配置文件。我们可以使用以下命令轻松地做到这一点:
sudo service apache2 restart

4 现在,您应该能够重新启动网络浏览器并开始新的上传,以查看最大上传大小已成功增加。

为 Nextcloud 设置 SSL

现在,我们应该真正地设置树莓派 Nextcloud 服务器,使其通过 HTTPS 而非纯 HTTP 运行。

对于本教程,我们将假定您没有域名,因此我们将生成自己的自签名证书,而不使用免费服务,如 Letsencrypt 。

1 在修改 Apache2 配置之前,我们首先将生成自签名证书,幸运的是,借助 OpenSSL ,我们可以在一个命令中完成所有这些工作。

请记住,” 自签名证书会在您的 Web 浏览器中引发错误”,虽然不如正确签名的证书安全,但总比没有好。如果您不使用域名,这也是唯一的选择。

在生成证书之前,我们首先创建一个目录来存储它。

sudo mkdir  -p/etc/apache2/ssl

2 现在,通过在终端中运行以下命令来自己生成证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

如果您想确切地知道这些命令参数的作用,请阅读下面的简短说明。

要求:这指定用于 X .509 证书签名请求 (CSR) 管理的子命令。

** -x509:** 此选项指定我们要制作一个自签名证书文件,而不是生成证书请求。

** -nodes:** 这告诉 openssl 应用程序我们不想指定密码,每次 Apache 重新启动时,密码都会要求我们输入密码,这很麻烦。

** -days 365:** 这指定了我们希望证书保持有效的天数,在此天数之后,您将必须生成新的证书。

** -newkey rsa:4096:** 这将同时创建证书请求和新的私钥。您将需要执行此操作,因为我们没有预先创建私钥。 rsa:2048 告诉 OpenSSL 生成 2048 位长的 RSA 密钥。

** -keyout:** 此参数为正在创建的私钥文件命名输出文件。

** -out:** 该选项为我们正在生成的证书的输出文件命名。

按 Enter 后,将显示以下选项供您填写。

国家名称(2个字母代码)[AU]:
州或省名称(全名)[某些州]:
地区名称(例如城市)[]:
组织名称(例如公司)[Internet Widgits Pty Ltd]:
组织单位名称(例如,部分)[]:
通用名称(例如服务器 FQDN 或您的姓名)[]:
电子邮件地址 []:

3 填写完所有信息后,我们便可以继续设置 Apache2 以运行 SSL 并利用我们新生成的证书。这是一个简单但重要的过程。

首先,使用以下命令为 Apache 启用 SSL 模块:

sudo a2enmod  ssl

4 现在,我们需要修改 default-ssl.conf 文件,以便它将使用我们的新证书,而不是由 OpenSSL 在安装时生成的默认证书。

要开始修改此文件,请运行以下命令:

sudo vim /etc/apache2/sites-available/default-ssl.conf

5 在此文件中,我们需要更改以下两行以指向我们在 /etc/apache2/ssl 文件夹中生成的新证书。

更改

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

6 现在,我们可以保存并退出文件,方法是按 CTRL + X,然后按 Y ,然后按 Enter 。

7 现在,我们可以启用 default -ssl 配置并重新启动 Apache 以加载新配置。我们可以使用以下两个命令来做到这一点。

sudo a2ensite  default-ssl.conf
sudo service apache2 restart

8 您可以通过在树莓派的 IP 地址前加上 ** https://** 进行测试,以确保其工作正常。它会警告您有关它可能是无效的证书。这是正常的,因为它是未签名的证书。

例如,要确保我自己的 Nextcloud 副本现在在 SSL 之后运行,我将转到以下内容。

https://192.168.1.105/nextcloud

第 9 、 10 、 11 和 12 步是” 全部可选操作”,不需要完成。9 可选的额外步骤,以确保为 Nextcloud 设置提供最佳安全性是强制实施 SSL ,因此无法通过 HTTP 建立连接,如果建立了连接,它将把您重定向到 HTTPS 。
为此,我们可以对 apache 配置进行一些更改,然后开始使用以下命令编辑默认文件:

sudo vim /etc/apache2/sites-available/000-default.conf

10 用以下代码替换此文件中的所有文本。基本上,这会将所有 HTTP 通信重定向到等效的 HTTP 。

<VirtualHost *:80>
   ServerAdmin示例@示例

   RewriteEngine开
   RewriteCond%{HTTPS}已关闭
   RewriteRule ^(。*)$ https://%{HTTP_HOST} $ 1 [R = 301,L]
</VirtualHost>

11 现在,我们可以保存并退出文件,方法是按 CTRL + X,然后按 Y ,然后按 Enter 。

12 现在,在此之前,我们需要启用重定向模块并重新启动 apache 。通过运行以下两个命令,我们可以轻松实现此目的:

sudo a2enmod重写
sudo service apache2 restart

现在,在 HTTP 上转到树莓派应该会自动重定向到 HTTPS 版本。例如,如果我转到” http://192.168.1.105",它将重定向到" https://192.168.1.105"

端口转发 Nextcloud

最后,进入有关端口转发 Nextcloud 的部分。我们不会在路由器的端口转发方面深入探讨,但会告诉您哪些端口需要转发。我们还将提到需要对 Nextcloud 进行哪些更改才能使其工作。

在开始本节之前,您需要知道 Nextcloud 仅在特定指定的受信任域下运行。这意味着您将需要指定要用于连接的域名或使用公共 IP 地址。

由于大多数家庭公共 IP 地址都是动态的,因此您需要研究设置动态 DNS 服务,您将找到有关如何为 [树莓派设置动态 DNS 服务] 的教程。(https://pimylifeup.com/raspberry -pi-port-forwarding /) 非常方便。

1 要添加您的域 / IP,我们需要修改 NextCloud 的配置文件,我们可以通过运行以下命令来做到这一点:

sudo vim /var/www/nextcloud/config/config.php

2 在此文件中,您会看到如下文本块。这是允许 Nextcloud 运行的所有受信任域的数组。目前,它只应包含树莓派的本地 IP 地址。我们将在该数组的末尾添加新的域 / IP。

'trusted_domains'=>
数组(
    0 =>'192.168.1.105',
),

对于我们的示例,我们将向数组添加” nextcloud.pimylifeup.com”。这意味着我们需要增加阵列 ID 并添加域名。一旦添加了新的,它应该如下所示。对您希望 Nextcloud 能够运行的任何新 IP 或域重复此过程。

'trusted_domains'=>
数组(
    0 =>'192.168.1.105',
    1 =>'nextcloud.pimylifeup.com',
),

3 现在,我们可以保存并退出文件,方法是按 CTRL + X,然后按 Y ,然后按 Enter 。

4 最后,您将需要向前转发两个端口,以最终启动并运行 Nextcloud 。这两个端口是端口 80 和端口 443 。这两个端口所需的协议是 TCP 。

希望到现在为止,您应该已经可以正常运行树莓派 Nextcloud 服务器。

如果您遇到任何问题或对本教程有任何反馈,请不要在下面发表评论。

分享到