如何在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.crt
和 apache.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 网站。
应用程序的第一页是仪表板。 它向您显示启用和运行的内容以及一些基本统计信息,例如用户、日历和联系人的数量。
创建用户是一个三击过程。
- 在页面顶部,点击链接用户和资源
- 现在点击右边的按钮,+ 添加用户
- 填写所有字段,然后单击保存更改按钮
注意:服务器端对用户名的格式没有任何要求,但是如果用户名看起来不像电子邮件地址,一些客户端可能会抱怨,例如: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
作为您的主机名。