# ankursinha.in/blog

neuroscience/fedora/musings

Thu 31 July 2014

Posted by ankur in Tech (1014 words, approximately a 5 minute read)

I'd documented using task warrior to manage your tasks recently. I'd only just mentioned task server in that post. I hadn't had the time to set it up. The effect of this was that all my tasks were only on my laptop and couldn't I access them when I wasn't at it. The simple solution was to use an android client that would sync with taskwarrior - like Mirakel. In this post, I document setting up the task server and then Mirakel. The previous post already documents how one needs to setup and use task. You can use vit which is an excellent front end to task. It's available in the Fedora repositories for Fedora 20+:

sudo yum install vit


A vit screenshot.

There's already a review request put up for this. Threebean's working on it. It should be available in the Fedora repositories shortly. There's a copr repo here, but it doesn't look in sync with the review at the moment. I've run a scratch build and put up the rpms here. You can just grab them and install them locally for the time being. Once you've installed the package, the instructions to set up the server are quite straightforward:

$sudo -u taskd #or su - taskd -> as taskd user$ cd /etc/pki/taskd #this is where the scripts are placed
$./generate #this will generate a couple of new files$ ls -l /etc/pki/taskd/
ca.key.pem -rwxr-xr-x. 1 root  root   666 Jan 16  2014
generate -rwxr-xr-x. 1 root  root   647 Jan 16  2014
generate.ca -rwxr-xr-x. 1 root  root   787 Jan 16  2014
generate.client -rwxr-xr-x. 1 root  root   878 Jan 16  2014
generate.crl -rwxr-xr-x. 1 root  root   792 Jan 16  2014
server.key.pem
[asinha@ankur-laptop  ~]$ When you run the generate script, it'll generate a client.cert.pem and client.key.pm. I've renamed them to match the user that I'll create in the next section. $ mv client.cert.pem ankur_sinha.cert.pem $mv client.key.pem ankur_sinha.key.pem  ### Set up a user Choose your username and organization. For example, I picked "Ankur Sinha" as my username and "Personal" as the organization. taskd add org ORGNAME --data /var/lib/taskd taskd add user ORGNAME USERNAME --data /var/lib/taskd  This will generate a unique key for your user. Please note it down. It is required when you setup your client to sync with the task server. You can have multiple users set up. Each will be given a unique key. ### Start taskd It should be as simple as: sudo systemctl start taskd.service  If this doesn't work, for some reason, try this: sudo taskd server --data /var/lib/taskd --daemon  ## Set up your client You need to copy the client keys to your client's configuration directory. For example, if you're using the client and server on the same machine, you need to copy the client certs to ~/.task. In my case, to set up the task client I did: $ sudo -i $cd /etc/pki/taskd$ cp ankur_sinha*pem ~asinha/.task #client keys
$cp ca.cert.pem ~asinha/.task #signing certificate$ chown asinha:asinha ~/asinha/.task/*.pem #make sure the permissions are limited to your user only


You need to configure your client to use the credentials that you created, and to point it to your server. You can either modify ~/.taskrc by hand, or use the task config command - they both do the same thing. To edit it by hand, I did:

taskd.server=localhost:6544 taskd.credentials=Personal/Ankur Sinha/my-long-key



If I'd used the task config command, it'd be this:

$task config taskd.certificate ~/.task/ankur_sinha.cert.pem$ task config taskd.key         ~/.task/ankur_sinha.key.pem
$task config taskd.ca ~/.task/ca.cert.pem$ task config taskd.server      localhost:6544 #on Fedora, we use 6544 for taskd
$task config taskd.credentials 'Personal/Ankur Sinha/my-long-key'  ### Sync up! That's all the setup you need. Now, you run your first sync: $ task sync init


In the future, you just need to run:

\$ task sync


All of this is well documented at the taskwarrior website here: http://taskwarrior.org/docs/server_setup.html

## Setting up Mirakel

Mirakel is quite easy to setup too. You can use the same credentials for the user you created to get Mirakel to sync with your task server. There's one main difference - instead of placing your certificate files in a folder, you need to quote the keys in the file itself. For example, my Mirakel configuration file looks like this:

username: Ankur Sinha org: Personal user key: my-long-key server : your-servers-hostname:6544

Client.cert:
-----BEGIN CERTIFICATE-----
# PLACE contents of ~/.task/ankur\_sinha.cert.pem here
-----END CERTIFICATE-----

Client.key:
-----BEGIN RSA PRIVATE KEY-----
# PLACE KEY FROM ~/.task/ankur\_sinha.key.pem here
-----END RSA PRIVATE KEY-----

ca.cert:
-----BEGIN CERTIFICATE-----
# PLACE CONTENTS OF ~/.task/ca.cert.pem here
-----END CERTIFICATE-----


Menu > Settings > Sync > Add (button on top right) > Taskwarrior > Select config file.


Mirakel screenshot

It'll add a new user. You can then play around with the settings and set up your sync frequency etc. These steps are quite clearly documented here: http://mirakel.azapps.de/taskwarrior.html. However, they're not tailored to use the Fedora rpms, which is why I thought it'd be good to write up fresh instructions.

Now, you have Mirakel up and running:

Mirakel screenshot 2

## A couple of things to keep in mind

• Your credentials need to be correct
• Your server should be reachable. This implies that the network should be functional, and the port should be open in the firewall. Please note that you may have to specify the zone if you're using firewalld.
• Check /var/lib/taskd/config to see if Mirakel has permissions to sync. It isn't in the access list by default.
• The sync is two way. You can add tasks on your phone and they'll be listed in task on your laptop after you sync them all up.

If you run into trouble, check /var/log/taskd.log to start with. It logs accesses, syncs and errors too.

EDIT: Updated generation portion.