因华为、苹果手机经常切换混用,手机通讯录在双端的同步,就有了需求,搜索后,无非就几类解决方案:

  1. 双端均安装通讯录同步软件。
  2. 通过iCloud的CardDAV在华为端同步iCloud通讯录。
  3. 自建CardDAV服务器,在双端同步同一通讯录。

方案1,首先就被我pass掉了,每一个软件都有一颗往大了、往强了做的心,如果仅仅只是专注做一个功能,仿佛不能体现他的水平一样,非要集成一堆堆功能一堆堆广告。
方案2,看起来,这应该是最合适的一个方案,无需做过多配置即可实现,且与原某一生态下的账号信息可以保持同步,很是完美。但是在我进行配置时,通过DavX5无法获取到iCloud的通讯录信息,创建也总是出现无法链接Apple的xxx-contacts.icloud.com服务器,因此该方案作罢。
方案3,实现起来门槛相对较高,需要有服务器,而且iOS必须要支持ssl,就很恶心。起始时我是部署在通过TP-Link的DDNS出来的家庭电脑上,结果因无法ssl,更换为本博服务器。


来自MoeLove

提供CardDAV能力的挺多,援引MoeLove整理图片,Nextcloud、Owncloud什么的都可以,最终网络上介绍较多、上手参考较多的Radicale,成为了我的选择。
以下,为部署过程的记录,如果谁有需求,可以参照处理。所有的部署过程,都基于宝塔面板,因为作为一个小白,其他方式也不会处理了。

一、使用宝塔网站-Python项目管理进行Radicale配置

宝塔提供相对完善的网站管理能力,只需要点点点,基本上就可以完成配置,以下内容主要以图片为主,关重内容做文字说明。


图1 宝塔网站管理


图2 Python-版本管理


图3 添加Python项目


图4 进入Radicale设置


图5 Radicale日志查询

二、排错


图6 报错缺少encodings

排错调试这个地方是让人很心烦的,第一个问题就让我很是费解,部署上运行,总是出现No module named 'encodings',但是通过直接进虚拟环境起Python后import encodings又可以识别,查了老半天网络上的说法,也没解。后边想到之前部署过一次网站,是通过单独安装的Python项目管理器2.5弄的,会不会是环境冲突。于是,卸载里边的虚拟环境、卸载管理器、重启,算是解决了这个问题。


图7 报错缺少vobject

但是随后,又出现了其他报错提示,这次又是No module named 'vobject',依赖各种缺。好在这次通过进虚拟环境重新pip install vobject直接解决。不知道是宝塔的不完善还是怎么地,迁移前边老管理器的项目时,也出现了类似问题,命名选了安装依赖,仍然需要重新pip install -r requirements.txt,这个可以注意以下。


图8 报错No package metadata


图9 报错unable to find "application"


图10 错误修改

随后的几个错误,应该都是通过同一个地方引起的,在选择项目所在位置后,Python项目管理器会自动完善uwsgi的信息,其中应用名称处默认为app,但是这个app应该有问题。我通过修改项目目录内创建的uwsgi.ini文件内callable=appcallable=application,解决了以上问题。


图11 成功运行

见到WSGI app 0 (mountpoint='') ready字样,服务成功跑起来。

于是,你可以通过http://IP:port或者http://domain:port访问Radicale的WEB管理页面。

三、配置反向代理

以上的完成后,你就可以进行最基本的访问了,但是使用IP带端口或者域名带端口的形式访问,多少还是存在不方便。
下一步,就是通过配置实现不带端口的访问。


图12 PHP项目管理


图13 添加PHP项目


图14 PHP项目配置


图15 PHP项目列表


图16 配置反向代理

四、配置SSl实现HTTPS


图17 进入ssl配置


图18 完善ssl

标签: Radicale, iOS安卓通讯录, 通讯录互通

添加新评论