だいぶ前に「DAVDroid と Radicale でハマる」というのを書いた。しばらく問題なく動いていたのだが、最近また同期がうまくいかなくなった。気がついてみると、Radicale のバージョンがずいぶん古い (0.8)。なるべく新しいバージョンにしておかないと、いろいろとまずいかもしれないな、と思って、バージョン 2 まで一気に上げてみた。
インストールには Python3 が必要。Mac 用の Python3.6 をインストールする(3.5 だと、PyPI へのアクセスがうまくいかない)。その後、radicale, passlib, bcrypt をインストールする。
$ python3 -m pip install --upgrade radicale # Radicale 本体
$ python3 -m pip install --upgrade passlib bcrypt # ユーザー認証用の bcrypt
適当な場所 (/path/to/radicale
とする) に Radicale 用のディレクトリを作る。設定ファイル config
を下の内容で作成。
[auth]
type = htpasswd
htpasswd_filename = /path/to/radicale/users
htpasswd_encryption = bcrypt
[server]
hosts = 0.0.0.0:5232
[storage]
filesystem_folder = /path/to/radicale/collections
[logging]
config = /path/to/radicale/log_config
パスワード認証用のファイルは以下のように作成。
$ htpasswd -B -c /path/to/radicale/users nagata
New password:
Re-type new password:
Adding password for user nagata
ログ用の設定ファイル log_config
は次の通り。
[loggers]
keys = root
[handlers]
keys = file
[formatters]
keys = full
[logger_root]
# Change this to DEBUG or INFO for higher verbosity.
level = INFO
handlers = file
[handler_file]
class = FileHandler
# Specify the output file here.
args = ('/path/to/radicale/log',)
formatter = full
[formatter_full]
format = %(asctime)s - [%(thread)x] %(levelname)s: %(message)s
これで、下のように実行する。
$ python3 -m radicale --config=/path/to/radicale/config
ここからがちょっとハマったところ。ブラウザで http://localhost:5232
にアクセスすると、Web ベースでカレンダーなどを作成できるのだが、これだと http://localhost:5232/nagata/8fc95c36-808b-d5ec-3b1f-13137ba93dc9/
みたいなランダムな文字列になってしまって、取り扱いが非常に面倒臭い。「RadicaleでCalDAV/CardDAVサーバーを構築する」という記事を参考にして、次のように設定。(あとで、公式ドキュメントにも書かれているのを発見した。)
$ cd /path/to/collections/collection-root
$ mkdir -p nagata/calendar
$ nano nagata/calendar/.Radicale.props
{"tag": "VCALENDAR"}
$ mkdir -p nagata/address
$ nano nagata/address/.Radicale.props
{"tag": "VADDRESSBOOK"}
ブラウザで http://localhost:5232
にアクセスすると、こんな風になる。コレクション名が /nagata/address
なのは不便なので、"Edit" で編集する。
これが編集画面。「連絡先」と名付けた。
こんな風になる。/nagata/calendar
の方も同様に名前をつければよい。
DAVdroid で同期するには、まずアカウントを作成する。DAVdroid のアカウント一覧画面で「+」を押すと、下の画面になるので、URL, ユーザー名、パスワードを入力。URL は ...:5232/
まででよく、nagata/calendar
などの部分は自動的に認識される。
うまくいくと、この画面になる。実はここでハマった。別の URL で同じユーザー名があると、エラーになる。エラーメッセージがわかりにくいので注意。
こんな風に、新しく作ったアカウント(一番下)が表示される。
アカウントをタップすると、この画面になる。左のチェックボックスをオンにして、右上の同期アイコンをタップすると、Radicale と同期してくれる。
これで、「カレンダー」「連絡先」とも、Radicale のコレクションを認識してくれる。一応これで、Radicale 2 系列も使える目処が立った。