UP  |  HOME

Taskwarrior

Table of Contents

Taskwarrior has a taskd server and the client taskwarrior. There is an android client available.

taskd Server

Configuration here is partly based on /usr/share/doc/taskd/README.Debian, and the online documentation at https://taskwarrior.org/docs/taskserver/setup.html.

I had some issue with the systemd service failing to start. I think this may have been due to some change in systemd and how it restricts file access for processes. In order to fix this I added WorkingDirectory​=/var/lib/taskd to the Service section of /etc/systemd/system/multi-user.target.wants/taskd.service.

Set environment variable for taskd to find it's files.
export TASKDDATA=/var/lib/taskd
Change server host.
taskd config --force server host.name:53589
Copy over key generation scripts.
cp -r /usr/share/taskd/pki /var/lib/taskd
Edit the configuration for key generation:
cd /var/lib/taskd/pki
vim vars
Listing 1: vars
BITS=4096
EXPIRATION_DAYS=365
ORGANIZATION="organization name"
CN=host.name
COUNTRY=US
STATE="..."
LOCALITY="..."
./generate
cd ..
cp pki/*.pem ./
taskd config --force client.cert $TASKDDATA/client.cert.pem
taskd config --force client.key $TASKDDATA/client.key.pem
taskd config --force server.cert $TASKDDATA/server.cert.pem
taskd config --force server.key $TASKDDATA/server.key.pem
taskd config --force server.crl $TASKDDATA/server.crl.pem
taskd config --force ca.cert $TASKDDATA/ca.cert.pem
mkdir orgs
chown Debian-taskd:Debian-taskd *
systemctl restart taskd

Now we add an organization and a user. Switch to the taskd user first.

su -l Debian-taskd -s /bin/bash
export TASKDDATA=/var/lib/taskd
taskd add org my_org
taskd add user 'my_org' 'username'

Make sure to save the user key for client configuration. Generate a key for the user:

cd pki
./generate.client username
cp username.* ../

Taskwarrior client

Copy user.cert.pem, user.key.pem, and ca.cert.pem to the client's ~/.task folder.

task config taskd.certificate -- ~/.task/username.cert.pem
task config taskd.key         -- ~/.task/username.key.pem
task config taskd.ca          -- ~/.task/ca.cert.pem
task config taskd.server      -- host.name:53589
task config taskd.credentials -- my_org/username/<user key from adding user>
task sync