如何在 Ubuntu 18.04 上安装和配置 Nextcloud
介绍
Nextcloud 是 ownCloud 的一个分支,是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在一个集中的位置,就像 Dropbox 一样。 Nextcloud 的不同之处在于它的所有功能都是开源的。它还将敏感数据的控制权和安全性还给您,从而消除了对第三方云托管服务的使用。
在本教程中,我们将在 Ubuntu 18.04 服务器上安装和配置 Nextcloud 实例。
先决条件
为了完成本指南中的步骤,您需要具备以下条件:
- 服务器上配置的 sudo 用户和防火墙:您可以创建具有
sudo
权限的用户,并按照 Ubuntu 18.04 初始服务器设置指南设置基本防火墙。 - (可选)指向您的服务器的域名:我们将使用 TLS/SSL 保护与 Nextcloud 安装的连接。如果您打算使用 Let's Encrypt,Nextcloud 可以通过如何为您的服务器设置域名来设置和管理免费、可信的 SSL 证书。
完成上述步骤后,继续学习如何在服务器上设置 Nextcloud。
步骤 1 – 安装 Nextcloud
我们将使用 snappy 打包系统安装 Nextcloud。这个打包系统默认在 Ubuntu 18.04 上可用,它允许组织在一个独立的单元中发布软件以及所有相关的依赖项和配置,并自动更新。这意味着我们可以安装自动处理底层系统的 snap
包,而不是安装和配置 Web 和数据库服务器,然后配置 Nextcloud 应用程序在其上运行。
要下载 Nextcloud snap
包并将其安装在系统上,请键入:
- sudo snap install nextcloud
Nextcloud 包将被下载并安装在您的服务器上。您可以通过列出与 snap
关联的更改来确认安装过程是否成功:
- snap changes nextcloud
OutputID Status Spawn Ready Summary
2 Done today at 16:12 UTC today at 16:12 UTC Install "nextcloud" snap
状态和摘要表明安装已完成,没有任何问题。
获取有关 Nextcloud Snap 的其他信息
如果您想了解有关 Nextcloud snap
的更多信息,可以使用一些命令。
snap info
命令可以向您显示描述、可用的 Nextcloud 管理命令,以及已安装的版本和正在跟踪的 snap 频道:
- snap info nextcloud
Snap 可以定义它们支持的接口,其中包括一个插槽和一个插头,当它们连接在一起时,可以让 snap 访问某些功能或访问级别。例如,需要充当网络客户端的快照必须具有 network
接口。要查看此快照定义的快照“接口”,请键入:
- snap interfaces nextcloud
OutputSlot Plug
:network nextcloud
:network-bind nextcloud
- nextcloud:removable-media
要了解此 snap 提供的所有特定服务和应用程序,您可以通过键入以下内容来查看 snap 定义文件:
- cat /snap/nextcloud/current/meta/snap.yaml
如果您需要调试方面的帮助,这将允许您查看快照中包含的各个组件。
配置管理帐户
您可以通过几种不同的方式配置 Nextcloud 快照。在本指南中,我们不会通过 Web 界面创建管理用户,而是在命令行上创建一个,以避免任何访问您服务器 IP 地址或域名的人都可以访问管理员注册页面的小窗口。
要使用新的管理员帐户配置 Nextcloud,请使用 nextcloud.manual-install
命令。您必须传入用户名和密码作为参数:
- sudo nextcloud.manual-install sammy password
以下消息表明 Nextcloud 已正确配置:
OutputNextcloud is not installed - only a limited number of commands are available
Nextcloud was successfully installed
现在 Nextcloud 已经安装,我们需要调整受信任的域,以便 Nextcloud 将响应使用服务器的域名或 IP 地址的请求。
调整信任域
从命令行安装时,Nextcloud 会限制实例将响应的主机名。默认情况下,该服务仅响应对“localhost”主机名发出的请求。我们将通过服务器的域名或 IP 地址访问 Nextcloud,因此我们需要调整此设置以接受这些类型的请求。
您可以通过查询 trusted_domains
数组的值来查看当前设置:
- sudo nextcloud.occ config:system:get trusted_domains
Outputlocalhost
目前,只有 localhost
作为数组中的第一个值出现。我们可以通过键入以下内容为我们的服务器的域名或 IP 地址添加一个条目:
- sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.com
OutputSystem config value trusted_domains => 1 set to string example.com
如果我们再次查询受信任的域,我们将看到现在有两个条目:
- sudo nextcloud.occ config:system:get trusted_domains
Outputlocalhost
example.com
如果您需要添加另一种访问 Nextcloud 实例的方式,您可以通过使用递增的索引号(第一个中的“1”)重新运行 config:system:set
命令来添加其他域或地址命令)并调整 --value
。
使用 SSL 保护 Nextcloud Web 界面
在我们开始使用 Nextcloud 之前,我们需要保护 Web 界面。
如果您有一个与您的 Nextcloud 服务器关联的域名,Nextcloud 快照可以帮助您从 Let's Encrypt 获取和配置受信任的 SSL 证书。如果您的 Nextcloud 服务器没有域名,Nextcloud 可以配置一个自签名证书,该证书将加密您的网络流量,但无法验证您服务器的身份。
考虑到这一点,请按照下面与您的情况相匹配的部分进行操作。
选项 1:使用 Let's Encrypt 设置 SSL
如果您有一个与 Nextcloud 服务器相关联的域名,那么保护您的 Web 界面的最佳选择是获取 Let's Encrypt SSL 证书。
首先在防火墙中打开 Let's Encrypt 用于验证域所有权的端口。这将使您的 Nextcloud 登录页面可公开访问,但由于我们已经配置了管理员帐户,因此没有人能够劫持安装:
- sudo ufw allow 80,443/tcp
接下来,通过键入以下内容请求 Let's Encrypt 证书:
- sudo nextcloud.enable-https lets-encrypt
首先会询问您的服务器是否满足从 Let's Encrypt 服务请求证书的必要条件:
OutputIn order for Let's Encrypt to verify that you actually own the
domain(s) for which you're requesting a certificate, there are a
number of requirements of which you need to be aware:
1. In order to register with the Let's Encrypt ACME server, you must
agree to the currently-in-effect Subscriber Agreement located
here:
https://letsencrypt.org/repository/
By continuing to use this tool you agree to these terms. Please
cancel now if otherwise.
2. You must have the domain name(s) for which you want certificates
pointing at the external IP address of this machine.
3. Both ports 80 and 443 on the external IP address of this machine
must point to this machine (e.g. port forwarding might need to be
setup on your router).
Have you met these requirements? (y/n)
输入 y 继续。
接下来,系统会要求您提供用于恢复操作的电子邮件地址:
OutputPlease enter an email address (for urgent notices or key recovery): your_email@domain.com
最后,输入与您的 Nextcloud 服务器关联的域名:
OutputPlease enter your domain name(s) (space-separated): example.com
将请求您的 Let's Encrypt 证书,如果一切顺利,内部 Apache 实例将重新启动以立即实施 SSL:
OutputAttempting to obtain certificates... done
Restarting apache... done
您现在可以直接跳过以首次登录 Nextcloud。
选项 2:使用自签名证书设置 SSL
如果您的 Nextcloud 服务器没有域名,您仍然可以通过生成自签名 SSL 证书来保护 Web 界面。此证书将允许通过加密连接访问 Web 界面,但无法验证您的服务器的身份,因此您的浏览器可能会显示警告。
要生成自签名证书并配置 Nextcloud 以使用它,请键入:
- sudo nextcloud.enable-https self-signed
OutputGenerating key and self-signed certificate... done
Restarting apache... done
以上输出表明 Nextcloud 生成并启用了自签名证书。
现在界面是安全的,打开防火墙中的 Web 端口以允许访问 Web 界面:
- sudo ufw allow 80,443/tcp
您现在已准备好首次登录 Nextcloud。
登录到 Nextcloud Web 界面
现在 Nextcloud 已经配置好了,在你的网络浏览器中访问你服务器的域名或 IP 地址:
https://example.com
注意:如果您设置了自签名 SSL 证书,您的浏览器可能会显示连接不安全的警告,因为服务器的证书不是由公认的证书颁发机构签署的。这是自签名证书的预期结果,因此请随时单击警告以继续访问该站点。
由于您已经从命令行配置了管理员帐户,您将被带到 Nextcloud 登录页面。输入您为管理用户创建的凭据:

单击登录按钮登录到 Nextcloud Web 界面。
第一次进入时,将显示一个窗口,其中包含指向各种 Nextcloud 客户端的链接,这些客户端可用于与您的 Nextcloud 实例进行交互和管理:

单击以下载您感兴趣的任何客户端,或单击右上角的 X 退出窗口。您将被带到 Nextcloud 主界面,您可以在其中开始上传和管理文件:

您的安装现已完成并受到保护。随意浏览界面以更加熟悉新系统的特性和功能。
结论
Nextcloud 可以复制流行的第三方云存储服务的功能。内容可以在用户之间共享,也可以通过公共 URL 在外部共享。 Nextcloud 的优点是信息安全地存储在您控制的地方。
探索界面和其他功能,使用 Nextcloud 的应用商店安装插件。