在 Ubuntu20.04 上安装配置私人网盘 nextcloud

前提条件

  1. 具有 sudo 权限的用户
  2. 具有 example.com 域名,并成功解析到当前 ip(可选)

安装 Nextcloud

这里使用 snap 包管理工具安装 Nextcloud,该打包系统可以安装自动处理底层系统的 snap 包,而不是安装和配置 Web 和数据库服务器,然后配置 Nextcloud 应用程序在其上运行,非常方便,适合不爱折腾的小白。

通过 snap install 安装

输入命令:

1
sudo snap install nextcloud

将下载 Nextcloud snap 包并将其安装在系统上。

通过 snap changes 查看

Nextcloud 软件包安装到服务器后,可以通过列出与 snap 关联的更改来确认安装过程是否成功:

1
snap changes nextcloud

获取 snap 其他信息

snap info 命令可以显示描述,可用的 Nextcloud 管理命令,以及正在跟踪的已安装版本和快照通道:

1
snap info nextcloud

使用 SSL 保护 Nextcloud Web 界面

在我们开始使用 Nextcloud 之前,我们需要保护 Web 界面。

如果您的域名与 Nextcloud 服务器关联,则 Nextcloud snap 可以帮助您从 Let 的加密中获取和配置受信任的 SSL 证书。 如果您的 Nextcloud 服务器没有域名,则 Nextcloud 可以配置自签名证书,该证书将加密您的 Web 流量,但无法验证您的服务器的身份。

选项 1:使用 Let 的加密设置 SSL

如果域名与 Nextcloud 服务器相关联,则保护 Web 界面的最佳选择是获取 Let 的加密 SSL 证书。

首先打开防火墙中允许加密用于验证域所有权的端口,将 Nextcloud 登录页面可公开访问,但由于已经配置了管理员帐户,因此没有人能够劫持安装:

1
sudo ufw allow 80,443/tcp

接下来,输入以下内容来请求 Let’s Encrypt 证书:

1
sudo nextcloud.enable-https lets-encrypt

首先会询问服务器是否满足从 Let’s Encrypt 服务请求证书所需的条件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 继续。

接下来,系统会要求提供用于恢复操作的电子邮件地址:

1
OutputPlease enter an email address (for urgent notices or key recovery): your_email@domain.com

最后,输入与 Nextcloud 服务器关联的域名:

1
OutputPlease enter your domain name(s) (space-separated): example.com

您的 Let’s Encrypt 证书将被请求,并且如果一切顺利,将重新启动内部 Apache 实例以立即实施 SSL:

1
2
OutputAttempting to obtain certificates... done
Restarting apache... done

到这里就说明设置成功 。

选项 2:使用自签名证书设置 SSL

如果您的 Nextcloud 服务器没有域名,您仍然可以通过生成自签名 SSL 证书来保护 Web 界面。 此证书将允许通过加密连接访问 Web 界面,但无法验证服务器的身份,因此您的浏览器可能会显示警告。

要生成自签名证书并配置 Nextcloud 以使用它,请键入:

1
2
3
sudo nextcloud.enable-https self-signed
OutputGenerating key and self-signed certificate... done
Restarting apache... done

以上输出表明 Nextcloud 生成并启用了自签名证书。

现在接口是安全的,打开防火墙中的 Web 端口以允许访问 Web 界面:

1
sudo ufw allow 80,443/tcp

您现在已准备好第一次登录 Nextcloud。

登录 Nextcloud Web 界面

现在已配置 Nextcloud,请在 Web 浏览器中访问服务器的域名或 IP 地址:

1
https://example.com

注意:如果设置自签名 SSL 证书,则浏览器可能会显示连接不安全的警告,因为服务器的证书未由可识别的证书颁发机构签名。 这适用于自签名证书,因此请随意点击警告以继续访问该站点。输入管理员帐户后将进入 Nextcloud 页面。