如何在Ubuntu14.04上使用CardDAV和CalDAV标准与Baïkal同步日历和联系人

来自菜鸟教程
跳转至:导航、​搜索

介绍

随着越来越多的人使用多种设备(智能手机、计算机、平板电脑等),使所有事物保持同步的需求不断增长。

虽然同步 文件 很重要,但能够以原始格式同步日历和联系人也很有用。

CalDAV 和 CardDAV 标准提供了一种简单的方法,可以让我们所有的智能事物与我们正在做的事情保持同步,以及如何联系我们的朋友和其他联系人。 在本教程中,我们将向您展示如何使用 Baïkal、PHP CalDAV 和 CardDAV 服务器的超级简单安装,从您控制的服务器同步日历和联系人。

注意: 如果您正在寻找一体化解决方案,您可能需要查看 ownCloud

注意: Baïkal 快速简单,但并非真正为大规模部署而设计。 如果您希望为中型或大型企业同步日历和联系人,此解决方案可能不适合您。

先决条件

请确保您具备这些先决条件。

  • Fresh Ubuntu 14.04 Droplet,带有 SSH 访问
  • 一个 sudo 用户
  • Baïkal 指令强烈建议为服务器设置一个域,最好是一个子域。 本教程将使用域名dav.example.com。 您可以使用 dav.yourdomain.com。 如果您使用 Digital Ocean 托管您的 DNS,这篇文章 可以帮助您设置该子域

我们还将安装 Baïkal 需要的一些软件包; 我们将使用 SSL 证书; 我们将在文章本身中进行设置。 如果您想购买 SSL 证书,您应该为您的 Baïkal 服务器的域或子域购买它。

第 1 步 — 安装贝加尔湖

首先,我们将安装一些必需的软件包,下载 Baïkal 的 tarball,然后解压缩。

在下面的示例中,我们使用的是最新版本的 Baïkal,在撰写本文时它是 0.2.7,但我们建议在您之前仔细检查最新的 版本的 Baïkal开始吧。 要查找最新版本,请访问 Baïkal 网站,然后单击 下载以开始使用 按钮,或向下滚动到 Get Baïkal 部分。 如果有更新版本,复制【X60X】普通包【X79X】的下载链接。

要开始使用,您需要通过 SSH 连接到您的 Ubuntu Droplet。

现在让我们安装 Baïkal 需要运行的包。 我们假设这是一个全新的 Ubuntu 安装,所以在我们从 repos 安装一些包之前,我们需要使用 apt-get update 更新 repo 缓存。

sudo apt-get update

安装一些必备软件包:PHP、Apache 和 SQLite。

sudo apt-get install apache2 php5 php5-sqlite sqlite3

注:在Baïkal安装文件中,作者注明Apache可以换成Nginx,SQLite可以换成MySQL。

现在我们已经拥有了让 Baïkal 工作所需的部分,让我们安装 Baïkal! 由于 Baïkal 是一个 PHP 网站,我们将在 Apache 站点目录 /var/www 中下载并解压它。

cd /var/www
sudo wget http://baikal-server.com/get/baikal-regular-0.2.7.tgz
sudo tar -xvzf baikal-regular-0.2.7.tgz

注意: 对于那些想知道我们刚刚告诉 tar 做什么的人:x = extract, [ X113X] = verbose,z = unzip,和f = file,后跟文件姓名。

最后一步,Baïkal 将 安装 。 由于我们已经提取了 PHP 应用程序,我们不再需要 tar 文件,因此我们将删除它,将提取的文件夹重命名为更相关的名称,然后确保它对 Apache 用户可读和可写。

sudo rm baikal-regular-0.2.7.tgz
sudo mv baikal-regular dav.example.com
sudo chown -R www-data:www-data dav.example.com

注意: 您可以随意命名文件夹,但如果您打算托管多个站点,则使用网站名称作为网站文件夹更容易识别站点。

第 2 步 — 设置 Apache

我们的应用程序已安装,现在我们需要告诉 Apache。 为了简单起见,Baïkal 实际上包含了它自己的 Apache 配置文件作为模板。 我们将该文件复制到 Apache sites-available 目录,然后对其进行编辑以适合我们的站点。

sudo cp /var/www/dav.example.com/Specific/virtualhosts/baikal.apache2 /etc/apache2/sites-available/dav_example_com.conf

使用您喜欢的文本编辑器,打开 dav_example_com.conf 文件并将所有 URL 更改为使用您自己的 URL,以及您存储站点的路径。 这是它的样子:

sudo nano /etc/apache2/sites-available/dav_example_com.conf
<VirtualHost *:80>
    DocumentRoot /var/www/dav.example.com/html
    ServerName dav.example.com

    RewriteEngine On
    RewriteRule /.well-known/carddav /card.php [R,L]
    RewriteRule /.well-known/caldav /cal.php [R,L]

    <Directory "/var/www/dav.example.com/html">
        Options None
        Options +FollowSymlinks
        AllowOverride All
    </Directory>
</VirtualHost>

现在我们需要一个 SSL 证书

您可以创建或购买您的证书。 我们假设您按照链接的 SSL 教程进行操作,并且您的密钥和证书位于 /etc/apache2/ssl 目录中,名为 apache.crtapache.key。 请酌情将这些替换为您自己的证书和密钥的路径。

现在我们需要告诉 Apache 如何使用 SSL 证书。 为此,我们需要将默认 SSL 配置文件 (default-ssl.conf) 与我们的 Baïkal 配置文件结合起来,并将其命名为 dav_example_com-ssl.conf。 下面是一个例子,它会是什么样子,所有的评论都被删除了。

sudo nano /etc/apache2/sites-available/dav_example_com-ssl.conf
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/dav.example.com/html
        ServerName dav.example.com

            RewriteEngine On
            RewriteRule /.well-known/carddav /card.php [R,L]
            RewriteRule /.well-known/caldav /cal.php [R,L]

        <Directory "/var/www/dav.example.com/html">
            Options None
            Options +FollowSymlinks
            AllowOverride All
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

我们正处于最后阶段。 我们已经安装了站点并创建了适当的 Apache 配置。 现在我们需要告诉 Apache 启用 rewrite 模块,启用站点,然后最后重新启动以加载新设置。

sudo a2enmod rewrite
sudo a2ensite dav_example_com
sudo a2ensite dav_example_com-ssl
sudo service apache2 restart

第三步——配置贝加尔湖

我们在命令行上要做最后一件事,其余的可以在 Web 浏览器中完成。 Baïkal 使用一个名为 ENABLE_INSTALL 的文件来启用安装的最后一步。 在我们打开网络浏览器之前,让我们确保这个文件存在。 如果文件不存在,我们将使用 touch 创建文件,如果文件已经存在,我们所做的就是更新修改日期。

sudo touch /var/www/dav.example.com/Specific/ENABLE_INSTALL

就是这样! 我们准备打开浏览器并完成贝加尔湖的设置。 在您喜欢的浏览器中导航到 https://dav.example.com

到达那里后,您将看到一个带有选项的屏幕。 使用下拉菜单设置您的时区,创建一个新的管理员密码(您必须输入两次),并将其他所有内容保留为默认设置。

单击保存更改按钮。

在下一个屏幕上,您可以选择默认 SQLite 设置或启用 MySQL 支持。

如果您选择使用 MySQL,则可以启用该支持。 (使用 MySQL 作为后端会给这个工具更大的容量和更高的性能,但如果这个 DAV 服务器只是为您、您的家人和朋友或小型企业服务,那么 SQLite 应该就可以了。)

对于本示例,我们将启用 SQLite 默认值,并单击此页面上的 Save changes 按钮。

然后你会看到 Start using Baïkal 的选项; 单击此按钮。

您将被带到贝加尔湖主页。

注意:如果你看到默认的Apache网站而不是你的Baïkal网站,你需要禁用默认的Apache网站并重新启动Apache。 事情现在应该开始工作了。

sudo a2dissite 000-default.conf
sudo service apache2 reload

第 4 步 — 创建用户

完成初始设置后,剩下的就是创建一个用户,然后连接您的客户端以开始同步。

要创建用户,请使用用户名 admin 和您在上述配置步骤中设置的密码登录 Baïkal 网站。

应用程序的第一页是仪表板。 它向您显示启用和运行的内容以及一些基本统计信息,例如用户、日历和联系人的数量。

创建用户是一个三击过程

  1. 在页面顶部,点击链接用户和资源
  2. 现在点击右边的按钮,+ 添加用户
  3. 填写所有字段,然后单击保存更改按钮

注意:服务器端对用户名的格式没有任何要求,但是如果用户名看起来不像电子邮件地址,一些客户端可能会抱怨,例如:sammy@example .com

故障排除

如果您遇到任何问题,例如您的管理员密码未被接受,那么您可以运行一些命令来重置应用程序,让您重新设置它。 为此,您需要通过 SSH 连接到您的 Droplet 以运行以下命令。

除非您想重置服务器,否则不要这样做。

cd /var/www/dav.example.com/Specific/
sudo rm config*.php
sudo touch ENABLE_INSTALL

现在您可以跳回 Web 浏览器并再次通过应用程序设置向导,希望这次一切正常。

结论

恭喜! 您已经安装了带有 GUI 控制面板的 CalDAV 和 CardDAV 同步服务器。 此时,您可以将客户端配置为连接到服务器。 这样做时,请使用 https://dav.example.com 作为您的主机名。