介绍
Nextcloud是ownCloud的一个分支,它是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在集中位置,就像Dropbox一样。 与Nextcloud的不同之处在于它的所有功能都是开源的。 它还会将敏感数据的控制权和安全性返回给您,从而无需使用第三方云托管服务。
在本教程中,我们将在Debian 9服务器上安装和配置Nextcloud实例。
先决条件
要完成本指南中的步骤,您需要具备以下条件:
- 在服务器上配置了sudo用户和防火墙 :您可以按照Debian 9初始服务器设置指南创建具有
sudo
权限的用户并设置基本防火墙。 - (可选)指向服务器的域名 :我们将使用TLS / SSL保护与Nextcloud安装的连接。 如果您的服务器具有域名,Nextcloud可以从Let's Encrypt设置和管理免费的,可信的SSL证书。 如果没有,Nextcloud可以设置可以加密连接的自签名SSL证书,但在Web浏览器中默认不受信任。 如果您使用的是DigitalOcean,如果您打算使用Let's Encrypt,可以按照我们的指南来了解如何为您的服务器设置域名 。
完成上述步骤后,继续学习如何在服务器上设置Nextcloud。
第1步 - 安装Nextcloud
我们将使用snappy包装系统安装Nextcloud。 这个打包系统可以通过默认存储库安装在Debian 9上,允许组织在具有自动更新功能的独立单元中发布软件以及所有相关的依赖项和配置。 这意味着我们可以安装自动处理底层系统的snap
包,而不是安装和配置Web和数据库服务器,然后配置Nextcloud应用程序在其上运行。
要安装和管理snap
包,我们首先需要在服务器上安装snapd
软件包。 更新apt
的本地包索引,然后键入以下命令安装软件:
sudo apt update
sudo apt install snapd
接下来,要么注销又要重新登录,要么使用/etc/profile.d/apps-bin-path.sh
脚本来将/snap/bin
添加到会话的PATH
变量中:
source /etc/profile.d/apps-bin-path.sh
安装snapd
,您可以下载Nextcloud snap
包并通过键入以下内容将其安装到系统上:
sudo snap install nextcloud
Nextcloud软件包将下载并安装在您的服务器上。 您可以通过列出与snap
关联的更改来确认安装过程是否成功:
snap changes nextcloud
OutputID Status Spawn Ready Summary
1 Done today at 20:18 UTC today at 20:18 UTC Install "nextcloud" snap
状态和摘要表明安装完成没有任何问题。
获取有关Nextcloud Snap的其他信息
如果您想了解有关Nextcloud snap
更多信息,可以使用一些有用的命令。
snap info
命令可以显示描述,可用的Nextcloud管理命令,以及正在跟踪的已安装版本和快照通道:
snap info nextcloud
Snaps可以定义它们支持的接口,它们包含一个socket和插头,当它们连接在一起时,可以快速访问某些功能或访问级别。 例如,需要充当网络客户端的快照必须具有network
接口。 要查看此快照定义的快照“接口”,请键入:
snap interfaces nextcloud
OutputSlot Plug
:network nextcloud
:network-bind nextcloud
- nextcloud:removable-media
要了解此快照提供的所有特定服务和应用程序,您可以通过键入以下内容来查看快照定义文件:
less /snap/nextcloud/current/meta/snap.yaml
如果需要调试帮助,这将允许您查看快照中包含的各个组件。
配置管理帐户
您可以通过几种不同的方式配置Nextcloud snap。 在本指南中,我们不是通过Web界面创建管理用户,而是在命令行上创建一个管理用户,以避免出现一个小窗口,访问服务器的IP地址或域名的任何人都可以访问管理员注册页面。
要使用新的管理员帐户配置Nextcloud,请使用nextcloud.manual-install
命令。 您必须传入用户名和密码作为参数:
sudo -i 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 -i nextcloud.occ config:system:get trusted_domains
Outputlocalhost
目前,只有localhost
作为数组中的第一个值。 我们可以通过输入以下内容为我们服务器的域名或IP地址添加条目:
sudo -i nextcloud.occ config:system:set trusted_domains 1 --value=example.com
OutputSystem config value trusted_domains => 1 set to string example.com
如果我们再次查询受信任的域,我们将看到我们现在有两个条目:
sudo -i nextcloud.occ config:system:get trusted_domains
Outputlocalhost
example.com
如果您需要添加另一种访问Nextcloud实例的方法,可以通过重新运行config:system:set
命令并添加索引号(第一个命令中的“1”)并调整--value
来添加其他域或地址。
使用SSL保护Nextcloud Web界面
在我们开始使用Nextcloud之前,我们需要保护Web界面。
如果您的域名与Nextcloud服务器关联,则Nextcloud snap可以帮助您从Let的加密中获取和配置受信任的SSL证书。 如果您的Nextcloud服务器没有域名,则Nextcloud可以配置自签名证书,该证书将加密您的Web流量,但无法验证您的服务器的身份。
考虑到这一点,请按照下面符合您的方案的部分进行操作。
选项1:使用Let的加密设置SSL
如果您的域名与Nextcloud服务器相关联,则保护Web界面的最佳选择是获取Let的加密SSL证书。
首先打开防火墙中允许加密用于验证域所有权的端口。 这将使您的Nextcloud登录页面可公开访问,但由于我们已经配置了管理员帐户,因此没有人能够劫持安装:
sudo ufw allow "WWW Full"
接下来,输入以下内容来请求Let's Encrypt证书:
sudo -i 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 "WWW Full"
您现在已准备好第一次登录Nextcloud。
登录Nextcloud Web界面
现在已配置Nextcloud,请在Web浏览器中访问服务器的域名或IP地址:
https://example.com
注意:如果设置自签名SSL证书,则浏览器可能会显示连接不安全的警告,因为服务器的证书未由可识别的证书颁发机构签名。 这适用于自签名证书,因此请随意点击警告以继续访问该站点。
由于您已从命令行配置管理员帐户,因此您将进入Nextcloud登录页面。 输入您为管理用户创建的凭据:
单击“ 登录”按钮登录Nextcloud Web界面。
第一次进入时,将显示一个窗口,其中包含指向各种Nextcloud客户端的链接,这些客户端可用于与Nextcloud实例进行交互并对其进行管理:
单击以下载您感兴趣的任何客户端,或单击右上角的X退出窗口。 您将进入主Nextcloud界面,您可以在其中开始上传和管理文件:
您的安装现已完成且安全。 您可以随意浏览界面,以便更熟悉新系统的特性和功能。
结论
Nextcloud可以复制流行的第三方云存储服务的功能。 内容可以在用户之间共享,也可以在外部与公共URL共享 Nextcloud的优势在于信息安全地存储在您控制的位置。
浏览界面和其他功能,使用Nextcloud的应用商店安装插件。