介绍
随着越来越多的人使用多个设备(智能手机,电脑,平板电脑等),保持每一件事情同步的需求不断增长。
虽然同步文件很重要,这也是很有用,能够同步日历和联系人在其原始格式。
CalDAV和CardDAV标准提供了一个简单的方法来保持我们的所有智能的东西与我们正在做的,以及如何抓住我们的朋友和其他联系人。 在本教程中,我们将向你展示如何从自己控制的服务器同步日历和联系人,使用一个超级简单的安装贝加尔 ,一个PHP的CalDAV和服务器的CardDAV。
注意:如果你正在寻找一个全功能于一身的解决方案,你可能想看看ownCloud代替。
注:贝加尔快速和容易的,但没有真正专为大规模部署。 如果您想让中型或大型企业的日历和联系人同步,此解决方案可能无法正常工作。
先决条件
请确保您具备这些先决条件。
- 新鲜的Ubuntu 14.04与DropletSSH访问
- 一个sudo的用户
- Baïkal说明强烈建议为服务器提供域,最好是子域。 本教程将使用域名
dav.example.com
。 您可以使用dav.yourdomain.com
。 如果用数字海洋托管DNS, 这篇文章可以帮助您设置子
我们还将安装一些Baïkal需要的软件包; 我们将使用SSL证书; 我们将在文章中设置它们。 如果要购买SSL证书,您应该为Baïkal服务器的域或子域购买。
第1步 - 安装Baïkal
要开始,我们将安装一些必需的软件包,下载Baïkal的tarball,然后解压缩。
在下面的例子中我们使用了最新版本的贝加尔,这在写作的时候是0.2.7,但我们建议您仔细检查最新版本贝加尔你开始之前。 要查找最新版本,去贝加尔湖站点,或者点击下载上手按钮,或向下滚动到获取贝加尔部分。 如果有新的版本,复制下载链接普通包 。
要开始,你需要SSH到你的Ubuntu Droplet。
现在让我们安装Baïkal需要运行的软件包。 我们假设这是一个新鲜的Ubuntu安装,这样才可以从我们需要更新与回购缓存回购安装一些软件包apt-get update
。
sudo apt-get update
安装一些必备软件包:PHP,Apache和SQLite。
sudo apt-get install apache2 php5 php5-sqlite sqlite3
注:在贝加尔安装文件,笔者注意到,Apache可以使用Nginx的和SQLite可以与MySQL进行更换更换。
现在我们有必要的碎片让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
= E X道,v
= V erbose,z
=联合国žIP和f
= F ILE,其次是文件名。
最后一个步骤和贝加尔将被安装 。 由于我们已经提取了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
)与我们的贝加尔配置文件,并将其命名为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
第3步 - 配置Baïkal
我们有最后一件事要在命令行上做,其余的可以在网络浏览器中完成。 贝加尔使用称为文件ENABLE_INSTALL
以使安装的最后一步。 在我们打开Web浏览器之前,让我们确保此文件存在。 我们将使用touch
创建文件,如果它不存在,如果它已经存在,我们所要做的就是更新修改日期。
sudo touch /var/www/dav.example.com/Specific/ENABLE_INSTALL
而已! 我们准备打开浏览器并完成Baïkal的设置。 在你喜欢的浏览器导航到https://dav.example.com
。
一旦你在那里,你会看到一个带有选项的屏幕。 使用下拉菜单设置您的时区,创建一个新的管理员密码(您必须输入两次),并留下其他所有的默认设置。
点击保存更改按钮。
在下一个屏幕上,您可以选择默认的SQLite设置或启用MySQL支持。
如果您选择使用MySQL,您可以启用该支持。 (使用MySQL作为后端将给这个工具更大的容量和更高的性能,但如果这个DAV服务器只为你,你的家人和朋友,或一个小企业,SQLite应该做的很好。)
在这个例子中,我们将离开启用SQLite的默认值,然后单击保存更改此页面上的按钮,太。
然后你就会看到使用贝加尔启动的选项; 单击此按钮。
你会被带到Baïkal主页。
注:如果您看到默认的Apache的网站,而不是你的贝加尔的网站,你需要禁用默认的Apache网站,并重新启动Apache。 事情应该开始工作了。
sudo a2dissite 000-default.conf sudo service apache2 reload
第4步 - 创建用户
运行初始设置后,剩下的就是创建一个用户,然后连接您的客户端以开始同步。
要创建一个用户,登录到使用用户名admin和密码,你上面的配置步骤中设置贝加尔网站。
应用程序的第一页是仪表板。 它显示了启用和运行的内容,以及一些基本统计信息,如用户数,日历和联系人数。
创建一个用户是三个点击的过程 。
- 在页面的顶部,点击链接的用户和资源
- 现在点击右边按钮,+新增用户
- 填写所有字段,然后点击保存更改按钮
注:有没有在服务器端为用户名的格式的任何要求,但如果用户名看起来并不像一个电子邮件地址,像一些客户可能会抱怨: sammy@example.com
故障排除
如果您遇到任何问题,例如您的管理员密码未被接受,那么您可以运行几个命令来重置应用程序,让您重新设置。 为此,您需要SSH回到您的Droplet以运行以下命令。
除非您要重置服务器,否则不要这样做。
cd /var/www/dav.example.com/Specific/
sudo rm config*.php
sudo touch ENABLE_INSTALL
现在,您可以回到网络浏览器,并再次通过应用程序设置向导,希望这一次一切正常。
结论
恭喜! 您已使用GUI控制面板安装了CalDAV和CardDAV同步服务器。 此时,您可以将客户端配置为连接到服务器。 这样做时,使用https:// dav.example.com
为您的主机名。