没人喜欢免费云存储空间用完的情况。看到 Google Photos 或 iCloud 发出空间不足的警告,可能会让您前往南美洲观赏树懒的异国之旅扫兴。但是,对于我们这些 DIY 爱好者和家庭工作者来说,如果您愿意亲自动手,还是有解决办法的。
Nextcloud 简介
Nextcloud 是一个免费的开源云存储平台,让您可以享受云的强大功能和灵活性。它支持多种流行的 Linux 发行版,例如 Red Hat Enterprise Linux 9 和 Ubuntu 24.04 LTS。在本文中,我们将使用 Ubuntu Server 24.04.1 和 Nextcloud Hub 9 (30.0.0) 构建高性能、完全可定制的云存储服务器。此处显示的一些步骤可能需要一些 Linux 服务器管理和命令行界面的背景知识,因此请发挥您的思维,准备好掌握技术!
设置服务器
要开始设置 Nextcloud 服务器,您需要在所选系统上全新安装 Ubuntu Server。主计算机上的虚拟机或任何闲置的硬件都可以解决问题!我们建议使用至少有 2-4 个 CPU 核心、8 GB 的 RAM 和 500 GB 的存储空间的计算机。系统准备就绪后,请访问以下链接获取 Ubuntu Server: https://ubuntu.com/download/server .
如果您之前从未安装过 Ubuntu Server,请在开始之前查看其指南: https://ubuntu.com/tutorials/install-ubuntu-server 。请注意不要在推荐软件页面上选择预安装 Nextcloud 的选项,因为我们会自己处理这个问题。
将服务器接入网络、指定主机名并使用初始设置时创建的用户名和密码登录后,输入以下命令获取 Ubuntu Server 的最新软件更新: “sudo apt 更新 && sudo apt 升级 -y” 在控制台中输入以下命令并按回车键。更新完成后,使用以下命令重新启动服务器 “sudo 重启”.
注意:您可能需要再次输入密码才能执行 sudo 命令。
安装软件
接下来,我们必须获取 Nextcloud 实例所依赖的一些先决条件软件。在命令行界面中键入(或最好复制并粘贴)以下命令,以下载并安装 Apache Web 服务器以及稍后进行更高级的 Nextcloud 设置所需的一些软件包:
sudo apt 安装 apache2 mariadb-server php libapache2-mod-php redis-server libmagickcore-6.q16-7-extra
安装 php-apcu php-bcmath php-bz2 php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-ldap php-mbstring php-memcached php-mysql php-redis php-smbclient php-zip php-xml
如果提示要求您输入 Y 或 N 以继续或停止安装,请输入 Y 并按回车键。最后,输入“wget https://download.nextcloud.com/server/releases/latest.zip”获取最新版本的 Nextcloud 并使用 “sudo apt 安装解压缩” 要安装解压工具,我们需要提取这些文件。
现在我们已经拥有设置 Nextcloud 实例所需的所有软件,让我们检查一下我们安装的 Web 服务器。
配置 Apache Web 服务器 - 第 1 部分
在开始使用 Apache 之前,我们需要先确保能够正确连接到服务器。要允许 Web 浏览器(HTTP 和 HTTPS)连接到 Nextcloud 实例,请使用以下命令:
sudo ufw 允许“Apache Full”
sudo ufw启用
现在,您的 Ubuntu Server 上应该有一个正在运行且可访问的 Web 服务器!在另一台连接到与您的 Nextcloud 计算机相同的网络的计算机上,在浏览器窗口中输入服务器的 IP 地址,然后按 Enter。如果您不记得服务器的 IP 地址,请使用 “主机名 -I” 命令来显示它。如果安装成功,您应该会看到默认的 Apache2 页面全部显示出来!
尽管有些人可能会说这个默认的 Web 服务器页面非常简洁,但在第二部分中,我们将用更好的内容替换它。让我们快速绕道并立即设置 MariaDB!
配置 MariaDB
我们的 Nextcloud 服务器需要一个始终在线的数据库来存储服务器配置和用户配置文件信息。要配置 MariaDB 在系统重启后运行,请输入 “sudo systemctl 启用 mariadb” 然后按回车键。现在,我们已准备好为 Nextcloud 安装准备数据库!
幸运的是,MariaDB 预装了安全设置实用程序,因此我们无需做太多繁重的工作。使用 “sudo mysql_secure_installation” 启动它,并回答向导提出的问题。
- 输入root的当前密码(不输入): 点击进入
- 切换到 unix_socket 身份验证 [Y/n] n
- 更改 root 密码? n
- 删除匿名用户? [Y / N] y
- 禁止远程root登录? [Y / N] y
- 删除测试数据库并访问它? [Y / N] y
MariaDB 现在是安全的,我们可以开始创建数据库来服务我们的 Nextcloud 实例。
类型 “sudo mysql -u root” 并在出现 MySQL 命令行界面时输入这些命令(并确保在每行末尾使用“;”!):
创建用户'nextcloud'@'localhost',由'P@$$w0rd' 识别;
注意:将“nextcloud”和“P@$$w0rd”替换为您选择的用户名和密码。
如果不存在则创建数据库 nextcloud 字符集 utf8mb4 COLLATE utf8mb4_general_ci;
授予 nextcloud 的所有权限。* 至 'nextcloud'@'localhost';
注意:再次将 @ 符号前的“nextcloud”替换为您之前使用的用户名。
FLUSH PRIVILEGES;
退出;
我们越来越近了!我们现在有一个可以运行(但尚未完成)的 Web 服务器和数据库。
启用 PHP 扩展并提高 PHP 性能
还记得我们安装的所有 PHP 扩展吗?我们需要启用它们以确保 Nextcloud 可以正确使用它们。使用此命令启用所需的 PHP 扩展:
sudo phpenmod apcu bcmath bz2 curl gd gmp imagick intl ldap mbstring memcached mysql redis smbclient zip xml
既然已经启用了正确的扩展,我们需要调整一些 PHP 设置以更好地满足我们的需求。我们要编辑的 PHP 配置文件位于 “/etc/php/8.3/apache2/php.ini” 并可以通过放置 “sudo nano” 在路径前面并按回车键。如果你安装了不同版本的 PHP,请将 “8.3” 到您安装的版本的主版本号,可以通过输入 “php -v” 在控制台中。
一旦你打开了 “php.ini” 使用 Ubuntu 内置文本编辑器 nano 编辑文件,按住控制 (ctrl) 键并点击键盘上的“W”键。当搜索栏出现时,输入 “最大执行时间”,然后按回车键。然后 Nano 将跳到它找到的第一个与您输入的值匹配的项。使用箭头键导航并使用退格键删除字符,将“30”更改为“360”。重复此技巧以更改以下 PHP 设置的值:
memory_limit的= 512M
- 如果需要,可以选择性地增加以给予 PHP 更多内存(1024M、2048M 等)
post_max_size = 100G
上传最大文件大小 = 100G
- 此值和上一个值代表您可以上传到 Nextcloud 服务器的最大文件大小。将它们更改为所需的最大文件大小。(1G = 1 GB,10G = 10 GB,100G = 100 GB 等)请注意,仅以 K(千字节)、M(兆字节)和 G(千兆字节)为单位输入大小。
日期.时区 = 美国/纽约
- 删除行前的“;”,并使用本指南帮助确定正确的时区:https://www.php.net/manual/en/timezones.php
opcache.enable=1
- 删除行前的“;”。
opcache.内存消耗=128
- 删除行前的“;”。此值(以兆字节为单位)可以自定义以适合您的 Nextcloud 服务器的内存量(128 = 128 兆字节,1024 = 1024 兆字节/1 千兆字节,2048 = 2048 兆字节/2 千兆字节)。
opcache.interned_stringers_buffer=16
- 删除行前的“;”。表示分配给驻留字符串的内存量(以兆字节为单位),建议值为 16。
opcache.max_accelerated_files=10000
- 删除行前的“;”。此值可以调整为 200 到 1000000 之间的任意数字,以适合您系统的缓存和内存功能。
opcache.revalidate_freq=1
- 删除行前的“;”并改为1。
opcache.save_comments=1
- 删除行前的“;”并验证该值是否设置为 1。
完成对 php.ini 文件的所有必要更改后,按住控制键 (ctrl) 并按“O”键保存文件。按 Enter 确认,再次按住控制键 (ctrl) 并点击“X”键退出 nano。
接下来,输入以下命令启用更多所需的 Apache 模块 “sudo a2enmod dir env 标头 mime 重写 ssl” 在控制台中。此时您不需要使用控制台消息建议的命令重新启动 Apache。
配置 Apache Web 服务器 - 第 2 部分
虽然我们已经下载了 Nextcloud 并设置了许多软件前提条件,但我们仍然需要用 Nextcloud 替换默认的 Apache 网页。输入 “cd〜” 在控制台中输入并按回车键,返回到用户的主目录。这是下载 Nextcloud ZIP 文件的位置。现在,输入 “解压最新的.zip” 按下回车键,然后观看解压缩实用程序的轰鸣声!
- “最新.zip” ZIP 文件现在解压到名为 “nextcloud” 在下载的同一目录中。这个新文件夹包含 Nextcloud 网站所需的所有必要材料。现在我们将开始将此文件夹移动到其正确的位置, “/var/www/html”.
在传输文件夹之前,我们必须确保内置的 “www 数据” 用户是新目录的所有者。这一点非常重要,因为 “www 数据” 用户处理由 Apache Web 服务器和 Nextcloud 本身执行的所有 Web 服务器操作。类型 “sudo chown -R www-data:www-data./nextcloud” 在控制台中并按回车键。
现在,该 “www 数据” 用户拥有该文件夹,我们可以立即移动它。使用 “sudo mv./nextcloud /var/www/html” 将文件夹移动到正确的目录中。
我们现在可以通过输入以下命令禁用默认的 Apache Web 服务器页面 “sudo a2dissite 000-default.conf” 进入控制台。忽略警告,重新加载 Apache 服务器,然后键入以下命令为新站点创建虚拟主机文件 “sudo nano /etc/apache2/sites-available/nextcloud.conf” 并按回车键。虚拟主机文件的内容应准确输入如下:
DocumentRoot /var/www/html/nextcloud/ 服务器名称 nextcloud-demo.moose.local要求所有已授予 AllowOverride 所有选项 FollowSymLinks MultiViews大卫
更换 “nextcloud-demo.moose.local” 替换为您安装 Nextcloud 的服务器的完全限定域名 (FQDN)。FQDN 的第一部分是您之前创建的服务器主机名,可以使用 “主机名” 命令。名称的第二部分和第三部分分别是域和顶级域。例如,如果您的域是 “storagereview.com” 你的服务器的主机名是 “nextcloud”,那么您的服务器的 FQDN 将是 “nextcloud.storagereview.com”.
如果您没有域名,可以使用以下方式从 Cloudflare 等注册商处购买域名 https://www.cloudflare.com/products/registrar/ 或者使用来自以下网站的免费公开主机名 https://www.noip.com/ 。如果您不想购买域名或使用免费主机名,您可以在此字段中放置一个虚构的 FQDN,但需要注意的是,您只能使用服务器的 IP 地址(公共和私有)连接到 Nextcloud 实例。
注意:要使用服务器的 FQDN 本地访问您的 Nextcloud 实例,您必须在家庭网络上运行正确配置的 DNS 服务器。否则,从家庭网络访问服务器时必须使用服务器的本地 IP 地址。
完成虚拟主机文件的编写并将示例 FQDN 替换为服务器的 FQDN(合法或非法)后,您最终可以使用以下命令启用 Nextcloud 站点 “sudo a2ensite nextcloud.conf” 和 “sudo systemctl 重启 apache2” 重新启动带有新站点的 Web 服务器。使用位于同一网络上的另一台计算机上的 Web 浏览器通过服务器的 FQDN 或本地 IP 地址导航到您的 Nextcloud 实例。
Nextcloud 初始设置
如果您正确地遵循了前面的步骤,您将看到一个页面,要求您为该网站创建一个管理员用户并填写有关 Nextcloud 服务器的一些详细信息。为管理员用户提供您想要的名称,例如管理员或超级管理员,以及一个强密码。
在设置页面的“存储和数据库”部分中,输入 “/var/www/html/nextcloud/data” 在“数据文件夹”字段中,输入创建 MariaDB 数据库时使用的帐户用户名、密码和数据库名称。在“数据库主机”字段中,输入 “本地主机” 完成后单击安装按钮。
该网站将加载一小会儿,然后向您提供为 Nextcloud 服务器安装几个推荐应用程序的选项。请注意,向您的 Nextcloud 实例添加更多应用程序将增加服务器的处理负载、内存使用量和总磁盘使用量。选择是否安装推荐的应用程序或选择跳过此步骤。
应用程序安装完成或出现下一页后,您可以根据需要阅读介绍菜单。
看起来 Nextcloud 服务器已经完成,但我们还有一个步骤来使服务器运行:设置一个 cron 作业来在服务器上执行定期安排的任务。
创建一个 Cron Job
cron 作业是定期执行的命令,无需用户干预。我们的 Nextcloud 服务器需要一个 cron 作业来调用服务器的 “cron.php” 每 5 分钟运行一次脚本以获得最佳性能和功能。
要设置此 cron 作业,请输入命令 “sudo crontab -u www-data -e” 在服务器的控制台中。
当。。。的时候 “www 数据” 用户的 crontab 打开后,在文件底部添加以下行:
*/5 * * * * php -f /var/www/nextcloud/cron.php
完成后,按住控制键 (ctrl) 并按“O”键保存文件,然后按住控制键 (ctrl) 并按“X”键退出。恭喜!您现在在本地网络上有一个可用的 Nextcloud 服务器!您现在可以开始在家庭网络上向 Nextcloud 服务器上传和下载文件,但为了让它大放异彩,我们需要提高它的安全性,添加一些家庭实验室最喜欢的应用程序,设置一个超快的内存缓存系统,并使其可以从公共互联网访问。
提高 Nextcloud 服务器的安全性
提高 Web 服务器安全状况的最佳方法之一是升级到 HTTPS,而不是未加密且不安全的 HTTP。启用后,请求将通过 TLS 1.3 进行处理,这是最新、最安全的 Web 连接加密标准。每当您计划将网站公开到公共互联网时,这都是必要的步骤,也是保护敏感信息的绝佳第一步。
一旦您决定加密 Nextcloud 流量,有两种设置 HTTPS 的选项可供选择:使用自签名证书或使用来自有效证书颁发机构的证书。如果您目前没有域名或不打算为临时 Nextcloud 实例设置域名,我们建议使用自签名证书或来自主机名提供商的证书。如果您计划进行更永久的 Nextcloud 设置,我们强烈建议您从 Let's Encrypt 等证书颁发机构获取公开信任的证书。
具有自签名证书的 HTTPS
要启用和创建自签名证书,您需要发出几个简单的命令:
须藤a2enmod ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt
现在我们已经启用了 Apache SSL(也称为 TLS)模块并创建了自签名证书,我们需要指示站点打开 TLS 并使用该证书。输入 “sudo nano /etc/apache2/sites-available/nextcloud.conf” 然后按回车键再次开始编辑虚拟主机文件。
将以下几行添加到虚拟主机文件的底部,如下所示,但将“ServerName”字段替换为服务器的完全限定域名:
DocumentRoot /var/www/html/nextcloud/ ServerName nextcloud-demo.moose.local SSLEngine on SSLCertificateFile /etc/ssl/certs/nextcloud-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/nextcloud-selfsigned.key要求所有已授予 AllowOverride 所有选项 FollowSymLinks MultiViews大卫
按住 Ctrl 键并按“O”键保存文件,然后按住 Ctrl 键并按“X”键退出 nano。要将这些更改应用于 Apache Web 服务器,请使用 “sudo systemctl 重启 apache2” 命令。您现在应该已经使用自签名证书启用了 HTTPS!
下次您通过输入服务器的完全限定域名或 IP 地址访问您的网站时,您应该会看到一条警告,告知您该网站的证书颁发机构无效。继续跳过此错误(方法将因您的 Web 浏览器而异)并查看该网站。Web 浏览器已自动使用 HTTPS 连接,并将使用 TLS 加密发送数据。
具有受信任证书的 HTTPS
为了使用 Nextcloud 的受信任证书,您必须首先拥有一个域名或拥有来自主机名提供商的签名证书。如果您之前使用的是自签名证书并按照上一节中的步骤启用 HTTPS,请删除文件底部添加的文本部分并运行命令 “sudo a2dismod ssl” 和 “sudo systemctl 重启 apache2”。完成后记得使用 control + “O” 和 control + “X” 保存并退出 nano。
域名所有者的 HTTPS 设置(通过 Certbot)
现在虚拟主机文件已恢复为标准 HTTP 配置,我们可以开始准备使用来自证书颁发机构的受信任证书。如果您拥有域名,请按照以下步骤获取和实施证书。如果没有,请跳到下一部分,其中将详细介绍如何使用从主机名提供商获取的证书。要获取用于您自己的域名的证书,我们将使用 Let's Encrypt 的 Certbot,这是一个非营利组织,提供免费证书供 Web 服务器使用。
要下载 Certbot,首先使用以下方式安装并更新 Snap “sudo snap 安装核心 && sudo snap 刷新核心”。然后,输入 “sudo snap install –classic certbot” (“classic” 之前有两个连字符)来安装该包。
运行该命令 “sudo certbot –apache” (再次,“apache” 之前有两个连字符)启动 certbot,并按照所有提示创建和下载您的 Web 证书。
证书创建过程将需要用于联系域所有者的电子邮件地址等信息,并要求您同意 Let's Encrypt 要求的条款和条件。在提示时输入或选择您要获取证书的域名,然后完成交互过程。如果您在使用 Certbot 时遇到错误,您可能必须在路由器上启用端口转发,将端口 80 和 443 转发到 Nextcloud 服务器的私有 IP 地址,或配置域的 DNS 记录以指向路由器的公共 IP 地址。端口转发和 DNS 记录设置的过程高度依赖于您的路由器、域名注册商和互联网服务提供商,因此本指南不涵盖这些内容。
Certbot 完成后,通过键入重新打开虚拟主机文件 “sudo nano /etc/apache2/sites-available/nextcloud.conf” 并按回车键。在标头用于将 HTTP URL 重写为 HTTPS,并替换 “nextcloud-demo.moose.local” 使用您的服务器的完全限定域名:
RewriteEngine 在 RewriteCond %{SERVER_NAME} = nextcloud-demo.moose.local RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
完成后的虚拟主机文件应如下所示:
现在,您应该已经设置了来自有效证书颁发机构的可信证书,并且为网络做好了 HTTPS 加密准备!
使用主机名提供商的证书设置 HTTPS
使用主机名提供商的证书在 Nextcloud 服务器上启用 HTTPS 的步骤与本文中“使用自签名证书的 HTTPS”部分中介绍的步骤相同,唯一的例外是您必须将自签名密钥的路径替换为主机名提供商的密钥路径。命令如下 “wget” 和 “mv” 可用于下载证书文件并将其移动到正确的目录(证书文件为 /etc/ssl/certs,密钥文件为 /etc/ssl/private)。确保使用 “sudo a2enmod ssl” 命令和使用 “sudo systemctl 重启 apache2” 完成后应用更改。使用证书文件的完整虚拟主机文件应与此类似(其中 SSLCertificateFile 和 SSLCertificateKeyFile 字段替换为您的自定义证书和密钥文件的路径):
安装文件防病毒应用程序
尽管 Nextcloud 可以通过 HTTPS 安全地传输数据,但这并不意味着您或您的用户上传的所有内容都是安全的。无论是有意还是无意,如果不迅速处理,网络服务器上的恶意软件感染都可能造成巨大破坏,并像野火一样蔓延到其他系统。为了在互联网上提供另一层保护以抵御不良行为者,防病毒程序对于可从互联网访问的服务器来说是必不可少的。
ClamAV 是一款免费的开源防病毒套件,可以与 Nextcloud 集成,以扫描用户上传的文件中是否存在恶意软件。Nextcloud 应用商店有一款名为“文件防病毒”的应用,它使用 ClamAV 作为后端来扫描用户文件并保护您的服务器。您可以通过点击管理员帐户的个人资料图片并选择“安全”类别,导航到“应用”选项卡来下载此应用。
单击“文件防病毒”部分上的“下载并启用”按钮,将其安装在您的 Nextcloud 实例上。接下来,我们需要安装 ClamAV 并启用扫描程序和恶意软件签名更新系统。使用 “sudo apt 安装 clamav clamav-daemon” 获取所有必要的 ClamAV 包。
安装完软件包后,运行 “sudo dpkg-重新配置 clamav 守护进程” 在控制台中调出交互式配置菜单。我们将使用它来自定义 ClamAV 设置的扫描行为。
输入以下列出的问题的答案:
- 自动处理配置文件? Yes
- 套接字类型: UNIX
- 本地 (UNIX) 套接字 clamd 将监听: /var/运行/clamav/clamd.ctl
- clamd 本地 (UNIX) 套接字的组所有者: ClamAV的
- clamd 本地(UNIX)套接字的创建模式: 666
- 妥善处理剩余的 UNIX 套接字文件? Yes
- 您想启用邮件扫描吗? 没有
- 您想启用存档扫描吗? 没有
- 您可以针对此提示选择“是”,但如果选择这样做,则需要进行其他配置。有关更多信息,请参阅 ClamAV 文档: https://docs.clamav.net/manual/Installing/Packages.html#the-packages
- 允许的最大目录深度: 15
- 您想要守护进程跟随常规文件符号链接吗? Yes
- 停止线程扫描器的超时时间(秒): 180
- 守护进程的线程数: 2
- 从 Nextcloud 服务器的核心/vCPU 数量中减去 2,然后在此字段中输入该数字。
- 允许的待处理连接数: 15
- 您想使用系统记录器吗? 没有
- clamav-daemon 的日志文件(输入 none 以禁用): /var/log/clamav.log
- 您想记录每条消息的时间信息吗? 没有
- 如果大量的驱动器写入不会对您的系统造成损害,请选择“是”。
- 您想启用日志轮换吗? Yes
- 守护进程自我检查之间的延迟(秒数): 3600
- 以以下用户身份运行 clamav-daemon: ClamAV的
- clamav-daemon 的组(以空格分隔): www数据
- 您想从数据库加载字节码吗? Yes
- 应用于字节码的安全级别: 信任签名
- 字节码执行超时(以毫秒为单位): 60000
呼!配置好多啊!幸运的是,我们只需要配置一次。使用 “systemctl 启用 clamav-freshclam” 和 “systemctl 启用 clamav 守护进程” 允许ClamAV在系统启动后启动,我们就可以开始配置Nextcloud“文件防病毒”应用程序了。
使用另一台连接到与您的 Nextcloud 服务器相同的网络和子网的计算机上的 Web 浏览器,登录 Nextcloud 并点击您的管理员用户的个人资料图片。从下拉菜单中点击“管理设置”选项,并在页面加载完成后选择“安全”部分。
向下滚动到“文件防病毒”部分,将“模式”字段更改为“ClamAV 守护进程(套接字)”。将“在后台扫描期间发现受感染文件时”字段更改为“删除文件”,然后点击“保存”按钮。ClamAV 将定期扫描上传到 Nextcloud 的文件中是否存在恶意软件,并删除与已知恶意软件签名匹配的文件。
Nextcloud 集成和常规改进
现在我们已经构建了一个功能齐全且安全的云服务器来存储数据,我们可以扩展其功能并添加新功能。让我们先处理一些容易实现的事情:将 Nextcloud 连接到电子邮件服务器并设置默认手机区域。
连接电子邮件服务器
要发送电子邮件通知、活动警报和密码重置链接(针对非 LDAP 用户),Nextcloud 需要连接到正常运行的电子邮件服务器。如果您自行托管电子邮件服务器,则设置非常简单,只需输入正确的服务器地址和身份验证信息即可。您还可以使用具有您已有电子邮件地址的第三方电子邮件服务器,例如 Gmail 的 SMTP 服务器。
使用与您的服务器位于同一网络和子网的计算机上的 Web 浏览器导航到您的 Nextcloud 服务器的完全限定域名或 IP 地址。单击您的管理员用户的个人资料图片,然后从下拉菜单中选择“管理设置”。
在“管理设置”页面,从左侧选择“基本设置”部分,然后向下滚动到“电子邮件服务器”模块。
在此页面上,您可以配置电子邮件服务器的加密、寻址和身份验证设置。您可以选择几种加密和身份验证方法来满足您的安全性或兼容性需求。
要将 Gmail 的 SMTP 服务器与你已有的 Google 帐户一起使用,请先导航至 https://myaccount.google.com/apppasswords 并按照网站上的说明创建应用密码。为应用密码指定一个与 Nextcloud 服务器关联的名称,并将密码存储在安全的位置。请注意,密码显示为每四个字符一个空格,但实际上并不包含这些空格。应用密码是十六个连续字母的字符串。
填写以下所列的电子邮件服务器字段:
- 发送方式: SMTP
- 加密: 无/STARTTLS
- 发件人地址: JOHNDOE @ storagereview.com网站
- 在此处输入您的 Gmail 帐户地址。
- 服务器地址:smtp.gmail.com: 587
- 验证: 是(勾选)
- 证书: [电子邮件保护] 应用程序密码在这里
- 在此处输入您的 Gmail 帐户地址和您创建的应用程序密码。
完成后,单击“保存”按钮并使用“发送电子邮件”按钮验证您的配置是否有效。
如果您尚未为所使用的管理员用户帐户设置电子邮件地址,您将收到一条警告,要求您设置。只需点击管理员用户的个人资料图片,从下拉菜单中选择“个人设置”,然后在“电子邮件”字段中输入您的电子邮件地址,即可轻松解决此问题。完成后,返回“管理设置”页面中“基本设置”下的“电子邮件服务器”模块,并根据需要重新输入配置。
设置默认手机地区
我们可以进行一项非常快速但非常有用的更改,以使 Nextcloud 更好地处理电话号码,即为实例设置默认电话区域。当用户在“个人设置”下的“个人信息”设置中填写个人资料时,系统会要求他们选择性地包含一个电话号码以便联系。如果没有默认电话区域,Nextcloud 会强制用户输入带有此号码的国家/地区代码。设置默认电话区域允许用户排除此前缀。
在 Nextcloud 服务器控制台中,使用 “sudo nano /var/www/html/nextcloud/config/config.php” 编辑 Nextcloud 站点 PHP 配置文件。
将以下行添加到您的 PHP 配置文件中,与前面几行创建的间距模式保持一致,并在结尾的“);”括号前插入:
'default_phone_region' => '美国',
-
- 您可以在以下维基百科页面上找到您所在国家/地区用于此字段的唯一 ISO 3166-1 代码: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
出于安全原因,您不应向任何人展示您的 Nextcloud 实例的内容 “config.php” 文件。它包含敏感信息,例如只有您或您的系统管理员才应该知道的密码和系统机密。将默认电话区域行添加到配置文件后,按住控制键 (ctrl) 并点击“O”,然后按住控制键并点击“X”退出,以保存新内容。要应用更改,请输入 “sudo systemctl 重启 apache2” 进入控制台并按回车键。
设置维护时段
我们可以对 Nextcloud 站点的 PHP 配置文件进行的另一个小改进是为服务器设置一个维护窗口,以执行更密集且可能影响用户的任务。窗口使用 UTC 时间设置,因此您需要将所需的维护窗口开始时间转换为等效的 UTC 时间(表示为 1 到 24 之间的整数)。维护窗口持续四个小时,因此从 UTC 凌晨 3:00 开始的维护窗口将在 UTC 凌晨 7:00 结束。
使用 VHDL 语言编写 “sudo nano /var/www/html/nextcloud/config/config.php” 再次开始编辑 PHP 配置文件,并在结尾的“);”括号之前添加此行,遵循文件中已有行使用的间距约定:
‘维护窗口启动’ => 1,
-
- 请记住将“1”替换为您所需的维护窗口开始时间(转换为 UTC 时间)。
使用 control (ctrl) + “O” 和 control (ctrl) + “X” 保存文件后,使用以下方法应用维护窗口 “sudo systemctl 重启 apache2”.
LDAP/Active Directory 服务器集成
如果您计划让多个用户访问您的 Nextcloud 实例,那么您可以添加到 Nextcloud 的最强大功能之一就是能够连接到 LDAP 或 Active Directory 服务器并对其进行身份验证。许多组织和家庭实验室使用 Active Directory 或 LDAP 来集中组织和控制用户对网络资源的访问,Nextcloud 也不例外。使用“LDAP 用户和组后端”应用程序,可以将 Active Directory 域或 LDAP 服务器中的用户导入到您的 Nextcloud 服务器中,并使用他们的用户名或电子邮件地址和密码登录。当与外部存储(如 NAS 上的 SMB 共享)结合使用时,此功能会变得更加强大,为用户提供具有特定权限的单独“主”文件夹。
要安装“LDAP 用户和组后端”应用程序,首先使用管理员用户帐户登录 Nextcloud 网页时单击个人资料图片。从出现的下拉菜单中选择“应用程序”,然后单击“精选应用程序”模块。向下滚动直到找到“LDAP 用户和组后端”应用程序,然后单击“启用”按钮。
现在应用程序已启用,我们需要将 Nextcloud 连接到 LDAP 服务器。确保您已准备好一个帐户来授权此连接。通常建议为此连接专门创建服务帐户,但可以使用任何具有搜索目录能力的 Active Directory 或 LDAP 帐户。请注意,虽然此示例将使用 Active Directory 域上的内置域“管理员”帐户,但这不是一种安全的做法。 如果 Nextcloud 服务器遭到入侵并且“管理员”帐户的凭据被盗,攻击者将拥有读取、修改甚至删除域中任何对象的完全权限。
再次点击管理员用户的个人资料图片并从下拉菜单中选择,导航至“管理设置”页面。点击“LDAP/AD 集成模块”即可开始。
在此页面上,开始填写 LDAP/Active Directory 服务器所需的信息:
- 主持人: 192.168.1.102
- 替换为您的 LDAP 服务器或 Active Directory 域控制器的 IP 地址/主机名。
- 港口: 389
- 如果您正在使用 Active Directory,请使用端口 389。如果您正在使用其他类型的 LDAP 服务器或已自定义 AD 服务器监听 LDAP 请求的端口,请在此处输入具体的号码。
- 用户 DN: CN=管理员,CN=用户,DC=moose,DC=本地
- 输入用于将 Nextcloud 连接到 LDAP/AD 服务器的帐户的专有名称。如果使用 Active Directory,可以通过使用 CMD 窗口运行此命令轻松找到它,将“Administrator”替换为您用于连接的帐户的用户名:
- dsquery 用户名 “管理员”
- 填写此字段后,单击“保存凭据”按钮。
- 输入用于将 Nextcloud 连接到 LDAP/AD 服务器的帐户的专有名称。如果使用 Active Directory,可以通过使用 CMD 窗口运行此命令轻松找到它,将“Administrator”替换为您用于连接的帐户的用户名:
- 每行一个基本 DN: DC=驼鹿,DC=当地
- 保存先前的凭据后,单击“检测基本 DN”按钮,以自动确定 LDAP/AD 服务器的基本 DN。
- 或者,单击“测试基本 DN”按钮来检查到目前为止的配置是否有效。
完成“LDAP/AD 集成”模块的第一页后,点击“继续”按钮,花一点时间查看和研究“用户”部分。
虽然页面布局乍一看可能让人困惑,但其功能是通过对象类别和组等属性筛选可登录 Nextcloud 服务器的用户。我们建议为将登录 Nextcloud 服务器的用户创建一个唯一的组,以便可以根据该组的成员身份进行筛选。选择您希望授予访问权限的对象类别和/或组,然后单击“>”按钮将该组添加到过滤器。此示例使用名为“family”的组。单击“验证设置并计算用户数”按钮以显示一条消息,显示有多少用户符合您输入的描述。如果计数似乎不正确,请仔细检查您的对象类别和组过滤器。
获得正确的用户数量后,点击“继续”按钮进入“登录属性”部分。选中“LDAP/AD 用户名:”和“LDAP/AD 电子邮件地址”字段的复选框,并通过在“测试登录名”框中输入用户名和电子邮件地址(如果需要)并点击“验证设置”来验证登录属性是否正确。
如果用户名/电子邮件地址可用于登录,则会出现一条通知,指出“已找到用户并已验证设置”。最后一次点击“继续”按钮进入最后一页“组”。与“用户”页面类似,“组”部分使用对象类和组标准缩小了可以登录 Nextcloud 服务器的范围。进行与“用户”页面上相同的选择,或者通过在“搜索对象类”和“搜索组”字段中输入更具体的标准来减少可以登录的用户数量。此示例从页面列表中选择“家庭”组,并使用“>”按钮将访问权限限制为仅限该组。最后,单击“验证设置并计算组数”以显示有效登录的组数。
现在,您已授予在前面步骤中选择的 LDAP 或 Active Directory 组登录 Nextcloud 服务器的权限。单击管理员用户的个人资料图片,然后选择“注销”。当系统提示输入用户名和密码以再次登录时,请测试您已授予访问权限的用户之一的登录功能。如果用户无法登录,请重新访问此页面的“用户”和“组”部分以查看您的条件并排除错误。
外部存储集成
Nextcloud 服务器的另一个强大功能是能够连接并使用外部存储池。将用户文件直接放在服务器本身上可能会导致与管理服务器存储相关的问题,并且必须不断增加容量以满足用户需求。如果您没有时刻警惕地执行配额并删除用户创建的不必要数据,则可能会导致挫败感和意外停机。在旨在创建可扩展的云存储系统和愉快的用户体验时,强烈建议将 Nextcloud 设置的 Web 服务器和存储组件分开,并且这至关重要。
Nextcloud 的“外部存储支持”应用程序使您能够挂载以下存储类型的文件夹:
- Amazon S3
- 则fTP
- Nextcloud
- 是的,您可以连接并使用其他 Nextcloud 服务器上可用的存储!
- OpenStack对象存储
- SFTP
- SMB / CIFS
- WebDAV
如您所见,有几种不同的选择可以将 Nextcloud 连接到外部存储阵列、云和其他系统。例如,我们将 Nextcloud 实例连接到 SMB 共享,该共享使用授予从我们之前连接到的 Active Directory 域导入的用户的权限来控制对不同文件夹的访问。
要启用“外部存储支持”应用,请在登录网站后点击管理员用户的个人资料图片,然后选择“应用”。再次导航到“精选应用”,找到标有“外部存储支持”的模块。单击“启用”按钮以使该应用可用。
启用应用程序后,您将能够通过进入“管理设置”并单击“外部存储”模块来添加外部存储。从此页面,您可以通过从下拉菜单中选择存储类型并填写配置详细信息来连接到外部存储。
要添加 SMB 共享,请从列表中选择“SMB/CIFS”选项,并填写以下配置详细信息:
- 验证: 手动输入,存储在数据库中
- 要让用户手动输入自己的用户名和密码进行身份验证,请选择此选项。要使用一组静态凭据让用户访问 SMB 共享,请选择“登录名和密码”。否则,请从下拉菜单中选择最符合您需求的选项。
- 文件夹名称: 家庭
- 您可以将此名称设置为任何您想要用来描述您正在安装的存储的名称。示例:“SMB”或您正在安装的共享的名称。
- 主持人: 192.168.1.140
- 将此值替换为您要连接的 SMB 共享托管服务器的 IP 地址或 FQDN。
- 分享: 家庭
- 将此值替换为您想要挂载的共享的名称,该共享存在于在“主机”字段中输入的服务器上。
- 远程子文件夹:\
- 要挂载共享的顶层文件夹(共享文件夹本身),请使用“\”。否则,请按以下方式输入所需共享内的子文件夹路径:
- \子文件夹\另一个子文件夹\又一个子文件夹
- 要挂载共享的顶层文件夹(共享文件夹本身),请使用“\”。否则,请按以下方式输入所需共享内的子文件夹路径:
- 域: 驼鹿
- 如果使用 LDAP 或 Active Directory 控制对共享的访问,请将此值替换为域的 NetBIOS 名称。如果共享不受 LDAP/AD 服务器控制,则不需要此字段。
- 显示隐藏文件: 确保
- 如果用户能够查看隐藏文件(以“。”字符开头的文件),请选中此框。
- 区分大小写的文件系统: 确保
- 列出文件时验证 ACL 访问权限: 确保
- 此选项对于访问控制的正常运行极为重要。否则,如果两个用户安装了相同的共享,并且将文件夹配置为对方无权访问,他们仍然能够查看彼此的文件。
- 所有人: 确保
- 如果您希望所有 Nextcloud 用户都能输入凭据并连接到 SMB 共享,请选中此选项,否则请选择 Nextcloud 实例上的本地组以使用下面的字段使共享可用。
- 不幸的是,在撰写本文时,如果未选择,则无法使用此选项下方的字段选择 LDAP/Active Directory 组。
- 如果您希望所有 Nextcloud 用户都能输入凭据并连接到 SMB 共享,请选中此选项,否则请选择 Nextcloud 实例上的本地组以使用下面的字段使共享可用。
输入完特定于您的设置的 SMB 共享配置详细信息后,单击复选标记按钮将其保存并提供给用户。
如果您希望用户能够自行安装外部存储,请点击页面存储安装部分下方的复选标记。如果您选择启用此选项,您还可以限制可供自行安装的存储类型。
要完成 SMB 共享的设置,用户必须点击自己的个人资料图片并从下拉菜单中选择,然后导航到“个人设置”下的“外部存储”模块。
在此页面上,用户可以输入用户名和密码,然后单击复选标记按钮以解锁 SMB 共享以存储和检索文件。
一旦用户输入了他们的凭证,就可以通过单击 Nextcloud 站点菜单顶部的文件夹图标并浏览用户文件夹和文件列表来访问共享。
将 Nextcloud 变成真正的 Web 服务器
现在,功能丰富的 Nextcloud 实例几乎可以成为公开可用且功能强大的 Web 服务器!在打开闸门之前,我们需要确保服务器可以处理来自多个用户访问文件的密集请求。我们已经通过对系统的 PHP 配置进行几项关键编辑来提高性能,而添加对内存缓存的支持可以进一步提高性能。
设置内存缓存 – APCu
ACPu 是一个 PHP 缓存,有助于加快常用对象的访问时间。我们将使用它作为 Nextcloud 实例的第一个缓存。在启用 APCu 缓存之前,我们需要对系统的“php.ini”文件进行一些更改。
使用 VHDL 语言编写 “须藤纳米/etc/php/8.3/apache2/php.ini” 开始编辑文件。按住向下箭头键一段时间,滚动到文件底部。在文件底部的新行中,添加以下行:
apc.enable_cli=1
apc.shm_size=128M
添加这两行将使系统使用 APCu 作为缓存,并将缓存大小设置为 128 兆字节,而不是默认值 32。完成后,按 control (ctrl) + “O” 和 control (ctrl) + “X” 保存文件并退出 nano。
要完成 APCu 缓存的开启,请使用 “sudo nano /etc/php/8.3/mods-available/apcu.ini” 并添加 “apc.enable_cli=1” 到配置文件的底部,就像我们对 “php.ini” 文件。再次使用 control (ctrl) + “O” 和 control (ctrl) + “X” 保存并退出配置文件。
我们已经启用 PHP 来使用 APCu,但现在我们需要指示 Nextcloud 使用它。
类型 “sudo nano /var/www/html/nextcloud/config/config.php” 在控制台中,然后按回车键。在 Nextcloud PHP 配置文件中,我们将添加一行以使 Nextcloud 使用 APCu 进行本地内存缓存:
'memcache.local' => '\OC\Memcache\APCu',
将此行放在结尾的“);”括号之前,遵循先前配置文件行的间距约定。再次按住 control (ctrl) 并按“O”,然后按住 control (ctrl) 和“X”保存并退出。
保存 PHP 配置文件后,使用 “sudo systemctl 重启 apache2” 重新启动 Apache Web 服务器并应用您的更改。
如果您按照所有步骤正确设置 APCu 以进行本地内存缓存,则 Nextcloud 服务器的性能将大幅提升!让我们更进一步,配置 Redis 以获得更多内存缓存优势。
设置内存缓存 – Redis
您可能想知道,“为什么我的 Web 服务器需要两个不同的内存缓存?一个还不够吗?”这个问题的答案其实很简单。就像商店里的每种工具都有自己的用途一样,APCu 和 Redis 也是如此。APCu 是一种出色的本地内存缓存,并且在此类别中的表现明显优于后者,而 Redis 在分布式缓存和事务文件锁定方面表现出色。
要开始使用 Redis,我们将通过输入以下代码来编辑系统 Redis 配置文件
“sudo nano /etc/redis/redis.conf” 进入控制台并按回车键。默认情况下,Redis 服务会监听 TCP 端口以进行缓存和事务文件锁定流量,但对于单个服务器设置,Unix 套接字是首选的通信方法。如果我们通过网络提供 Redis 服务,使用 TCP 端口是有意义的,但对于 Redis 和 Nextcloud Web 服务器进程之间的通信,Unix 套接字效率要高得多。
进入 nano 后,按住控制键 (ctrl) 并按“W”以激活 nano 的搜索功能。输入 “unixsocket” 在搜索栏中点击回车,nano 将跳转到 “Unix 套接字” 文件的配置部分。在 “Unix 套接字” 部分,删除 “#” 字符和前面的空格 “unixsocket /run/redis/redis-server.sock” 和 “unixsocketperm 700”。 改变 “700” 至 “770”,然后向上滚动,直到找到以下行 “端口 6379”。我们将此值更改为 “0”,有效地告诉 Redis 服务器不要在 TCP 端口上侦听连接。在使用 control (ctrl) + “O” 和 control (ctrl) + “X” 保存并退出文件之前,请查看下面的图片以验证您的配置文件。
通过对 Redis 系统配置文件进行这些修改,我们现在可以在 Nextcloud PHP 配置文件中指定要使用 Redis 进行分布式缓存和事务文件锁定。使用以下方法在 nano 中打开此文件 “sudo nano /var/www/html/nextcloud/config/config.php”.
在 Nextcloud PHP 配置文件底部以“)”结尾的括号之前,添加以下行,并密切注意间距和逗号:
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => '/run/redis/redis-server.sock', 'port' => 0, ],
如果您正确输入了这些行,则 PHP 配置文件的内存缓存部分应类似于以下代码片段:
在重新启动 Apache Web 服务器和 Redis 以应用更改之前,请使用 “sudo usermod -a -G redis www-data” 添加 “www 数据” 用户到 “redis” 组,授予 Web 服务器对 Redis Unix 套接字的访问权限。最后,输入 “sudo systemctl 重启 apache2 && sudo systemctl 重启 redis-server” 进入控制台并按回车键应用更改并重新启动受影响的服务。
将 Nextcloud 暴露到互联网
我们快完成了!部署 Nextcloud 服务器的最后一步是使其可访问公共互联网。此步骤要求您在路由器上配置端口转发,并且可能需要您进行一些研究。使用以下端口转发指南目录 https://portforward.com/router.htm 尝试找到路由器的制造商并阅读解决方案。如果您在列表中找不到路由器制造商或使用的是企业/自制路由器,则可能需要进行一些网络搜索,直到找到正确的方法。
配置端口转发时,从 Nextcloud 服务器的私有 IP 地址转发端口 80 和 443(可以使用 “主机名 -I” 命令)到路由器的公共 IP 地址。如果您的互联网服务提供商没有为您提供公共 IP 地址,您必须使用 Cloudflare 的 Tunnels 等服务,它允许您在您的 Web 服务器和 Cloudflare 的服务器之间创建一个安全隧道,将网站访问者的流量转发回您。
如果您拥有域名或使用主机名提供商提供的主机名,请确保您的 DNS 记录设置为指向您服务器的公共 IP 地址。或者,某些服务提供商可以完全隐藏您的 IP 地址,使网站访问者无法看到,并将数据从他们的服务器安全地传输回您的服务器。
维护和升级 Nextcloud
确保您的 Nextcloud 服务器具有最新更新和安全补丁是保持云存储快速安全的重要部分。在完成之前,让我们先介绍几种让您的服务器像新服务器一样运行的方法!
部署后命令
部署 Nextcloud 服务器后,您可能注意到在个人资料图片菜单中单击“管理设置”后,“概览”页面上会出现一些警告。有时,这些警告还包含可以运行以立即修复警告所针对问题的命令。通常,这些命令需要作为 “www 数据” 用户并从 “/var/www/html/nextcloud” 目录。类型 “cd /var/www/html/nextcloud” 并按回车键将当前工作目录更改为相应的文件夹,然后插入 “sudo -u www-数据” 在每个命令之前。
我们现在可以运行其中一些命令来修复这些警告,以免它们成为问题:
sudo -u www-data php occ db:添加缺少的列
sudo -u www-data php occ db:添加缺失索引
sudo -u www-data php occ db:添加缺少的主键
这些命令将确保数据库设置正确,并且不会遗漏任何关键信息。数据库好,生活就好!对吧?
保持 Ubuntu 服务器为最新版本
定期更新服务器的操作系统和软件包对于确保服务器的安全和快速运行非常重要。每周或每两周找出服务器使用率较低的时间段,然后运行以下命令:
sudo apt更新&& sudo apt升级-y
sudo重启
这些命令将升级服务器的操作系统和软件包,并重新启动服务器,以便在再次启动时应用更改。
升级 Nextcloud
由于 Nextcloud 不是使用包管理器安装的,因此使用 “易于” 不会自动将 Nextcloud 推送到下一个版本。要开始升级我们的 Nextcloud 服务器,我们需要点击网页右上角的管理员用户个人资料图片,然后从下拉菜单中选择“管理设置”。在“概览”页面上,我们可以看到有可用的升级 - 在本例中为版本 30.0.1。如果“概览”页面上没有出现更新选项,请不要担心,您已经拥有最新版本!请不时回来查看新版本何时可用。
一旦确定有可用更新并且已达到合适的升级窗口,请切换回服务器的控制台并输入以下命令:
须藤chown -R www-data:www-data / var / www
此命令将递归设置 “www 数据” 用户作为所有者 “万维网” 目录及其所有子目录和文件,确保升级过程可以访问和修改所需的任何文件。
该命令完成后,返回“管理设置”菜单下的“概览”页面,然后单击标有“打开更新程序”的按钮。这将带您进入“更新程序”菜单。
从这里,您可以点击“开始更新”按钮开始 Nextcloud 的更新验证和下载过程。如果一切正常,您应该会在“继续使用基于 Web 的更新程序”之前的每个步骤旁边看到绿色复选标记。
注意:如果更新过程在“下载”步骤失败,请重试下载直至成功。可能需要多次尝试。
当“更新程序”菜单中出现所有绿色复选标记时,点击标有“禁用维护模式并继续使用基于 Web 的更新程序”的按钮。在执行此操作后出现的屏幕上,点击“开始更新”以完成更新过程并开始应用它。
或者,按照较大或较慢的服务器页面的建议,您可以导航至 “nextcloud” 目录并使用以下命令在那里手动运行升级:
cd / var / www / html / nextcloud
sudo -u www-data php occ 升级
升级完成后,您将被重定向到 Nextcloud 服务器网站上的“仪表板”页面。您的服务器现在运行的是最新、最好的 Nextcloud 版本!
恭喜!你成功了!
您现在是功能齐全、坚固耐用且性能卓越的 Nextcloud 服务器的骄傲拥有者和运营商。如果您愿意,您现在可以邀请家人或朋友使用您的服务器进行云存储。请记住,Nextcloud 是一个高度模块化的平台,因此不要害怕尝试新应用程序或更改配置以满足您的需求!请务必尽快设置服务器的定期备份,并密切关注一切以确保一切正常。
作者的 Nextcloud 设置概览
哇,您已经读完了所有这些内容,还想阅读更多内容吗?请相信我们,您一定印象深刻!如果您正在寻找一些灵感,这里有一个快速浏览和一些作者的 Nextcloud 设置的图片:
- 硬件:
- 虚拟化服务器:
- 操作系统:Proxmox 虚拟化环境
- 机箱:Supermicro SC216,带可选的后部冗余启动驱动器笼
- 处理器:Intel Xeon E5-2683
- 内存:4x 32 GB DDR4 2400 MHz ECC RDIMM
- 主板:技嘉 MU70-SU0(LGA 2011-3)
- HBA:Broadcom SAS 9305-24i
- 网卡:Intel X520-DA2 双端口 2 GbE SFP+ 适配器
- 显卡:NVIDIA Quadro K1200
- 启动驱动器:2 个 Samsung 850 EVO 120 GB SATA SSD
- 数据驱动器:24 个 Samsung 860 EVO 250 GB SATA SSD
- NAS:
- 操作系统:TrueNAS SCALE
- 机箱:HPE ProLiant MicroServer Gen10 Plus
- 处理器:英特尔至强E-2224
- 内存:2x 16 GB DDR4 2666 MHz ECC UDIMM
- HBA:内置 HPE Smart Array E208i-p SR Gen10 控制器
- NIC:HPE 以太网 560SFP+ 2 端口 10 GbE SFP+ 适配器
- 启动驱动器:Micron M600 256 GB SATA SSD(USB 连接)
- 缓存驱动器:2x Samsung 860 EVO 250 GB SATA SSD(USB 连接)
- 数据驱动器:4 个 WD Red Plus 4 TB 5400 RPM HDD
- 备份驱动器:WD Red Pro 14 TB 7200 RPM HDD(USB 连接)
- 调制解调器:
- 网件CM1200
- DOCSIS 3.1
- 4x 1 GbE RJ45 WAN 端口(兼容 2 端口链路聚合)
- 路由器:
- 操作系统:pfSense
- 机箱:戴尔 OptiPlex 7040 SFF
- CPU:Intel Core i5 6500
- RAM:8 GB DDR4
- NIC:Intel E1G44ET 4 端口 1 GbE RJ45 适配器
- 启动驱动器:2 个 Samsung 860 EVO 250 GB SATA SSD
- 核心交换机:
- 戴尔网络 N4032F
- 24 个 10 GbE SFP+ 端口
- 2 个 40 GbE QSFP+ 端口
- 1 GbE 管理端口
- 接入交换机:
- 戴尔网络 X1052
- 48 个 1 GbE RJ45 端口
- 4 个 10 GbE SFP+ 端口
- 接入点:
- 操作系统:OpenWRT
- Linksys EA8300 最大流
- AC2200
- MU-MIMO
- Wi-Fi 5(802.11ac)
- 1 个 1 GbE RJ45 LAN 端口
- 4 个 1 GbE RJ45 LAN 端口
- UPS:
- CyberPower CP1500AVRLCD3
- 1500VA
- 900W
- 虚拟化服务器:
- 虚拟机:
- Proxmox 虚拟化环境:
- 2 个 Windows Server 2022 数据中心域控制器
- Ubuntu Server 24.04.1 Nextcloud 网络服务器
- Windows Server 2022 游戏服务器
- 真正的 NAS 规模:
- Proxmox 备份服务器备份目标
- Proxmox 虚拟化环境:
Andrew 使用他的 Nextcloud 服务器为亲人托管数据存储服务。通过使用 Active Directory 域与冗余域控制器、NAS(用于保存所有用户数据)和虚拟化服务器的组合,Andrew 优化了他的设置,以便在家中和任何有互联网连接的地方提供高性能存储服务。
他的设置的核心是 Dell Networking N4032F,它在他的 Proxmox VE 服务器和 TrueNAS SCALE 存储阵列之间提供 10 千兆位每秒的连接。数据、管理和存储流量被分成三个 VLAN,以便在发生违规时提供额外的安全性。他的接入交换机为他的游戏 PC、接入点和其他各种设备提供标准的 1 千兆位每秒的连接。所有服务器和虚拟机都由运行 Ubuntu Server 和 Uptime Kuma 实例的 Raspberry Pi Model 3B+ 监控。一旦服务器/虚拟机出现故障,Andrew 就会收到电子邮件通知,如果发生断电,只要 UPS 报告电量不足,服务器就会正常关闭。
Andrew 还使用 Supermicro 24 托架 2U 机箱和从 eBay 和其他“可疑”来源获得的零件定制了他的虚拟化服务器。在 ZFS RAIDZ2 配置中,这个仅由消费级驱动器组成的 24 个 SSD 阵列可以为虚拟机提供大约 8.2 GB/秒的读取操作吞吐量和 2.7 GB/秒的写入操作吞吐量,如在 Windows Server 2022 VM 上测量的那样:
数据存储展上的真正明星是 Andrew 的 HPE ProLiant MicroServer Gen10 Plus,它装有四个 WD Red Plus 4 TB 硬盘,并通过 USB 3.2 Gen2(10 Gbps)和 Gen1(5 Gbps)随意连接到 Micron SSD 以启动 TrueNAS、WD Red Pro 14 TB 硬盘用于备份存储,以及另外两个三星 860 EVO SSD 用于缓存。需要说明的是,Andrew 不建议这样做,但他喜欢利用他拥有的硬件尽可能地发挥其潜力。朋友们,在任何情况下,这里都绝对不能保证 XNUMX 个 XNUMX 的可靠性。
其他值得注意的设备包括一台改装的 Dell OptiPlex 7040 SFF PC,它运行 pfSense 为他的家庭实验室的各个子网提供路由服务,以及 Netgear CM1200 调制解调器,出于某种原因,它出人意料地支持链路聚合。我们是否提到过,每个服务器数据连接(1 或 10 GBps)都是故障冗余的?这将允许 Andrew 的存储系统在特定条件下以 20 Gbps 的速率双向共享数据,同时进行多个连接。如果他有合适的驱动器,就可以接近这个目标!
结语
我们希望您能从这个冗长但详细的 Nextcloud 设置指南中找到一些价值。做事有困难往往有好处,并且了解更多有关云存储工作原理的信息总是好的。如果您还没有这样做,请订阅 StorageReview 新闻通讯 获取更多服务器、存储系统和家庭实验室文章,并在 YouTube、TikTok、X(以前称为 Twitter)或 Instagram 上关注我们!
参考文献/来源:
- https://www.linode.com/docs/guides/how-to-install-nextcloud-on-ubuntu-22-04/
- https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html
- https://docs.nextcloud.com/server/latest/admin_manual/contents.html
- 各种页面
- https://www.php.net/manual/en/ini.core.php
- https://nextcloud.com/
- https://ubuntu.com/download/server
- https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04
- https://snapcraft.io/install/core/ubuntu
- https://docs.clamav.net/manual/Usage
- 各种页面
- https://docs.nextcloud.com/server/latest/admin_manual/configuration_user/user_auth_ldap.html
- https://docs.nextcloud.com/server/30/admin_manual/configuration_files/external_storage/smb.html
- https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html
- https://www.php.net/manual/en/intro.apcu.php
- https://www.php.net/manual/en/apcu.configuration.php
- https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/
参与 StorageReview
电子报 | YouTube | 播客 iTunes/Spotify | Instagram | Twitter | TikTok | RSS订阅