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.