在 Ubuntu 16.04 上安装和配置 ownCloud

什么是ownCloud?

您是否曾经使用过在线协作工具或与同事、家人或朋友共享文件? 您可能使用电子邮件发送这些文件,或者使用在线编辑器同时处理电子表格或文本文档。

但是您是否考虑过这些专用服务器平台背后的安全性? 谁在保护您的数据,还有谁可以访问它? 您如何确定内容已正确加密,以便只有预期的接收者才能看到它,而远离心怀不满的员工、流氓代理人、第三方数据挖掘者或政府机构的窥探? 许多人希望对谁能够看到他们的敏感数据进行一定程度的控制,这就是 ownCloud 发挥作用的地方。

OwnCloud 是一个开源的自托管云存储、文件共享和协作工具。 它安装在服务器上,可以在服务器本身或许多其他预先存在的存储位置(例如 Amazon S3、FTP 存储库或网络文件系统)上存储加密或未加密的数据。

OwnCloud 可通过 Web 门户或通过桌面和移动设备的许多可用客户端中的任何一个进行访问。 它具有可控的共享和访问级别,甚至可以通过插件和应用程序使用新功能进行扩展!

ownCloud安全吗?

OwnCloud 提供出色的安全产品。 它支持 HTTPS 并提供服务器端加密。 此外,默认情况下,每个用户都有一个在创建帐户时生成的唯一公钥/私钥对。 这些私钥是加密的,因此如果没有密码,如果文件在磁盘上加密,则数据可能完全无法访问。

使用 ownCloud 市场中的应用程序可以进一步增强所有内置安全性。 默认情况下,加密和解密发生在服务器端,但使用端到端加密 (E2EE) 插件,可以将加密和解密转移到 Web 浏览器以实现高级传输安全性。 作为 ownCloud 登录过程的一部分,甚至还有应用程序可以为帐户添加双重身份验证!

所有这一切都与您的 ownCloud 安装设置在您自己的私有服务器上这一事实相结合,您可以控制所有访问。 您实施的任何服务器级安全性,例如 SSH 安全性、文件系统加密、AppArmor/SELinux 或用户空间限制,只会增强数据的安全性!

安装的先决条件

在撰写本文时,ownCloud 的最新版本是 10.0.x。 在 Ubuntu 16.04 上,系统要求是:

  • MySQL 5.5+
  • Apache 2.4
  • PHP 5.6-7.2

要在全新的 Ubuntu 16.04 安装上安装此 LAMP 堆栈,您将运行以下命令。 这些将安装 Apache 2.4、PHP 7.0 和 PHP-FPM 作为其默认处理程序,以及 MySQL 5.7:

apt-get install apache2
apt-get install php php-curl php-gd php-intl php-json php-xml php7.0-fpm php7.0-opcache php-mbstring php-mysql php-zip php-mcrypt php-bz2 libapache2-mod-php
apt-get install mysql-server mysql-client

最后一条命令将要求您设置 MySQL 服务器的 root 密码。 确保你把它做得非常安全,并把它写在安全的地方! 我们稍后在安装 ownCloud 时会用到它。

现在安装了所有与 LAMP 相关的东西; 让我们继续进行基本配置和启用服务:

a2enmod ssl
systemctl restart apache2
systemctl enable apache2
mysql_secure_installation
systemctl restart mysql
systemctl enable mysql

一般保护您的服务器并调整每个服务的参数超出了本文的范围,但这些步骤至少可以让我们启动并运行,以便可以安装 ownCloud。 请确保保护您的安装并添加您此时可能使用的任何其他程序。

OwnCloud 还建议使用缓存工具,例如 Redis 或 Memcache。 我们将在下面的安装后解决 Redis。

在基本的 Ubuntu 安装中需要最后一项才能让 ownCloud 的存储库正常工作:

apt-get install apt-transport-https

安装ownCloud

我们敢打赌,您认为您不会那么容易地安装 LAMP 堆栈! 现在我们的服务器已经设置了ownCloud的所有先决条件,让我们添加存储库并安装程序。

wget -qnv https://download.owncloud.org/download/repositories/production/Ubuntu_16.04/Release.key -O- | apt-key add -
echo 'deb https://download.owncloud.org/download/repositories/production/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud.list
apt-get update
apt-get install owncloud-files
chown -R www-data:www-data /var/www/owncloud

该应用程序现已安装,但仍需要通过 Apache. 让我们制作我们的虚拟主机文件。 将以下内容插入一个名为 /etc/apache2/sites-available/owncloud.conf.

<VirtualHost *:80>
        ServerName owncloud.mydomain.com
        DocumentRoot /var/www/owncloud/
        <Directory “/var/www/owncloud/”>
                   Options +FollowSymLinks
                   AllowOverride All
                   SetEnv HOME /var/www/owncloud
                   SetEnv HTTP_HOME /var/www/owncloud
        </Directory>
        <Directory “/var/www/owncloud/data/”>
                   Require all denied
        </Directory>
</VirtualHost>

确保您的 服务器名称 变量更改为您希望用于 ownCloud 的域名。 此时为该域或子域设置 DNS 也是一个非常好的主意,因为您可能希望通过名称而不是 IP 访问服务器!

完成后,我们启用站点,测试配置并重新加载 Apache.

a2ensite owncloud
a2dissite 000-default
apache2ctl -t
systemctl restart apache2

设置ownCloud

我们快到了! 只需为 ownCloud 做更多的配置。 现在该网站已加载到 Apache,并且假设我们如上所述为我们的域设置了 DNS,我们应该能够导航到我们的服务器以完成安装的图形部分。

这将需要我们提供更多关于要使用的数据库和在服务器上存储数据的位置的信息。 让我们先创建数据库。 这两个命令都会提示您输入安装该服务时选择的 MySQL root 密码。

mysqladmin -u root -p create owncloud_db
mysql -u root -p -e ‘grant all privileges on owncloud_db.* to owncloud_user@localhost identified by “reallygoodpassword”’

确保您使用一个非常好的密码而不是“reallygoodpassword”。 你不应该再需要这个密码了,所以你应该让它变得非常复杂和难以猜测! 此外,您不应为 ownCloud 使用“root”MySQL 用户和密码,因为该系统的破坏会导致您的所有其他数据库都可以访问。 这只是良好的安全实践,这就是安装 ownCloud 的全部意义所在。

现在,我们可以将此数据库信息输入到安装程序的适当位置:

  • 数据库用户:owncloud_user
  • 数据库密码:您真正的好密码
  • 数据库名称:owncloud_db

最后,如果您希望将 ownCloud 文件存储在站点的文档根目录之外,我建议您这样做以确保数据安全,您应该在其他地方的服务器上创建一个文件夹并将所有权授予 www-data 用户,以便 Apache 可以访问它。

mkdir /owncloud
chown www-data:www-data /owncloud

现在您可以更改安装程序中的“数据文件夹”行 /var/www/拥有云/数据/owncloud,我们刚刚创建的文件夹。

最后,我们可以点击’f完成设置‘ 为 ownCloud 编写配置。

安装后任务

我们现在应该可以登录我们的全新安装了! 现在让我们登录,并进行一些安装后的配置。 主屏幕顶部的加号可让您创建文件夹并将文件添加到当前文件夹。

尝试在此处添加文件以确保存储正常工作。 如果有问题,它应该在安装过程中告诉你,但检查一下也无妨。 您还可以翻阅存储在此主文件夹中的 ownCloud 手册,以熟悉系统的其他一些功能。

设置系统 Cron

接下来,我们应该进行一些效率改进。 将 ajax cron 移入系统 cron 是很好的第一步。 通过单击任何屏幕右上角的用户名,前往设置菜单。

ownCloud 中的一项效率改进是通过选择将 ajax cron 移动到系统 cron admin 然后设置。

在此区域中,我们将选择 ‘一般的‘标签下’行政‘ 从左侧(第二个,带有齿轮图标)。

为了提高 ownCloud 的效率,我们将选择左侧“管理”下的“常规”选项卡。

页面顶部可能有一些关于安全和设置的警告。 别担心,我们应该能够解决这些说明中的所有这些错误。 前往此页面,前往 Cron 区域。

owncloud_cron-min

这里的默认选择是“AJAX”,它在每次页面加载时运行一次 cron 任务。 效率不是很高。 将此移至“Cron”选项,您必须为其设置系统 cron。 回到你的终端窗口,像这样编辑 www-data 用户的 crontab。

crontab -u www-data -e

在这个文件中,我们将添加以下行,它将每 15 分钟执行一次 cron.php 文件。

*/15  * * *  * /usr/bin/php -f /var/www/owncloud/cron.php

Save 这个文件并退出,crontab 现在应该自动工作了。 如果您有不同的 PHP 二进制位置,或者您的系统需要使用 PHP-CLI,请务必使用它而不是此处列出的完整路径。 您可以运行哪个 PHP 来确认 PHP 二进制文件的位置。

配置缓存

当您进入设置区域时,您可能会在屏幕顶部看到的警告之一是告诉您使用基于内存的事务文件锁定。 这可以在其中之一中完成 三种方式,但最简单的是使用 Redis,因为它同时处理文件缓存和内存缓存。 安装和设置它只需要几个命令。

apt-get install redis-server php-redis
systemctl restart php7.0-fpm
systemctl reload apache2

通过运行快速命令来测试安装。

php -m | grep redis

现在已经安装好了,我们需要在 ownCloud 配置中添加几行,它存储在 /var/www/owncloud/config/config.php. 这里已经有很多行了,其中大部分都封装在一个 PHP 数组中。 我们需要在该数组中添加另一个元素来告诉ownCloud Redis 可用,以及在哪里可以访问它。 在“版本”行下方,插入另一行,其中包含以下文本(每行前面的空格不太重要,它们只是为了便于阅读)。

'memcache.local' => 'OCMemcacheRedis',
  'redis' => [
  'host' => 'localhost',
  'port' => 6379,
],
'memcache.locking' => 'OCMemcacheRedis',

不要忘记最后一个逗号! 现在,保存文件并刷新您的 admin 设置页面,警告应该消失。

添加 SSL

在您的服务器上处理私人文件时,您肯定会希望对您的站点数据进行端到端加密。 进行该设置的最简单(也是最便宜)的方法是打开 Let’s Encrypt 适用于您的 Ubuntu 系统。 安装过程如下所示。

add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-apache

现在我们有了 Let’s Encrypt的 certbot 安装后,我们需要添加一个 cron。

crontab -e

将以下行插入 root 的 crontab。

45 2 * * 6 /usr/bin/certbot renew && systemctl reload apache2

现在,我们可以为 ownCloud 安装设置 SSL! 这需要为您 ownCloud 域设置 DNS,因此请确保在继续之前已完成此设置。

certbot --apache -d owncloud.mydomain.com

如果这是您第一次运行 certbot,它会要求您提供一些关于您的信息以获取您的 Let’s Encrypt 帐户配置。 订单完成后,它还会询问您是否应该将所有流量重定向到 HTTPS; 你应该告诉它这样做。 程序完成后,您应该可以使用 ownCloud 设置重新加载浏览器页面,自动重定向到 HTTPS,并且 HTTPS 错误将消失。

进一步硬化

ownCloud 建议在安装上实施许多其他建议的安全设置,包括 HSTS 和 fail2ban,但并非所有安装都严格必要。 您可以阅读有关这些可选更改和整体服务器安全强化的更多信息 ownCloud网站.

现在可以认为安装完全完成了! 此时您可能希望添加任何 桌面或移动应用程序 到您的设备以随时随地访问您的 ownCloud 安装和 开新账户 对于您希望访问您的系统的任何其他用户。

不要等待保护您的敏感私人数据! 订购 Ubuntu Cloud 今天专用服务器开始安全地保护和共享您的文件!