如何在Debian 9上安装和配置Nextcloud

介绍

Nextcloud是ownCloud的一个分支,它是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在集中位置,就像Dropbox一样。与Nextcloud的不同之处在于它的所有功能都是开源的。它还会将敏感数据的控制权和安全性返回给您,从而无需使用第三方云托管服务。

在本教程中,我们将在Debian 9服务器上安装和配置Nextcloud实例。

准备

要完成本教程中的步骤,您需要具备以下条件:

  • 在服务器上配置了sudo用户和防火墙:您可以按照Debian 9初始服务器设置教程创建具有sudo权限的用户并设置基本防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • (可选)指向服务器的域名:我们将使用TLS / SSL保护与Nextcloud安装的连接。如果您有域名,保护您网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。可根据腾讯云SSL证书安装操作指南进行设置。如果没有,Nextcloud可以设置可以加密连接的自签名SSL证书,但在Web浏览器中默认不受信任。

完成上述步骤后,继续学习如何在服务器上设置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
ID   Status  Spawn               Ready               Summary
1    Done    today at 20:18 UTC  today at 20:18 UTC  Install "nextcloud" snap

状态和摘要表明安装完成没有任何问题。

获取有关Nextcloud Snap的其他信息

如果您想了解有关snapNextcloud的更多信息,可以使用一些有用的命令。

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

snap info nextcloud

Snaps可以定义它们支持的接口,它们包含一个插槽和插头,当它们连接在一起时,可以快速访问某些功能或访问级别。例如,需要充当网络客户端的快照必须具有network接口。要查看此快照定义的快照“接口”,请键入:

snap interfaces nextcloud
Slot           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:

Nextcloud 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
localhost

目前,只有localhost作为数组中的第一个值出现。我们可以通过输入以下内容为我们服务器的域名或IP地址添加条目:

sudo -i nextcloud.occ config:system:set trusted_domains 1 --value=example.com
System config value trusted_domains => 1 set to string example.com

如果我们再次查询受信任的域,我们将看到我们现在有两个条目:

sudo -i nextcloud.occ config:system:get trusted_domains
localhost
example.com

如果需要添加另一种访问Nextcloud实例的方法,可以通过使用递增的索引号(第一个命令中的“1”)重新运行config:system:set命令并调整--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服务请求证书所需的条件:

In 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继续。

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

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

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

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

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

Attempting to obtain certificates... done
Restarting apache... done

您现在可以跳过,第一次登录Nextcloud。

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

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

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

sudo nextcloud.enable-https self-signed
Generating 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的应用商店安装插件。

想要了解更多关于安装和配置Nextcloud的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install and Configure Nextcloud on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Centos6.5安装配置nginx

出现如下代码: nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is...

11330
来自专栏企鹅号快讯

用不到 100 行的 Golang 代码实现 HTTP 代理

我们的目标是实现一个能处理 HTTP 和 HTTPS 的代理服务器。代理 HTTP 请求的过程其实就是一个解析请求、将该请求转发到目的服务器、读取目的服务器响应...

51780
来自专栏IT可乐

邮件实现详解(二)------手工体验smtp和pop3协议

  上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍。我们知道电子邮件需要在邮件客户端和邮件服...

436100
来自专栏魏艾斯博客www.vpsss.net

腾讯云 CDN 和 lnmp1.4 环境安装 Let’s Encrypt 免费证书教程

29430
来自专栏网络

一步步带你了解前后端分离利器之JWT

一、HTTP的无状态性 HTTP 是无状态协议,它不对之前发送过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。假设要求登录认证的 ...

35550
来自专栏linux运维学习

linux学习第四篇:克隆虚拟机以及两台linux机器相互登录

克隆虚拟机 1.      克隆 ? ? ? 之后自己命名克隆的虚拟机并自己选择存放位置,完成克隆 2.      克隆虚拟机之后对新的虚拟机修改网络配置,以免...

20290
来自专栏北京马哥教育

SSH协议详解

一、 前言 使用SSH可以在本地主机和远程服务器之间进行加密地传输数据,实现数据的安全。而OpenSSH是SSH协议的免费开源实现,它采用安全、加密的网络连接...

1K40
来自专栏不想当开发的产品不是好测试

Git SSH Key 生成步骤

Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。 github的SSH配置如下: 一 、 设置Git的us...

23380
来自专栏康怀帅的专栏

Let's Encrypt SSL 证书配置详解

首先确保你的网站是可以访问的( nginx 配置好 80 端口),申请证书时 let's Encrypt 会访问网站上的某一文件来确认网站归属(当然也可以通过 ...

51640
来自专栏北京马哥教育

批量管理自动化运维100台小规模服务器

---- 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命...

2.3K150

扫码关注云+社区

领取腾讯云代金券