{"id":1494,"date":"2018-05-01T13:31:14","date_gmt":"2018-05-01T13:31:14","guid":{"rendered":"https:\/\/blog.datentraeger.li\/?p=1494"},"modified":"2019-05-09T10:09:22","modified_gmt":"2019-05-09T09:09:22","slug":"taskd-unter-debian-stretch-montieren","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=1494","title":{"rendered":"taskwarrior server (taskd)"},"content":{"rendered":"<p>Seit nun doch einiger Zeit setze ich den <a href=\"https:\/\/blog.datentraeger.li\/?p=916\" target=\"_blank\" rel=\"noopener noreferrer\">Taskwarrior ein<\/a>. Bisher jedoch nur im &#8220;lokalen&#8221; 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.<\/p>\n<h2>Initiales<\/h2>\n<p>Von bestehenden Daten macht man bestenfalls eine Sicherung<\/p>\n<pre>cd ~\/.task\ntar czf task-backup-$(date +'%Y%m%d').tar.gz *\nmv task-backup*.tar.gz ~\/Documents (als Beispiel)\n<\/pre>\n<h1>Setup Server<\/h1>\n<p>Unter Debian montiert man einfach das taskd-Package.<\/p>\n<h2>Konfiguration<\/h2>\n<h3>Zertfikate erstellen<\/h3>\n<pre>cd \/usr\/share\/taskd\/pki\/\n<\/pre>\n<p>Hier editiert man als erstes das vars-File und passt es nach Gusto an<\/p>\n<pre>BITS=4096\nEXPIRATION_DAYS=365\nORGANIZATION=\"foo.li systeme + software\"\nCN=mail.foo.li\nCOUNTRY=LI\nSTATE=\"Oberland\"\nLOCALITY=\"Balzers\"\n<\/pre>\n<p>Ist dies erledigt, k\u00f6nnen die Zertfikate erstellt werden<\/p>\n<pre class=\"\">.\/generate.ca\n.\/generate.server\n.\/generate.crl\n<\/pre>\n<p>Nun passen wir noch die Rechte der generierten Files an<\/p>\n<pre class=\"\">chown Debian-taskd.Debian-taskd ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem\nchmod 400 ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem\n<\/pre>\n<h3>Daemon einrichten<\/h3>\n<pre>export TASKDATA=\/var\/lib\/taskd\ncd $TASKDATA\n<\/pre>\n<p>Nun verlinken wir die erstellten Zertifikate hierher<\/p>\n<pre class=\"\">ln -s \/usr\/share\/taskd\/pki\/ca.cert.pem .\nln -s \/usr\/share\/taskd\/pki\/server.cert.pem .\nln -s \/usr\/share\/taskd\/pki\/server.crl.pem .\nln -s \/usr\/share\/taskd\/pki\/server.key.pem .\n<\/pre>\n<p>Und jetzt k\u00f6nnen wir das ganze initialisieren<\/p>\n<pre>taskd init --data $TASKDATA\n<\/pre>\n<p>und einige Configwerte anpassen (ich bevorzuge ein normales editieren des config-files)<\/p>\n<pre>taskd config --data $TASKDATA --force server 10.1.1.1:53589 (Interface, wo taskd laufen soll)\ntaskd config --data $TASKDATA --force ca.cert $TASKDDATA\/ca.cert.pem\ntaskd config --data $TASKDATA --force server.cert $TASKDDATA\/server.cert.pem\ntaskd config --data $TASKDATA --force server.crl $TASKDDATA\/server.crl.pem\ntaskd config --data $TASKDATA --force server.key $TASKDDATA\/server.key.pem\n<\/pre>\n<p>im Systemd-Unit ist (so wie ich es verstehe) das Logging by default deaktiviert. M\u00f6chte man das haben, was bei der Fehlersuche sicher nicht schlecht ist, entfernt man einfach den Suffix &#8220;&#8211;log=-&#8221; aus dem taskd.service bei ExecStart. Nun wird nach \/tmp\/taskd.log geloggt.<\/p>\n<p>Jetzt noch den Service starten und evtl. das Log checken \ud83d\ude09<\/p>\n<pre>systemctl enable taskd\nsystemctl start taskd\n<\/pre>\n<h1>Client Configuration<\/h1>\n<h2>Organisation erstellen<\/h2>\n<p>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 <a href=\"https:\/\/taskwarrior.org\/docs\/taskserver\/taskwarrior.html\" target=\"blank_\" rel=\"noopener noreferrer\">Manual<\/a> beschriebene Vorgang hier&#8230;<\/p>\n<pre>$ task add org foo --data \/var\/lib\/taskd\/\nCreated organization 'foo'\n<\/pre>\n<h2>User und Zertifikate erstellen<\/h2>\n<p>Nun erstellen wir einen Benutzer<\/p>\n<pre>$ taskd add user 'foo' 'Peter Beck' --data \/var\/lib\/taskd\nNew user key: cf31f287-ee9e-43a8-843e-e8bbd5de4294\nCreated user 'Peter Beck' for organization 'foo'\n<\/pre>\n<p>Mittels generate.client k\u00f6nnen nun die Zertifikate f\u00fcr den User auf dem Server erzeugt werden.<\/p>\n<pre>cd \/usr\/share\/taskd\/pki\n.\/generate-client NAME\n<\/pre>\n<p>Hiermit wird NAME.cert.pem und NAME.key.pem angelegt. Diese beiden Files und das CA File m\u00fcssen nun zum Client \u00fcbertragen und unter ~\/.task abgelegt werden.<\/p>\n<pre>tar czf client-certs.tar.gz NAME.* ca.cert.pem<\/pre>\n<h2>Taskwarrior\/Client einrichten<\/h2>\n<p>Jetzt kann man endlich taskwarrior am Client einrichten.<\/p>\n<pre>task config taskd.certificate -- ~\/.task\/NAME.cert.pem\ntask config taskd.key -- ~\/.task\/NAME.key.pem\ntask config taskd.server -- mail.foo.li:53589\ntask config taskd.credentials -- foo\/Peter Beck\/cf31f287-ee9e-43a8-843e-e8bbd5de4294\n<\/pre>\n<p>Auch hier: das ganze kann manuell im .taskrc eingetragen werden, jedoch muss beachtet werden, dass die Pfade escapt sind:<\/p>\n<pre>taskd.certificate=\\\/home\\\/peter\\\/.task\\\/NAME.cert.pem                              \ntaskd.key=\\\/home\\\/peter\\\/.task\\\/NAME.key.pem\ntaskd.ca=\\\/home\\\/peter\\\/.task\\\/ca.cert.pem\ntaskd.server=mail.foo.li:53589\ntaskd.credentials=foo\\\/Peter Beck\\\/cf31f287-ee9e-43a8-843e-e8bbd5de4294\n<\/pre>\n<p>Wenn man nicht st\u00e4ndig manuell den sync anschmeissen will (geht eh vergessen..) ist ein kleiner cronjob alle paar Minuten das richtige Mittel zum automatischen Sync.<\/p>\n<h1>Debugging<\/h1>\n<p>Generell kann ich sagen, das ganze l\u00e4uft reibungslos. Jedoch hatte ich zu Beginn ein kleines Problem:<\/p>\n<pre>task sync init\nPlease confirm that you wish to upload all your pending tasks to the Taskserver (yes\/no) yes\nSyncing with mail.foo.li:53589\n\nSync failed.  Either your credentials are incorrect, or your account doesn't exist on the Taskserver.\n<\/pre>\n<p>Die L\u00f6sung war banal: Ich habe die Organisation \/ den User unter root angelegt. Die Directories geh\u00f6rten dann nat\u00fcrlich root anstatt dem taskd-User, folglich konnte es nicht gelesen werden. L\u00f6sung: Rechte korrigieren \ud83d\ude09<\/p>\n<pre>$ chown -R Debian-taskd.Debian-taskd \/var\/lib\/taskd\/orgs\/\n<\/pre>\n<pre>task sync init\nPlease confirm that you wish to upload all your pending tasks to the Taskserver (yes\/no) yes\nSyncing with mail.foo.li:53589\n\nSync successful.  695 changes uploaded.\n<\/pre>\n<p>Bei der Fehlersuche ist sonst die <a href=\"https:\/\/taskwarrior.org\/docs\/taskserver\/troubleshooting-sync.html\" target=\"_blank\" rel=\"noopener noreferrer\">taskd Troubleshooting Site<\/a> recht hilfreich.<\/p>\n<p>Generell sieht man im Log schnell, was nicht passt. Ein &#8216;taskd diagnostics&#8217; kann auch wertvolle Infos liefern.<\/p>\n","protected":false},"excerpt":{"rendered":"Seit nun doch einiger Zeit setze ich den Taskwarrior ein. Bisher jedoch nur im &#8220;lokalen&#8221; 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&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,4,23],"tags":[39,41,40],"class_list":["post-1494","post","type-post","status-publish","format-standard","hentry","category-cli","category-debiangnu-linux","category-groupware","tag-cli","tag-groupware","tag-pim"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1494"}],"version-history":[{"count":42,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1494\/revisions"}],"predecessor-version":[{"id":2409,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1494\/revisions\/2409"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}