Tutorials  /  Linux Basics

TaskWarrior & TaskServer unter Linux, Windows & Android einrichten

Ccentron Redaktion · Mai 2025 ·13 Min. Lesezeit ·Linux Basics, Tutorial

TaskWarrior ist ein leistungsstarkes Open-Source-Tool zur Aufgabenverwaltung, das eine erweiterte Alternative zu Todo.txt und ähnlichen Anwendungen darstellt. In einer Welt, in der Menschen täglich mehrere Geräte nutzen, ist ein zentraler Zugriff auf Aufgabenlisten unerlässlich. Diese Anleitung zeigt dir, wie du den TaskServer (taskd) und den TaskWarrior-Client (task) einrichtest, sodass mehrere Endgeräte sicher synchronisiert werden können.

Hauptfunktionen

  • Beliebig viele Aufgaben erstellen
  • Prioritäten für Aufgaben festlegen
  • Aufgaben mit Suchfunktionen filtern
  • Tags zur Organisation verwenden
  • Automatische Synchronisation über alle Geräte hinweg
  • Integrierte Backup-Möglichkeiten
  • Vollständige Kontrolle und Datenschutz
  • Verschlüsselte Datenübertragung
VM

Passende Infrastruktur bei centron

Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →

Systemvoraussetzungen

  • Ein CentOS 7 Server mit 64-Bit Architektur
  • Ein Benutzerkonto mit sudo-Rechten
  • Eine Domain, die auf deinen Server verweist (z. B. taskd.example.com)

Schritt 1: System aktualisieren

Melde dich mit einem Benutzerkonto an, das sudo-Rechte besitzt. Installiere dann das EPEL-Repository und aktualisiere das System mit folgenden Befehlen:

Konsole
sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y

Schritt 2: RPM-Build-Werkzeuge installieren und Build-Umgebung vorbereiten

Da das EPEL-Repository kein vorgefertigtes RPM-Paket für den TaskServer (taskd) enthält, musst du das Paket manuell aus dem Quellcode erstellen.

Installiere zuerst alle nötigen Werkzeuge zum Kompilieren und Signieren, einschließlich GCC, Make und RPM-Tools:

Konsole
sudo yum install gcc gcc-c++ make rpmdevtools rpm-sign rpm-build -y

Erstelle anschließend ein Verzeichnis für die GnuPG-Dateien, die zum Signieren der RPMs benötigt werden:

Konsole
mkdir .gnupg

Da die Erstellung eines Schlüsselpaares Entropie benötigt, installiere den rngd-Dienst, um Zufallsdaten aus /dev/urandom zu nutzen:

Konsole
yum install rngd -y

Starte den rngd-Dienst mit folgender Anweisung:

Konsole
sudo rngd -r /dev/urandom

Erzeuge nun ein GPG-Schlüsselpaar mit dem folgenden Befehl:

Code
gpg --gen-key

Während der Erstellung bestätige folgende Eingaben:

  • Option (1) RSA und RSA (Standard)
  • Standardschlüssellänge 2048
  • Keine Ablaufzeit
  • y eingeben, um die Konfiguration zu bestätigen
  • Name und E-Mail-Adresse eingeben
  • Kommentar optional leer lassen
  • O drücken, um die Erstellung abzuschließen
  • Passwort setzen und bestätigen

Um den Inhalt des GPG-Verzeichnisses zu prüfen, nutze diesen Befehl:

Code
ls -la .gnupg

Exportiere deinen öffentlichen Schlüssel in eine Datei und passe Name und Kennung entsprechend an:

Code
gpg --export -a 'Joe Q. Public' > RPM-GPG-KEY-jqpublic

Importiere den Schlüssel anschließend in die RPM-Verwaltung:

Konsole
sudo rpm --import RPM-GPG-KEY-jqpublic

Überprüfe, ob der Schlüssel korrekt hinzugefügt wurde:

Code
rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'

Erstelle jetzt eine Datei .rpmmacros mit folgendem Editor-Befehl:

Code
nano .rpmmacros

Füge den folgenden Inhalt ein und ersetze den Namen durch deine GPG-Angabe:

Code
%_gpg_name  Joe Q. Public
%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}
%_signature gpg
%_topdir %(echo $HOME)/rpmbuild

Speichere mit STRG + X, dann S und abschließend ENTER.

Initialisiere die RPM-Ordnerstruktur mit folgendem Befehl:

Code
rpmdev-setuptree

Überprüfe, ob alle erforderlichen Verzeichnisse erstellt wurden:

Code
find rpmbuild

Lade den Quellcode von TaskServer (Version 1.1.0) in das SOURCES-Verzeichnis:

Konsole
wget https://taskwarrior.org/download/taskd-1.1.0.tar.gz -P rpmbuild/SOURCES/

Beende abschließend den laufenden rngd-Dienst:

Konsole
sudo kill -9 rngd

Schritt 3: TaskServer (taskd) RPM aus Quellcode erstellen

Um ein RPM-Paket für TaskServer zu generieren, wird eine sogenannte SPEC-Datei benötigt. Diese legt fest, wie der Quellcode kompiliert und verpackt werden soll. Die Datei muss im Verzeichnis rpmbuild/SPECS gespeichert werden.

Öffne und bearbeite die Datei mit folgendem Befehl:

Code
nano rpmbuild/SPECS/taskd.spec

Füge den folgenden Inhalt in die Datei taskd.spec ein:

Code
Name:           taskd
Version:        1.1.0
Release:        1%{?dist}
Summary:        Secure server providing multi-user, multi-client access to task data
Group:          Applications/Productivity
License:        MIT
URL:            http://tasktools.org/projects/taskd.html
Source0:        http://taskwarrior.org/download/%{name}-%{version}.tar.gz
Source1:        taskd.service
Source2:        taskd-config
Source3:        taskd.xml

BuildRequires:  cmake
BuildRequires:  libuuid-devel
BuildRequires:  gnutls-devel
BuildRequires:  shadow-utils

%if 0%{?rhel} && 0%{?rhel} <= 6
%else
BuildRequires:  systemd
%endif

Requires:       gnutls-utils
Requires(post):    systemd
Requires(preun):   systemd
Requires(postun):  systemd

%description
The TaskServer provides secure, lightweight synchronization for task data across multiple clients and platforms. It enables users to maintain updated task lists from different devices and offers robust data exchange for systems without constant connectivity or identical features.

%prep
%setup -q %{name}-%{version}

%build
%cmake
make %{?_smp_mflags}

%install
make install DESTDIR=%{buildroot}

mkdir -p %{buildroot}%{_sharedstatedir}/taskd/
mkdir -p %{buildroot}%{_sysconfdir}/pki/taskd/
cp -a pki/generate* %{buildroot}%{_sysconfdir}/pki/taskd/.
mkdir -p %{buildroot}%{_localstatedir}/log/taskd/

%if 0%{?rhel} && 0%{?rhel} <= 6
%else
mkdir -p %{buildroot}%{_unitdir}/
cp -a %{SOURCE1} %{buildroot}%{_unitdir}/taskd.service
mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
cp -a %{SOURCE3} %{buildroot}%{_prefix}/lib/firewalld/services/taskd.xml
%endif

mkdir -p %{buildroot}%{_sharedstatedir}/taskd/orgs/
cp -a %{SOURCE2} %{buildroot}%{_sharedstatedir}/taskd/config
rm -r %{buildroot}%{_datadir}/doc/taskd/

%pre
getent group taskd >/dev/null || groupadd -r taskd
getent passwd taskd >/dev/null || \
    useradd -r -g taskd -d %{_sharedstatedir}/taskd/ -s /usr/bin/sh \
    -c "Task Server system user" taskd
exit 0

%if 0%{?rhel} && 0%{?rhel} <= 6
%else

%post
%systemd_post taskd.service

%preun
%systemd_preun taskd.service

%postun
%systemd_postun_with_restart taskd.service

%endif

%files
%doc AUTHORS COPYING ChangeLog NEWS README
%{_bindir}/taskd
%{_bindir}/taskdctl
%{_mandir}/man1/taskd.1.*
%{_mandir}/man1/taskdctl.1.*
%{_mandir}/man5/taskdrc.5.*

%{_sysconfdir}/pki/taskd/generate*

%dir %attr(0750, taskd, taskd) %{_sysconfdir}/pki/taskd/
%dir %attr(0750, taskd, taskd) %{_localstatedir}/log/taskd/
%dir %attr(0750, taskd, taskd) %{_sharedstatedir}/taskd/
%config(noreplace) %attr(0644, taskd, taskd) %{_sharedstatedir}/taskd/config
%dir %attr(0750, taskd, taskd) %{_sharedstatedir}/taskd/orgs/

%if 0%{?rhel} && 0%{?rhel} <= 6
%else
%{_unitdir}/taskd.service
%{_prefix}/lib/firewalld/services/taskd.xml
%endif

%changelog
* Thu Aug 17 2017 Jarrett Graham <jarrett+rpmbuild@jarrettgraham.com> - 1.1.0
- Initial packaging.
</jarrett+rpmbuild@jarrettgraham.com>

Zusätzlich zur SPEC-Datei werden drei weitere Dateien benötigt. Beginne mit dem Erstellen der Datei taskd-config im Verzeichnis rpmbuild/SOURCES:

Code
nano rpmbuild/SOURCES/taskd-config

Konfigurationsdatei für taskd erstellen

Füge nun die Konfigurationseinstellungen für TaskServer in die Datei taskd-config ein:

Konsole
# taskd Konfigurationsdatei
confirmation=1
verbose=1
ip.log=on
extensions=/usr/libexec/taskd
queue.size=10
request.limit=1048576
server=0.0.0.0:53589
root=/var/lib/taskd
log=/var/log/taskd/taskd.log
pid.file=/var/run/taskd.pid
ca.cert=/etc/pki/taskd/ca.cert.pem
server.cert=/etc/pki/taskd/server.cert.pem
server.key=/etc/pki/taskd/server.key.pem
server.crl=/etc/pki/taskd/server.crl.pem

Systemd-Dienstdatei für TaskServer erstellen

Erstelle anschließend die taskd.service-Datei für systemd im rpmbuild/SOURCES-Verzeichnis:

Code
nano rpmbuild/SOURCES/taskd.service

Trage folgenden Inhalt zur Definition des systemd-Dienstes ein:

Code
[Unit]
Description=Secure server providing multi-user, multi-client access to task data
After=network.target
Documentation=https://tasktools.org/projects/taskd.html

[Service]
ExecStart=/usr/bin/taskd server --data /var/lib/taskd
Type=simple
User=taskd
Group=taskd

[Install]
WantedBy=multi-user.target

taskd.xml Firewall-Dienstdefinition erstellen

Die letzte unterstützende Datei ist taskd.xml. Sie definiert einen benutzerdefinierten Firewall-Dienst für den Zugriff auf TaskServer:

Code
nano rpmbuild/SOURCES/taskd.xml

Füge den folgenden XML-Code in die Datei ein, um den Dienst zu beschreiben:

Code
<!--?xml version="1.0" encoding="utf-8"?-->

  Task-warrior server
  This option allows you to connect to the task warrior server.

Notwendige Abhängigkeiten für den Build installieren

Installiere alle erforderlichen Pakete, die für den Bau des TaskServer benötigt werden:

Konsole
sudo yum install cmake libuuid-devel gnutls-devel gnutls-utils -y

RPM-Paket für TaskServer kompilieren und signieren

Wechsle in das Verzeichnis rpmbuild/SPECS und starte den Build-Prozess. Gib bei Aufforderung das zuvor gesetzte GPG-Passwort ein, um das RPM zu signieren:

Konsole
cd rpmbuild/SPECS/
rpm -ba --sign taskd.spec

Erstelltes TaskServer RPM installieren

Installiere das generierte RPM-Paket auf deinem CentOS-System, um die Einrichtung von TaskServer abzuschließen:

Konsole
cd
sudo rpm -ivh rpmbuild/RPMS/x86_64/taskd-1.1.0-1.el7.centos.x86_64.rpm

Schritt 4: TaskServer (taskd) einrichten und konfigurieren

Damit sich TaskWarrior-Clients mit dem TaskServer (taskd) synchronisieren können, müssen entsprechende Server- und Client-Zertifikate erstellt werden. Die dafür benötigten Skripte befinden sich im Verzeichnis /etc/pki/taskd/.

Wechsle zum Benutzer root und navigiere zum Verzeichnis mit den Zertifikatstools:

Konsole
sudo su -
cd /etc/pki/taskd/

Erstelle nun eine Datei mit dem Namen vars, in der die Werte für eine selbstsignierte Root-Zertifizierungsstelle (CA) definiert werden:

Code
nano vars

Füge in die Datei vars folgende Parameter ein. Du kannst dabei Werte wie Organisation oder Domain nach Bedarf anpassen:

Code
BITS=4096
EXPIRATION_DAYS=365
ORGANIZATION="centron.de."
CN=taskd.example.com
COUNTRY=US
STATE="New York"
LOCALITY="New York"

Erzeuge anschließend mit den folgenden Skripten die Root-CA, das Serverzertifikat, den privaten Schlüssel sowie optional eine Sperrliste:

Code
./generate.ca
./generate.server
./generate.crl

Die Skripte erzeugen folgende Dateien im Verzeichnis /etc/pki/taskd/:

  • ca.cert.pem
  • ca.key.pem
  • server.cert.pem
  • server.key.pem
  • server.crl.pem

Ändere Eigentümer und Zugriffsrechte, damit TaskServer auf diese Dateien zugreifen kann:

Konsole
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

Aktiviere und starte den TaskServer-Dienst mit systemd:

Konsole
systemctl enable taskd
systemctl start taskd

Öffne den benötigten TCP-Port in der Firewall und lade die Konfiguration neu:

Code
firewall-cmd --permanent --zone=public --add-port=53589/tcp
firewall-cmd --reload

Damit ist TaskServer (taskd) erfolgreich eingerichtet und betriebsbereit auf deinem CentOS 7 System.

Schritt 6: Erste TaskWarrior-Gruppe und Benutzer einrichten

Um Aufgaben mit TaskWarrior verwalten zu können, brauchst du ein Benutzerkonto. Bevor du Benutzer anlegst, musst du zunächst eine Organisationsgruppe erstellen. Verwende dazu folgenden Befehl und ersetze GROUP durch einen passenden Namen deiner Wahl:

Wichtig: Führe diesen Befehl unbedingt als Benutzer taskd aus – nicht als root. Andernfalls entstehen falsche Dateiberechtigungen im Verzeichnis /var/lib/taskd/orgs, was den Zugriff für Clients verhindert.

Konsole
sudo -u taskd taskd add org GROUP --data /var/lib/taskd

Nach dem Erstellen der Gruppe kannst du nun den ersten Benutzer hinzufügen. Ersetze GROUP mit dem Namen deiner Gruppe und 'Joe Q. Public' durch den vollständigen Namen des Benutzers. Notiere dir unbedingt die generierten Zugangsdaten (Benutzername, Gruppe und Schlüssel) für spätere Konfigurationen:

Konsole
sudo -u taskd taskd add user GROUP 'Joe. Q. Public' --data /var/lib/taskd

Schritt 7: TaskWarrior unter Windows 10 installieren

Um TaskWarrior unter Windows 10 (ab Build 1607) zu verwenden, musst du das Windows-Subsystem für Linux (WSL) installieren. Damit kannst du eine Linux-Umgebung nutzen, in der TaskWarrior über die Kommandozeile funktioniert.

Starte zunächst ein PowerShell-Fenster mit Administratorrechten. Drücke die Windows-Taste, suche nach PowerShell, klicke mit der rechten Maustaste darauf und wähle Als Administrator ausführen. Bestätige die Abfrage mit Ja und führe dann folgenden Befehl aus, um WSL zu aktivieren:

Code
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Sobald die Installation abgeschlossen ist, drücke Y, um das System neu zu starten. Nach dem Reboot öffne die Eingabeaufforderung und gib folgenden Befehl ein:

Code
bash

Dadurch wird Ubuntu installiert. Folge den Anweisungen und wähle einen Benutzernamen sowie ein Passwort.

Installiere TaskWarrior in der Linux-Shell mit folgendem Befehl:

Konsole
sudo apt-get install task -y

Gib anschließend zweimal exit ein, um Bash und die Eingabeaufforderung zu schließen. Für schnellen Zugriff auf Bash: Öffne das Startmenü, suche nach Ubuntu, klicke mit der rechten Maustaste auf Bash on Ubuntu on Windows und wähle An Taskleiste anheften.

Klicke auf das Ubuntu-Symbol in der Taskleiste und führe diesen Befehl aus, um das Datenverzeichnis und die Konfigurationsdatei von TaskWarrior zu erzeugen:

Code
task version
yes

Lege nun die Datei certificates.zip – die du zuvor während der Einrichtung von TaskServer erstellt hast – im Verzeichnis ~/.task/ ab. Installiere unzip, falls noch nicht vorhanden, und extrahiere die Datei wie folgt (passe den Pfad zu deinem Benutzer an):

Konsole
sudo apt-get install unzip -y
cp /mnt/c/User/WINDOWSUSER/Desktop/certificates.zip .
cd .task
unzip ../certificates.zip
cd

Richte TaskWarrior ein, um mit dem TaskServer zu kommunizieren. Ersetze dabei die Platzhalter durch deine tatsächlichen Werte für Zertifikate, Gruppe, Benutzer und eindeutigen Schlüssel:

Code
task config taskd.ca -- ~/.task/ca.cert.pem
task config taskd.certificate -- ~/.task/**NAME**.cert.pem
task config taskd.key -- ~/.task/**NAME**.key.pem
task config taskd.server -- taskd.example.com:53589
task config taskd.credentials -- GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX

Zum Abschluss initialisiere die Synchronisierung mit dem Server durch folgenden Befehl:

Code
task sync init

TaskWarrior ist nun erfolgreich auf deinem Windows 10 System eingerichtet und mit dem TaskServer verbunden.

Schritt 8: TaskWarrior unter Android installieren

Um TaskWarrior auf einem Android-Gerät zu nutzen, lade die offizielle App TaskWarrior For Android aus dem Google Play Store herunter.

  1. Öffne den Google Play Store und installiere TaskWarrior For Android.
  2. Starte die App nach erfolgreicher Installation.
  3. Gib beim ersten Start deinen gewünschten Kontonamen ein – dieser muss mit dem Benutzernamen übereinstimmen, den du zuvor im TaskServer erstellt hast.
  4. Lass den Eintrag für den Datenordner auf dem Standardwert <<Create new>> stehen und tippe auf OK.
  5. Erstelle mit einer Datei-Manager-App einen neuen Ordner auf deinem Gerät, z. B. unter /storage/emulate/0/Certs.
  6. Speichere die zuvor erstellte certificates.zip Datei in diesem Ordner und entpacke sie vollständig.
  7. Wechsle zurück zur TaskWarrior-App und öffne das Menü über das Symbol oben links.
  8. Scrolle nach unten und wähle den Eintrag Einstellungen, um den internen Editor zu öffnen.

Trage dort folgende Einstellungen ein, um die Synchronisierung mit deinem TaskServer zu aktivieren. Ersetze NAME, GROUP, Joe Q. Public sowie den Benutzerschlüssel mit deinen tatsächlichen Werten:

Code
taskd.ca=/storage/emulate/0/Certs/ca.cert.pem
taskd.certificate=/storage/emulate/0/Certs/NAME.cert.pem
taskd.credentials=GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
taskd.key=/storage/emulate/0/Certs/NAME.key.pem
taskd.server=taskd.example.com:53589

Nachdem du alle Daten eingegeben hast, speichere die Konfiguration über das Diskettensymbol.

Die TaskWarrior-App auf deinem Android-Gerät ist nun erfolgreich mit deinem TaskServer verbunden und synchronisiert.

Schritt 9: TaskWarrior unter Linux installieren

Um TaskWarrior unter Linux zu installieren, verwende das Paketverwaltungssystem deiner Distribution oder lade es direkt von der offiziellen TaskWarrior-Website herunter.

Nach der Installation öffne ein Terminal und führe den folgenden Befehl aus, um die Konfigurationsdatei und das Datenverzeichnis zu erstellen:

Code
task version
yes

Verschiebe nun die Datei certificates.zip aus der TaskServer-Einrichtung in dein Home-Verzeichnis. Entpacke sie in das Verzeichnis ~/.task. Falls das Tool unzip nicht installiert ist, hole dies vorher über deinen Paketmanager nach. Führe dann folgende Befehle aus (Passe den Pfad zur ZIP-Datei bei Bedarf an):

Code
cp /location/of/certificates.zip .
cd .task
unzip ../certificates.zip
cd

Konfiguriere nun TaskWarrior so, dass es sich mit dem TaskServer verbindet. Ersetze die Platzhalter NAME, GROUP, Joe Q. Public und den eindeutigen Benutzerschlüssel mit deinen tatsächlichen Werten:

Code
task config taskd.ca -- ~/.task/ca.cert.pem
task config taskd.certificate -- ~/.task/**NAME**.cert.pem
task config taskd.key -- ~/.task/**NAME**.key.pem
task config taskd.server -- taskd.example.com:53589
task config taskd.credentials -- GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX

Starte anschließend die Synchronisierung mit folgendem Befehl:

Code
task sync init

Tipp: Wer GNOME Shell verwendet, kann sich die Erweiterung „TaskWhisper“ ansehen, um TaskWarrior direkt ins Desktop-Erlebnis zu integrieren.

Dein TaskWarrior-Client ist nun erfolgreich mit dem TaskServer unter Linux verbunden und synchronisiert.

Fazit

Die Kombination aus TaskWarrior und TaskServer bietet dir eine sichere, plattformübergreifende und vollständig synchronisierte Lösung zur Aufgabenverwaltung. Ob unter CentOS, Windows, Linux oder Android – mit dieser Anleitung kannst du deine Aufgaben auf mehreren Geräten verwalten und synchron halten.

Durch die Verwendung von Zertifikaten und verschlüsselter Kommunikation ist die gesamte Umgebung auf Datenschutz und Kontrolle ausgelegt – ideal für Einzelpersonen und Teams. Nach dieser Einrichtung verfügst du über eine voll funktionsfähige, sichere und flexible Task-Management-Plattform, die sofort einsatzbereit ist.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren