对于此项目,我们将向您展示如何设置和配置树莓派 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 服务] 的教程。 -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 服务器。
如果您遇到任何问题或对本教程有任何反馈,请不要在下面发表评论。