使用Radicale建立你的私有日历和联系人同步服务器

换手机了,发现新手机完全不能兼容google play,看log是少一个权限无法申请。不知道是不是google单方面ban了华为,或者华为单方面ban了google。不管怎么样我想要同步我的google账号上的日历和联系人是不可能了。

就在我导出google日历和联系人的时候,我又开始在想那个问题了:数据不在自己的手上,有一天可能就找不回来了。能不能自己搭建一个私有云呢?说到私有云我立刻想到了Nextcloud,但是看到Nextcloud的各种php、数据库还有http服务器依赖之后我觉得太麻烦了——我的需求是日历同步,Nextcloud一套上来过于复杂了,而且不够轻量。

于是我找到了Radicale这个开始于学校作业的项目。这个项目基本上可以在任何能运行Python的地方运行。它支持的CalDAV协议。这种协议的客户端的话,PC上的邮件和日历app基本都支持这个协议,我用的是thunderbird。手机上的话,貌似华为不能直接支持这种协议,得装个DAVx5

安装和配置Radicale

我决定把Radicale直接建在我的手机的termux里面。安装很简单。apt加上pip就行了。

apt install python
python -m pip install --user --upgrade radicale

然后给Radicale单独准备一个目录存放配置文件、密码文件

mkdir ~/radicale
mkdir -p ~/radicale/collecetions  # 将来用于存放用户目录
vim ~/radicale/config.ini  # 编辑配置文件
vim ~/radicale/users.txt   # 编辑用户名和密码

配置文件可以一切从简。在用户验证的部分,既可以使用简单的明文密码(plain),也可以借助openssl生成加盐的密码(md5)。

# /data/data/com.termux/files/home/radicale.ini
[server]
# 监听所有网络接口
hosts = 0.0.0.0:5232
[auth]
type = htpasswd
htpasswd_filename = /data/data/com.termux/files/home/radicale/users.txt
# 如果使用简单的明文密码
htpasswd_encryption = plain
# 如果使用加盐的密码
#htpasswd_encryption = md5
[storage]
filesystem_folder = /data/data/com.termux/files/home/radicale/collections

如果使用明文密码,那么users.txt可以直接用vim编辑:

user1:user1_passwd
user2:user2_passwd

如果使用加盐的密码,那么得安装一个依赖,以及openssl工具用来生成加盐密码:

python -m pip install --user --upgrade passlib
apt install openssl openssl-tool

接着使用openssl passwd -apr1就可以生成加盐密码了。把 openssl 命令打印在屏幕上的东西替换掉原来的明文密码文件users.txt中的密码部分就可以了。别忘了配置文件中htpasswd_encryption要设置成md5。

测试和使用

使用下面的命令来启动Radicale

python -m radicale --config ~/radicale/config.ini

然后转到http://127.0.0.1:5232,使用刚刚创建的用户名和密码登录。点击“ Create new addressbook or calendar ”创建一个通讯录,一个日历。并把二者的URL记录下来。OK,在不同设备的客户端输入这个URL,就可以进行同步了。当然,如果URL中用的主机名是IP地址,当然要改成在你的局域网中正确的可访问的IP地址。

发表评论

电子邮件地址不会被公开。