使用 ownCloud 同步您的生活

作者:Mike Diehl

和现在大多数家庭一样,我们家也非常忙碌。我们有四个男孩,他们有各种活动和约会。我和我的妻子都有自己的事业和业余活动。多年来,我们一直使用 eGroupware 来帮助协调我们的日程和管理联系人。eGroupware 系统长期以来一直为我们提供良好的服务。然而,它开始显得有些老旧。作为一个基于 Web 的群件系统,它已经相当完善,但与 Kontact 或 Thunderbird 相比还是相形见绌。此外,我的妻子发现她需要从她的 Android 手机访问她的日历,而 eGroupware 对于移动设备来说不太友好。当然,我们可以设置日历同步,但 eGroupware 似乎是将同步功能作为事后添加的,而且它实际上并没有我们期望的那么好用。

因此,我开始寻找一个新的群件系统,它可以让我们从智能手机、Web 浏览器或我们最喜欢的桌面 PIM 无缝访问我们的日历和联系人。当然,我们可以简单地将我们所有的信息上传到 Google 服务器。然而,我可能有点偏执,但我就是不想让外部公司拥有个人信息,比如我的朋友是谁,我妻子的玉米面包食谱,或者我下周二下午 3:00 要做什么;这根本不关他们的事。通过托管我自己的群件服务器,我可以维护我的隐私,并且不必担心服务中任意的更改。

ownCloud 系统具有日历、地址簿、任务管理器、书签管理器和文件管理器等功能。这些服务可以从任何 Web 浏览器访问。此外,ownCloud 还支持 calDAV、cardDAV 和 webDAV 标准,因此与其他客户端同步应该非常直接。

在实践中,存在一个小的学习曲线,但是同步效果非常好。ownCloud 系统还允许您集成第三方模块(应用程序)以添加功能。可用的应用程序提供了音乐和视频流媒体、文件加密、电子邮件以及现有功能的增强。

为了安装 ownCloud,您需要 PHP、Web 服务器和数据库服务器。安装文档将引导您完成配置 Apache、Lighttpd、Nginx、Yaws 或 Hiawatha Web 服务器以用于 ownCloud 的过程。对于数据库服务器,您可以从 MySQL、PostgreSQL 或 SQLite 中选择。很难找到一个不满足这些要求的系统。

安装过程文档齐全,因此我在这里不会赘述太多细节。基本上,您将 tarball 下载并解压到 Web 服务器的 htdocs 目录下的一个子目录中。然后,您进行手册中指示的 Web 服务器配置更改并重启 Web 服务器。

基本上,您正在设置权限并启用 cgi 执行。完成此操作后,您可以使用 Web 浏览器指向新的安装并按照安装向导进行操作。我故意忽略了一些文件权限更改,向导通知我权限不正确。安装过程真的非常简单。

完成所有安装后,您将无法访问新的 ownCloud 安装。要解决此问题,您必须编辑 ./config/config.php 并注释掉 trusted_domains 行。这是一个安全设置,用于确定客户端可以从哪些域连接,默认情况下,它仅限制对 localhost 的访问。我认为默认值有点过于严格。

安装完成后,使用 Web 浏览器指向您的 ownCloud 服务器并登录。您将看到一个页面,类似于图 1 中所示。正如您所看到的,界面很简单。从这里,您可以访问日历、联系人管理器、任务列表等等。所有工具都很直观易用,但不够完善,不足以让您每天都使用它们。其目的是让您将您最喜欢的 PIM 指向服务器,并将其用作访问您的共享信息的界面。

图 1. ownCloud Web 界面

初始配置应该按特定的顺序进行。由于我最初的目的是仅仅测试这个系统,我设法以错误的顺序完成了所有操作。如果我知道我最终会把这个系统作为永久解决方案使用,我会对它的初始实施投入更多的思考。我最终仍然得到了一个可用的系统,但我使事情变得比本应更复杂且更难管理。让我分享一下我做错了什么以及如何做得更好。

一旦您以管理员用户身份登录,您就应该开始创建用户和组。首先,我会创建组。您需要为每个需要独特访问能力的用户组创建一个组。例如,我为我们整个家庭创建了一个组,并为我们的每个企业创建了一个单独的组。这样,当我创建一个日历或地址簿时,我可以将其仅共享给我的公司组,而我的妻子不必在她的 PIM 上看到它。我最初犯了一个错误,只是简单地创建了一个家庭组并将所有内容共享给它。但是,当我为孩子们创建一份家务清单时,我发现他们也可以看到我公司的日历,这不是我想要的。这个故事的寓意是花时间并尽可能保持您的组的细粒度,因为同一组中的用户可以看到共享给它的所有内容。创建组后,您可以创建用户并将他们从选择列表中分配到适当的组。在我的例子中,我先创建了用户,然后我不得不回去将他们分配到组,这很乏味。

接下来,您应该开始创建日历。我以为我很聪明,以管理员用户身份登录并创建一个家庭日历、我们每个企业的日历以及每个家庭成员的私人日历。这听起来很合理,直到您发现每个用户在创建时都会获得自己的默认日历,而现在这个日历是多余的。因此,使用管理帐户创建实体日历和地址簿,但让您的每个用户自己共享他们的资产。

然后,创建一个共享文档文件夹。这是一个非常简单的过程。但是,我建议一旦您创建了共享空间,您也要尽可能多地创建您可以合理预见的目录结构。否则,您最终会得到一个大杂烩,当他们需要时没有人能够找到任何东西,这会破坏共享文件空间的目的。

这个项目的目标之一是从 LAN 或 Internet 访问系统。为了使它从 LAN 端工作,我登录到我的路由器(它运行的是 OpenWRT),并配置了一个静态主机名,它很乐意为网络上的每个 DNS 客户端提供服务。然后,我去了我的 DNS 注册商,并配置了相同的 FQDN,但使用了我路由器的外部 IP 地址。然后,只需配置 iptables 将 TCP/80 端口转发到托管 ownCloud 的机器即可。反向代理可能更安全,但这效果很好。

我已经成功地将我的 ownCloud 与 Kontact、Thunderbird、Evolution、我的 Android 手机和我们的 iPad 同步。

Kontact 是最容易设置的。为了配置地址簿同步,您只需创建一个新的 cardDAV 地址簿,并将其指向 http://server.example.com/owncloud/remote.php/carddav/。Kontact 会很高兴地发现您的登录名有权访问的每个共享地址簿。类似地,通过创建一个 calDAV 日历并将其指向 http://server.example.com/owncloud/remote.php/caldav/,您将能够一步到位地配置所有日历。

Thunderbird 和 Evolution 是接下来最容易配置的客户端。但是,在这些情况下,您必须将客户端指向每个单独的资产。例如,如果您有一个名为“family”的日历,您必须将这些客户端指向 http://server.example.com/owncloud/remote.php/caldav/calendars/username/family/。您必须为您要同步的每个日历和地址簿执行此操作。

更糟糕的是,如果资产是由另一个用户共享的,则 URL 的结构会发生变化。幸运的是,ownCloud 会告诉您每个资产的正确 URL 是什么。要获取此信息,只需编辑资产。您将看到一个看起来像地球的图标。如果您单击该图标,您将获得正确的 URL。

为了使 iPad 同步,您只需在设置下的“邮件、联系人、日历”中创建一个帐户,并将其指向上面提到的相同 URL。即使对于像我这样的非 Apple 用户来说,也很容易使其工作。我没有 iPhone,但我假设过程是相同的。

同步到 Android 设备需要额外的软件。对于联系人同步,我使用了“CardDAV-Sync free beta”。对于日历同步,我使用了“Caldav Sync Free Beta”。一旦软件安装完成,您只需在设置下为每个应用程序创建一个相应的帐户。但是,您必须像对 Thunderbird 和 Evolution 那样,将软件指向各个资产。但是,有两个潜在的陷阱。默认情况下未启用自动同步,因此您必须先启用它并执行初始同步,然后才能看到您的日历和联系人。此外,Android 日历应用程序支持多个日历,但您必须选择要显示的日历。拥有一个完美运行但只是没有打开的同步系统是没有任何好处的,不要问我怎么知道的。

ownCloud 网站表明有一个自定义客户端可用,售价 0.99 美元。我安装它以查看它的工作原理。我有点失望地发现它只是一个 webDAV 客户端。我想我曾希望它是一个集成的日历、联系人和文件客户端。但是,一旦配置完成,我就能够直接从我的 Android 设备将文件共享到我的 ownCloud 服务器上的文件空间。我发现客户端偶尔会丢失其配置,并且必须重新配置,这有点乏味。否则,ownCloud 客户端几乎完善了 ownCloud 的所有同步功能。

我说“几乎”是因为 ownCloud 还提供了一个 Firefox 浏览器同步功能。此功能应该允许您跨多台计算机同步您的书签和浏览器历史记录。但是,在最新版本的 Firefox 中,无法将 Firefox 指向 ownCloud 服务器。也许这将在下一次升级中修复。

一旦一切都配置好,就会出现一些操作问题。显而易见的问题源于同时对资产进行更改。这会导致冲突,不同的客户端以不同的方式处理冲突。为避免问题,只需在修改资产之前同步资产,然后在您的更改完成时重新同步。这将确保每个人在其客户端上都有每个资产的相同版本。

我还发现将资产从一个日历或地址簿移动到另一个日历或地址簿非常困难。各种客户端似乎在这方面做得不好。到目前为止,我组织联系人的尝试导致了不同地址簿中的重复联系人。我认为解决方案是将有问题的资产添加到类别中,导出该类别中的资产,删除该类别中的资产,然后将资产重新导入到适当的日历或地址簿中。这似乎是绕远路,所以我打算暂时不这样做,直到我确定没有更简单的方法可以做到这一点。

其余的困难涉及文件安全性。第一个问题是,当用户将文件上传到他或她的云空间时,该文件将归 Web 服务器用户所有。如果您不想直接从文件系统或通过 Samba 共享访问该文件,这没问题。在这些情况下,您要么必须更改 Web 服务器运行的用户名称,要么更改 Samba 服务器用于访问文件的名称。无论哪种方式,您仍然无法直接访问文件。我尚未决定是否以及如何打算解决这个问题。我可能会通过 Samba 共享或 NFS 挂载来访问文件。

ownCloud 系统支持服务器端加密,可以按用户开启和关闭。在我看来,这会导致的问题比它带来的价值更多。例如,当用户加密他或她的文件,然后与不加密的用户共享目录时会发生什么?我知道您会收到来自 ownCloud 的警告,但我没有花时间去弄清楚实际会发生什么,因为我偶然发现了另一个问题。服务器端加密几乎完全破坏了除 webDAV 之外的任何可能的文件访问方式。我想这就是服务器端加密的重点,但它不适用于我想要/需要访问文件的方式。我最终关闭了加密并解密了我现有的文件,ownCloud 为我无缝地完成了这项工作。

更好的解决方案可能是使用像 Encfs 这样的加密文件系统来保护您的文件。使用此解决方案,您仍然可以使用 Samba 和 NFS 访问文件系统上的明文文件。此外,您还可以将加密文件上传到另一个云提供商(例如 Dropbox),作为备份文件的手段,而不会泄露您的隐私。

我发现 ownCloud 是一个功能强大且易于管理的同步服务器。实际安装过程非常简单,因此我在这篇文章的大部分篇幅中指出了尽可能多的潜在陷阱。现在我已经正确配置了它,我能够与我的其他家庭成员共享日历、联系人和文件,无论他们在哪里或他们选择使用什么客户端……而且我保持对我信息的完全控制。

加载 Disqus 评论