Nextcloud 13:入门指南及理由
Nextcloud 可能是取代 Dropbox 和 Skype 等专有服务的第一步。
在其最简单的形式中,Nextcloud 服务器“仅仅”是 Dropbox 或 iCloud 等服务的个人免费软件替代品。您可以进行设置,以便您的文件始终可以通过互联网从任何地方访问,并与您的朋友分享。然而,Nextcloud 可以做的远不止这些。
在本文中,我首先描述 Nextcloud 服务器是什么,以及如何在 GNU/Linux 系统上安装和设置它。然后我解释如何配置可选的 Nextcloud 功能,这些功能可能是使 Nextcloud 成为当今许多现有专有平台(如 Dropbox、Facebook 和 Skype)的完整替代品外壳的第一步。

图 1. 所有设备都可以访问的数据安全家园——这就是 Nextcloud 想要成为的样子。
为什么选择 Nextcloud 而不是 ownCloud?Nextcloud 的 13 版本于 2018 年 2 月发布,它是 2016 年从流行的 ownCloud 项目中分拆出来的,原因是许可和其他分歧。请参阅“资源”部分,了解 Nextcloud 和 ownCloud 之间最全面的功能对比。分叉两年后,最基本的功能仍然几乎相同。然而,此处描述的某些功能比其前身更容易集成到 Nextcloud 中。此外,我个人推荐 Nextcloud 而不是 ownCloud 的原因是:
- 许可和定价政策:Nextcloud 的所有官方组件都是自由软件,并且是免费的(如啤酒)。您只需为支持和更新服务付费。ownCloud 则不然。
- 长期发展路线图:目前,ownCloud 似乎更注重企业客户,对投资者更具吸引力,而 Nextcloud 似乎更注重扩展“直接”用户对用户通信和协作功能。

图 2. 原始的 Nextcloud/ownCloud 功能:文件和图片存储,类似 Dropbox 的风格
关于安全性的说明选择 Nextcloud 作为您自己的文件和数据的在线家园的几个充分理由与安全性有关。在这篇介绍性文章中,我不会详细介绍它们,但我想至少提及其中一些。
Nextcloud 拒绝来自任何计算机的持续(即恶意的)身份验证尝试,除非这些计算机的 IP 地址包含在“暴力破解 IP 白名单”中。(当然,您可以配置的最佳白名单是空白名单。)
相反,内容安全策略 (CSP) 是 Nextcloud 服务器可能告诉浏览器的一种方式,例如“如果您在我页面的脚本中或从我页面链接的脚本中找到此脚本,请不要信任它。它一定是某些攻击者注入的!”
SAML(安全断言标记语言)是一种基于 XML 的开放标准,用于跨不同的独立服务器安全地单点登录 (SSO) 到基于 Web 的应用程序。Nextcloud 13 通过专用应用程序原生支持使用 SAML 的 SSO。如果您登录到您自己的 Nextcloud,那么您可以使用任何服务,在您拥有访问权限的任何其他启用 SAML 的网站上,而无需输入更多凭据。

图 3. 为安全单点登录配置 SAML 是一个精细的过程,但 Nextcloud 界面通过大量说明使其变得简单。
先决条件为了安装 Nextcloud,您需要基本的 Linux 管理技能、命令行操作的熟练程度和一些耐心。在软件方面,Nextcloud 服务器是一个 PHP 应用程序,需要 LAMP(Linux、Apache、MySQL、PHP)或类似的软件堆栈才能工作。您可以将其安装在几乎任何永久连接到互联网的设备上,从服务器机房的裸机到普通的 Web 托管帐户,甚至家庭迷你计算机(如 Raspberry Pi)。
Nextcloud 13 可以在不同的环境中运行,从共享托管帐户到使用 nginx 而不是 Apache 的服务器,或者作为 Ubuntu snap 包。官方推荐的配置(引用网站)“为了获得最佳兼容性,特别是如果您计划使用大量插件”,是 Apache 2.4 或更高版本,以及 MySQL 或 MariaDB 数据库。这就是为什么我将描述在运行 Ubuntu 16.04 LTS、PHP 7、Apache2 和 MariaDB 10.0 数据库的计算机上命令行安装 Nextcloud 13 服务器的原因。
该过程解释起来相对冗长,但这是值得的。Nextcloud 具有比我在此处描述的更多的功能和选项,您可以使用它来存储一些最敏感的文档和数据。因此,我强烈建议在实际将其暴露在互联网上之前,请务必在您的家庭 Linux 机器上尽可能多地使用它,即使这意味着从头开始重新安装几次。
而且,只有一种方法可以有效地完成所有这些测试:一种可以使用 shell 脚本完全自动化的安装方法。
安装和初始配置首先,获取所有必要的软件,因为 Nextcloud 13 依赖于多个软件包。对于 Ubuntu 16.04,您必须使用 apt-get
安装以下软件包
sudo apt-get install apache2 mariadb-server
↪libapache2-mod-php7.0
sudo apt-get install php7.0-gd php7.0-json php7.0-mysql
↪php7.0-curl php7.0-mbstring
sudo apt-get install php7.0-intl php7.0-mcrypt php-imagick
↪php7.0-xml php7.0-zip
(如果您的系统上已经安装了其中一些软件包,请不要担心,apt-get
只会跳到下一个软件包。)
之后,从网站下载 Nextcloud tarball,解压缩它,并将其复制到 Web 服务器文档根目录下的自己的文件夹中,在本例中为 /var/www/html/。
tar -xjf nextcloud-13.0.0.tar.bz2
sudo cp -r nextcloud /var/www/html/
准备数据库和 Web 服务器
在 Ubuntu 16.04 上(可能在大多数 Ubuntu 衍生版本上),除非已经存在一个非 root 的 MariaDB 帐户,但该帐户确实拥有创建新用户和数据库所需的所有权限,否则 Nextcloud 的命令行安装将无法工作。以下是如何创建一个这样的帐户(如果需要),名称为 dbadmin,密码为 dbadminpw(请注意,mdb 是我自己的 MariaDB 提示符,而不是默认提示符)
sudo mysql -u root
mdb>use mysql;
mdb>CREATE USER 'dbadmin'@'localhost' IDENTIFIED BY 'dbadminpw';
mdb>GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'localhost'
↪WITH GRANT OPTION;
mdb>FLUSH PRIVILEGES;
mdb>exit;
另一方面,Apache 需要一个专用的配置文件,在 Ubuntu 16.04 上是 /etc/apache2/sites-available/nextcloud.conf,以正确处理 Nextcloud。如果您的服务器是 example.com,并且您希望您的 Nextcloud 在 example.com/nextcloud 上可用,则该文件应如下所示
##########################################################
Alias /nextcloud "/var/www/html/nextcloud/"
# the following two directives are needed for picoCMS
ProxyPass /nextcloud/sites/ https://127.0.0.1/nextcloud/
↪index.php/apps/cms_pico/pico/
ProxyPassReverse /nextcloud/sites/ https://127.0.0.1/nextcloud/
↪index.php/apps/cms_pico/pico/
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
##########################################################
一旦该文件准备就绪,在提示符下键入以下命令以启用 Apache 也需要处理 Nextcloud 的模块
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod proxy_http
最后,以下是要键入的命令,使 Apache 用户拥有 Nextcloud 文件,启用上面显示的配置文件,最后重新启动 Apache
sudo chown -R www-data:www-data /var/www/html/nextcloud/
sudo ln -s /etc/apache2/sites-available/nextcloud.conf
↪/etc/apache2/sites-enabled/nextcloud.conf
sudo service apache2 restart
实际安装 Nextcloud
一旦 Web 和数据库服务器准备就绪,并且 Nextcloud 文件就位,实际的 Nextcloud 安装可以通过将浏览器指向 https://127.0.0.1/nextcloud(至少在我已经推荐的“本地测试”阶段)来完全完成。然而,正如承诺的那样,我将向您展示如何在命令行上继续操作。
这要归功于 Nextcloud 随附的名为 occ
(来自“ownCloud 控制台”)的 PHP 工具。要使用 occ
,请移动到 nextcloud 根目录,然后使用 Apache 服务器帐户(在本例中为 www-data)来保留文件和文件夹的正确权限,按如下方式运行它
cd /var/www/html/nextcloud/
sudo -u www-data php occ maintenance:install --database "mysql"
↪--database-name "mynextcloud" --database-user "dbadmin"
↪--database-pass "dbadminpw" --admin-user "nextcloudadmin"
↪--admin-pass "nextcloudadminpw"
如果一切顺利,occ
将退出并显示“Nextcloud 已成功安装”消息。此时,您最终将能够使用管理员帐户(“nextcloudadmin”)和密码“nextcloudadminpw”登录到 https://127.0.0.1/nextcloud 上的 Nextcloud。
使用 occ
,您还可以创建用户或启用以前下载的 Nextcloud 应用程序等。用于在 mycloudusers 组中创建一个名为 marco 的用户,显示名称为“Marco F”的 occ
等效 GUI 过程是
sudo -u www-data php occ user:add --display-name="Marco F"
↪--group="mycloudusers" marco
衡量和优化性能
Nextcloud 13 有一个选项卡,如图 4 所示,管理员可以快速了解它的负载情况。为了避免性能瓶颈,最简单的解决方案似乎是名为 OPcache 的内存缓存。要启用它,请按照 Nextcloud 管理/基本设置选项卡中的说明进行操作。您还可以安装 Redis 数据库以进行本地缓存和文件锁定。(有关详细信息,请参阅 “调整 Nextcloud 以获得最佳性能”。)
图 4. Nextcloud 13 实时 CPU 和内存负载监视器
Nextcloud 的真正力量在于其应用程序如果 Nextcloud 仅仅是 Dropbox 等文件托管服务的个人替代品,那就不算什么大事。然而,它的真正力量在于许多扩展或“应用程序”,它们提供了许多附加功能,通常是通过 Nextcloud 顶部栏中的额外按钮。图 5 仅部分展示了应用程序的多样性。

图 5. 工作、娱乐、管理、共享——Nextcloud 应用程序可以做很多事情。
要使用管理界面中未显示的应用程序,请下载并将其解压缩到 Nextcloud 安装的 apps 子文件夹中,然后使 Apache 用户成为其文件的所有者。之后,您只需使用 occ
或在 Nextcloud 界面中启用该应用程序。
在 Nextcloud 界面中,您还可以一键启用应用程序捆绑包,或限制选定用户组对大多数应用程序的访问权限。Nextcloud 13 中的应用程序捆绑包包括企业版、群件、社交共享和“教育版”。
超越文件:联邦、视频通话和 Web 发布即使您只需要在线托管文件,Nextcloud 也可以做的远不止提供一个用于保存这些文件的容器。首先,Nextcloud 服务器的所有用户都可以通过给他们一个链接(带或不带关联密码)与任何人共享单个文件或整个文件夹。同时,Nextcloud 管理员可以轻松阻止单个应用程序共享文件和数据,或者它可以只允许在用户组内共享文件。

图 6. 您如何从 Nextcloud 与其他 Nextcloud 实例的任何其他用户共享文件和文件夹的详细信息。
然而,真正有趣的是“联邦”。这个名称表示在一个无缝的“Nextcloud 云”中连接完全独立的服务器安装的能力。正是由于联邦,例如,您居住在不同州的所有亲戚都可以看到您托管在自己服务器中的相同照片库,就像他们自己 Nextcloud 服务器的本地文件夹一样——即使该文件夹不是公开的,并且他们都没有您服务器上的用户帐户。联邦的另一个常见用途是将多个服务器的用户配置文件合并到一个公共地址簿中。这使得所有这些用户更容易找到彼此,当他们开始键入其他用户的姓名时,他们的 Nextcloud 界面会自动完成姓名。
Nextcloud 的联邦相关功能可以从管理面板的“共享”选项卡访问。从那里,只需点击几下,您就可以定义用户是否以及如何与其他 Nextcloud 服务器共享他们自己的内容,查看这些服务器中的文件夹或访问“全局地址簿”。

图 7. Nextcloud 识别并自动完成其所有用户以及任何其他联邦 Nextcloud 的用户的地址。
用户目录的共享只能与您在同一选项卡中声明为“受信任”的服务器发生。本地地址簿与受信任服务器的同步通过您可以放入 cron 作业中的此 occ
命令进行
sudo -u www-data php occ federation:sync-addressbooks

图 8. 安排约会并邀请您的 Nextcloud 用户同伴?没问题。
嘿 Nextcloud,给我妈妈打电话轻松与远方的家人分享图片或与同事分享文档之后的下一步是什么?当然是在一个易于使用、注重隐私的环境中讨论它们。

图 9. 集成聊天的视频通话在 Nextcloud 13 中看起来非常有前景。
Nextcloud 的日历和用户配置文件的集成使得与他们安排在线会议变得轻而易举。当时间到来时,Nextcloud Talk 应用程序允许您聊天、进行音频或视频通话并共享您的屏幕,而无需安装任何软件(当然,除了现代浏览器,或 Nextcloud Android 或 iOS 应用程序,在桌面或智能手机上)。
聊天和通话都是点对点和端到端加密的,没有嵌入式广告,也没有任何中央组织记录一切。哦,用户会在浏览器或移动应用程序中收到即时通知,只要其他用户想与他们交谈,或对他们共享的某些文件发表了评论。
现在您明白我为什么说 Nextcloud 及其联邦可能是取代从 Dropbox 到 Skype 等专有平台的第一步了吗?
使用 Nextcloud 撰写博客通过博客或社交网络为大众提供在线自助出版,是当前仍然开放的网络的最大特性之一(当然,有时也是问题)。Nextcloud 13 服务器通过集成 picoCMS,即 pico 内容管理系统,提供了一种简单(如果基本)的方式来做到这一点。
picoCMS 通过将所有 Markdown 纯文本文件(扩展名为 .md)渲染为 HTML(带有菜单和所有内容),在某个预定义文件夹中找到这些文件来创建网站。在 Nextcloud 中,编辑 .md 文件的最佳工具是 Markdown 编辑器应用程序,因此如果您决定使用 picoCMS,请启用它。

图 10. Nextcloud Markdown 编辑器,及其可选的实时预览您输入的内容。
Nextcloud 用户可以在“设置”界面的 picoCMS 选项卡中独立定义包含源文件的文件夹和网站名称。在您自己的计算机上运行,此处显示的 Apache 配置将使 Nextcloud 在 URL https://127.0.0.1/nextcloud/sites/ljdemo/ 上提供名为“ljdemo”的 picoCMS 网站的首页。
为了让您的 Nextcloud 的所有用户在其中创建他们想要的所有 picoCMS 网站,下载 应用程序的压缩存档,并将其解压缩到运行 Nextcloud 的计算机上。然后将生成的文件夹 (cms_pico) 移动到 Nextcloud 的 apps 子文件夹中,更改其权限,并使用以下三个命令启用它
sudo mv -i cms_pico /var/www/html/nextcloud/apps/
sudo chown -R www-data:www-data /var/www/html/nextcloud/apps/cms_pico
sudo -u www-data php occ app:enable cms_pico
cms_pico enabled
(当然,您甚至可以将这些命令放入脚本中,以加快重新安装速度!)
下一步是告诉 Apache Web 服务器如何与 picoCMS 协作。已显示的 nextcloud.conf 文件中两个“ProxyPass”指令的含义是:“每当浏览器在 /nextcloud/sites/ 子文件夹中请求 URL 时,将该 URL 传递给 picoCMS,然后将您返回的任何内容传递给浏览器”。
请注意,这些 ProxyPass 设置使 picoCMS 仅发布在 Nextcloud 的某些文件夹中找到的内容作为网站。它们不会为这些网站的所有页面生成干净、简短的 URL。要获得该功能,您必须将 Nextcloud 面板的“管理→picoCMS”选项卡中包含的 MOD_REWRITE
建议调整为您的特定 Apache 配置。
一旦启动并运行,在 Nextcloud/picoCMS 环境中发布网页肯定不如使用 WordPress 等系统那么简单。
例如,在任何 Nextcloud 文件夹中添加新的 Markdown 文件的唯一方法(除了从桌面上传它们之外)似乎是复制和重命名已存在的文件。要将图形插入帖子中,您必须单独将其上传到“asset”子文件夹中,然后在 Markdown 源代码中指向它,如下所示。
如果这些麻烦对您来说不是问题,您可能会非常喜欢 Nextcloud/picoCMS 流程。Markdown 编辑器及其集成的预览效果很好,您编写的任何内容都会立即上线。作为一个实际示例,以下是在本地地址 https://127.0.0.1/nextcloud/sites/ljdemo/testing/ 处的此 index.md 文件的源代码、预览和渲染,该文件放置在 Nextcloud 文件夹 ljdemo/content/testing/ 中
#############################################################
Hello!
## This is a first test of Nextcloud/picoCMS integration
* Let's write a file with .md extension
* just to check what happens when we load it with a browser
We can also embed images previously uploaded in the "assets" subfolder:

############################################################

图 11. 这是您的 Nextcloud/picoCMS 网站首页可能的样子。
接下来是什么?很多!Nextcloud 似乎是一个集成各种在线服务的绝佳平台。在本文中,我解释了如何设置它,并试图提供其灵活性的概念,但是您可以使用它做更多的事情。在未来的文章中,我计划介绍如何与 Nextcloud 电子邮件集成、使用 Let's Encrypt 进行安全浏览以及使用 Etherpad 进行协作编辑。请继续关注!
资源- Nextcloud 源代码安装手册
- Nextcloud 官方应用程序目录
- 使用 Nextcloud 的命令行
- PicoCMS 安装和配置说明
- 调整 Nextcloud 以获得最佳性能
- Nextcloud “云技术比较”页面
- ownCloud 与 Nextcloud:云存储服务比较(2018 年 2 月)
- Nextcloud 与 ownCloud——完整故事(2018 年 2 月)
Marco Fioretti 自 1995 年以来一直是自由软件用户和作者,自由知识研究所的董事会成员,以及 Percloud 提案的作者,该提案旨在为 Facebook、Gmail 和类似服务提供真正可用的替代方案。