换手机了,发现新手机完全不能兼容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地址。