taskwarrior server (taskd)
Seit nun doch einiger Zeit setze ich den Taskwarrior ein. Bisher jedoch nur im “lokalen” Modus, also ohne die Daten zu synchronisieren. Das ganze hat mir aber doch keine Ruhe gelassen und ich hab mir mal einen Taskserver (taskd) montiert.
Initiales
Von bestehenden Daten macht man bestenfalls eine Sicherung
cd ~/.task tar czf task-backup-$(date +'%Y%m%d').tar.gz * mv task-backup*.tar.gz ~/Documents (als Beispiel)
Setup Server
Unter Debian montiert man einfach das taskd-Package.
Konfiguration
Zertfikate erstellen
cd /usr/share/taskd/pki/
Hier editiert man als erstes das vars-File und passt es nach Gusto an
BITS=4096 EXPIRATION_DAYS=365 ORGANIZATION="foo.li systeme + software" CN=mail.foo.li COUNTRY=LI STATE="Oberland" LOCALITY="Balzers"
Ist dies erledigt, können die Zertfikate erstellt werden
./generate.ca ./generate.server ./generate.crl
Nun passen wir noch die Rechte der generierten Files an
chown Debian-taskd.Debian-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
Daemon einrichten
export TASKDATA=/var/lib/taskd cd $TASKDATA
Nun verlinken wir die erstellten Zertifikate hierher
ln -s /usr/share/taskd/pki/ca.cert.pem . ln -s /usr/share/taskd/pki/server.cert.pem . ln -s /usr/share/taskd/pki/server.crl.pem . ln -s /usr/share/taskd/pki/server.key.pem .
Und jetzt können wir das ganze initialisieren
taskd init --data $TASKDATA
und einige Configwerte anpassen (ich bevorzuge ein normales editieren des config-files)
taskd config --data $TASKDATA --force server 10.1.1.1:53589 (Interface, wo taskd laufen soll) taskd config --data $TASKDATA --force ca.cert $TASKDDATA/ca.cert.pem taskd config --data $TASKDATA --force server.cert $TASKDDATA/server.cert.pem taskd config --data $TASKDATA --force server.crl $TASKDDATA/server.crl.pem taskd config --data $TASKDATA --force server.key $TASKDDATA/server.key.pem
im Systemd-Unit ist (so wie ich es verstehe) das Logging by default deaktiviert. Möchte man das haben, was bei der Fehlersuche sicher nicht schlecht ist, entfernt man einfach den Suffix “–log=-” aus dem taskd.service bei ExecStart. Nun wird nach /tmp/taskd.log geloggt.
Jetzt noch den Service starten und evtl. das Log checken 😉
systemctl enable taskd systemctl start taskd
Client Configuration
Organisation erstellen
Man kann mehrere Organisationen mit entsprechenden Nutzern erstellen. Brauche ich zwar nicht, bin aber nicht 100%ig sicher, ob das ein must ist, also mach ich es. Generell ist es eigentlich der im Manual beschriebene Vorgang hier…
$ task add org foo --data /var/lib/taskd/ Created organization 'foo'
User und Zertifikate erstellen
Nun erstellen wir einen Benutzer
$ taskd add user 'foo' 'Peter Beck' --data /var/lib/taskd New user key: cf31f287-ee9e-43a8-843e-e8bbd5de4294 Created user 'Peter Beck' for organization 'foo'
Mittels generate.client können nun die Zertifikate für den User auf dem Server erzeugt werden.
cd /usr/share/taskd/pki ./generate-client NAME
Hiermit wird NAME.cert.pem und NAME.key.pem angelegt. Diese beiden Files und das CA File müssen nun zum Client übertragen und unter ~/.task abgelegt werden.
tar czf client-certs.tar.gz NAME.* ca.cert.pem
Taskwarrior/Client einrichten
Jetzt kann man endlich taskwarrior am Client einrichten.
task config taskd.certificate -- ~/.task/NAME.cert.pem task config taskd.key -- ~/.task/NAME.key.pem task config taskd.server -- mail.foo.li:53589 task config taskd.credentials -- foo/Peter Beck/cf31f287-ee9e-43a8-843e-e8bbd5de4294
Auch hier: das ganze kann manuell im .taskrc eingetragen werden, jedoch muss beachtet werden, dass die Pfade escapt sind:
taskd.certificate=\/home\/peter\/.task\/NAME.cert.pem taskd.key=\/home\/peter\/.task\/NAME.key.pem taskd.ca=\/home\/peter\/.task\/ca.cert.pem taskd.server=mail.foo.li:53589 taskd.credentials=foo\/Peter Beck\/cf31f287-ee9e-43a8-843e-e8bbd5de4294
Wenn man nicht ständig manuell den sync anschmeissen will (geht eh vergessen..) ist ein kleiner cronjob alle paar Minuten das richtige Mittel zum automatischen Sync.
Debugging
Generell kann ich sagen, das ganze läuft reibungslos. Jedoch hatte ich zu Beginn ein kleines Problem:
task sync init Please confirm that you wish to upload all your pending tasks to the Taskserver (yes/no) yes Syncing with mail.foo.li:53589 Sync failed. Either your credentials are incorrect, or your account doesn't exist on the Taskserver.
Die Lösung war banal: Ich habe die Organisation / den User unter root angelegt. Die Directories gehörten dann natürlich root anstatt dem taskd-User, folglich konnte es nicht gelesen werden. Lösung: Rechte korrigieren 😉
$ chown -R Debian-taskd.Debian-taskd /var/lib/taskd/orgs/
task sync init Please confirm that you wish to upload all your pending tasks to the Taskserver (yes/no) yes Syncing with mail.foo.li:53589 Sync successful. 695 changes uploaded.
Bei der Fehlersuche ist sonst die taskd Troubleshooting Site recht hilfreich.
Generell sieht man im Log schnell, was nicht passt. Ein ‘taskd diagnostics’ kann auch wertvolle Infos liefern.
2 thoughts on “taskwarrior server (taskd)”
taskwarrior server (taskd) https://blog.datentraeger.li/?p=1494
Comments are closed.