calypso and DAVdroid appeal to me. Let's try to make the whole thing work.
Update: radicale seems to also support git as a backend, and I plan to give it a try, too.
A self-signed SSL certificate
Generating the certificate:
$ openssl req -nodes -x509 -newkey rsa:2048 -keyout cal-key.pem -out cal-cert.pem -days 3650 [...] Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some-State]:Bologna Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:enricozini.org Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:cal.enricozini.org Email Address []:postmaster@enricozini.org
Installing it on my phone:
$ openssl x509 -in cal-cert.pem -outform DER -out cal-cert.crt $ adb push cal-cert.crt /mnt/sdcard/ $ enrico --follow-instructions http://davdroid.bitfire.at/faq/entry/importing-a-certificate
Installing calypso in my VPS
An updated calypso package:
$ git clone git://keithp.com/git/calypso $ git checkout debian -b enrico $ git remote add chrysn git://prometheus.amsuess.com/calypso-patches $ git fetch chrysn $ git merge chrysn/chrysn/integration $ dch -v 1.4+enrico "Merged with chrysn integration branch" $ debuild -us -uc -rfakeroot
Install the package:
# dpkg -i calypso_1.4+enrico_all.deb
Create a system user to run it:
# adduser --system --disabled-password calypso # chsh calypso # /bin/dash
Make it run at boot time (based on calypso-init from the git repo):
# cat /etc/default/calypso CALYPSO_OPTS="-d -P $PIDFILE" # diff -Nau calypso-init calypso-init.enrico --- calypso-init 2014-11-26 11:50:35.301001194 +0100 +++ calypso-init.enrico 2014-11-26 12:18:16.564138554 +0100 @@ -62,8 +62,8 @@ || return 1 mkdir -p $(dirname $PIDFILE) - chown calypso:calypso $(dirname $PIDFILE) - start-stop-daemon --start -c $NAME --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + chown calypso:nogroup $(dirname $PIDFILE) + start-stop-daemon --start -c $NAME:nogroup --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $CALYPSO_OPTS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # cp calypso-init.enrico /etc/init.d/calypso # update-rc.d calypso defaults
Setting up the database
# su - calypso
Certificates and server setup:
$ mkdir .config/calypso/certs $ mv cal-key.pem .config/calypso/certs/cal.key $ mv cal-cert.pem .config/calypso/certs/cal.pem $ chmod 0600 .config/calypso/certs/* $ cat > .config/calypso/config << EOF [server] certificate=/home/calypso/.config/calypso/certs/cal.pem key=/home/calypso/.config/calypso/certs/cal.key [acl] type=htpasswd encryption=sha1 filename=/home/calypso/.config/calypso/htpasswd EOF
User passwords:
$ htpasswd -s .config/calypso/htpasswd enrico
Database initialization:
$ mkdir -p .config/calypso/calendars $ cd .config/calypso/calendars $ git init $ cat > .calypso-collection << EOF [collection] is-calendar = True is-addressbook = False displayname = Test description = Test calendar EOF $ git add .calypso-collection $ git commit --allow-empty -m'initialize new calendar'
Start the server
# /etc/init.d/calypso start
DAVdroid configuration
- Add a new DAVdroid sync account
- Use server/username configuration
- For server, use https://
:5233 - Add username and password
It should work.