Taskd
taskd は Taskwarrior (task) のための軽量で安全なサーバです。デスクトップとモバイルを含む複数のクライアント間でタスクをインテリジェントに同期させることができます。
目次
サーバー
インストール
taskd は taskd または taskd-gitAUR パッケージでインストールできます。
設定
taskedがインストールされたら、まずは、設定する必要があります。最初のステップは
$ export TASKDDATA=/var/lib/taskd
(このコマンドを実行しない場合、taskd コマンドを実行するたびに --data /var/lib/taskd
を付ける必要があります。)
次に /usr/share/doc/taskd/pki/vars
ファイルを編集してください。CN=
行にサーバーのホストネームあるいは IP アドレスを指定してください (接続方法によってどちらか選んでください)。ファイルが編集できたら、/usr/share/doc/taskd/pki/generate
を実行してください。サーバーの自己署名証明書が作成されます。生成された *.pem ファイルを全て /var/lib/taskd
にコピーしてください。最低でも、後でユーザー証明書を作成するために ca.cert.pem
は pki フォルダに必須になります。
それから taskd を設定してください。taskd config
を実行するか /var/lib/taskd/config
を直接編集することで設定できます。
/var/lib/taskd/config
client.cert=/var/lib/taskd/client.cert.pem client.key=/var/lib/taskd/client.key.pem server.cert=/var/lib/taskd/server.cert.pem server.key=/var/lib/taskd/server.key.pem server.crl=/var/lib/taskd/server.crl.pem ca.cert=/var/lib/taskd/ca.cert.pem chown taskd.taskd ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem chmod 400 ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem
さらに以下のコマンドを実行して taskd がログを出力する場所を変更してください (デフォルトは /tmp/log
となっています):
touch /var/log/taskd.log chown taskd:taskd /var/log/taskd.log taskd config --force log /var/log/taskd.log
最後に taskd のサーバー名を設定します。証明書の名前と同じ名前を設定してください: taskd config --force server servername:port
。taskd のポートはデフォルトでは設定されていないため、手動で設定する必要があります。
実行
taskd.service
を 起動/有効化 します。
taskd にユーザーを追加
tasked は、データをグループとユーザーに編成し、各ユーザーはグループに属します。
ユーザーを追加するには、次のコマンドを実行し、必要に応じて [group]
と [username]
を置き換えます。
# taskd add org [group] # taskd add user [group] [username]
最後のコマンドが返すキーに注意してください。ユーザーは同期するためにキーが必要になります。
新しいグループとユーザーがユーザー taskd
によって読み取り可能であることを確認してください。
# chown -R taskd:taskd /var/lib/taskd/orgs
/usr/share/doc/taskd/pki/
に戻り、
#./generate.client username
を実行します。これにより、username.cert.pem
と username.key.pem
がが返されます。
username.key.pem
、username.cert.pem
、および ca.cert.pem
は、ユーザーの Taskwarrior ユーザーデータディレクトリにコピーする必要があります (デフォルトは ~/.task
)
クライアント
ユーザーの設定
.pem
ファイルがユーザーの Taskwarrior データディレクトリにコピーされたら、ファイルを指すように構成を更新する必要があります。
同じディレクトリの config
ファイルに以下を追加します。
/var/lib/taskd/config
taskd.server=servername:port taskd.credentials=group/username/key taskd.certificate=~/.task/username.cert.pem taskd.key=~/.task/username.key.pem taskd.ca=~/.task/ca.cert.pem
パスは task
が実行されるディレクトリからの相対パスであるため、~
からの相対パスまたは絶対パスである必要があります。
初期同期を実行し、Taskwarriorデータをサーバーに送信することに同意します。
$ task sync init
ローカルの変更をサーバーに送信します:
$ task sync
Android の Taskwarrior アプリを使う
Android アプリをダウンロードする前に、フォルダを作成する必要があります。外部ストレージに (内部ストレージしかない場合は内部ストレージでかまいません)、Android/data/kvj.taskw/files/key
というフォルダを作成してください ("key" は taskd でユーザーを作成したときに表示されたキーに置き換えてください)。そしてフォルダに username.key.pem
, username.cert.pem
, ca.cert.pem
ファイルを追加してください。
そのフォルダに .taskrc.android
という名前のフォルダに以下のような新しいファイルを作成します:
/sdcard/Android/data/kvj.taskw/files/[uuid]/.taskrc.android
taskd.server=servername:port taskd.credentials=group/username/key taskd.certificate=username.cert.pem taskd.key=username.key.pem taskd.ca=ca.cert.pem
次に、アプリをダウンロードして起動します。プロファイルを追加するように求められたら、作成したデータフォルダを選択します。 Taskwarrior は同期し、期待どおりに機能するはずです。
トラブルシューティング
Unreachable Server
サーバーが実行されているのに接続できない場合、IPv6 が原因かもしれません。family=IPv4
を /var/lib/taskd/config
に追加して taskd を再起動することで強制的に IPv4 を使うことができます。
"Server starting" で止まってしまう場合、server
オプションで指定したアドレスの解決に失敗している可能性があります。しばらくすると、"Name or service not known" と表示されてタイムアウトします。この場合、そのアドレスをあなたの外部 IP アドレスにエイリアスする外部 /etc/hosts
エントリを追加してみてください (参照 ドメイン名前解決)
これらを試した後、taskd を再起動し、問題が解決したかどうか確認してください。
"Bad Key"
サーバーが "Bad Key" エラーを返してくる場合、作成したフォルダのパーティションを確認してください (/var/lib/taskd/
やサブフォルダ)。taskd は自動的に uid/gid を設定しないため、手動で taskd に所有者・所有グループを変更する必要があります。
taskd.service が起動時に失敗する場合
taskd の systemd ユニット が起動時に失敗する場合、systemd/タイマー を追加してこのユニットに遅延を与えることができます。
/etc/systemd/system/taskd.timer
[Unit] Description=Start taskd.service after fixed amount of time [Timer] OnStartupSec=10 Unit=taskd.service [Install] WantedBy=multi-user.target