Table of Contents

Taskwarrior Notes

My stack so far is:

All operations below were performed under Debian 13.5. Debian 12 appeared to lack the necessary tools or libraries (must test further).

Server

We need to install the Task Champion server using Docker, which is opaque and full of danger:

apt-get install rust-all rustup git
apt install -y ca-certificates curl gnupg lsb-release
apt install -m 0755 -d /etc/apt/keyrings
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
newgrp docker
usermod -aG docker <regular userid>
git clone https://github.com/GothenburgBitFactory/taskchampion-sync-server.git
cd taskchampion-sync-server/
docker build -t taskchampion-sync-server -f Dockerfile-sqlite
chown [userid] -R taskchampion-sync-server

You can make a startup file like:

docker run -t -d --name=taskchampion -e LISTEN=0.0.0.0:9999 -p 9999:9999 taskchampion-sync-server

BE CAREFUL! If your destroy the Docker image, your database is gone, too! In theory, any up-to-date client could re-populate it by doing a sync init, but this is untested.

Client

We must compile the TW client directly since the pre-build Debian package does not include the sync feature:

git clone https://github.com/GothenburgBitFactory/taskwarrior.git
cd taskwarrior
git submodule update --init --recursive
apt-get install rust-all cargo cmake gcc build-essential cmake uuid-dev git gnupg
apt-get install rustup
rustup default stable     [may be unnecessary]
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build

In WSL under Windows 11, I had to do this instead. Something to do with rust and corrosion version conflicts:

cmake -S . -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DRust_CARGO_TARGET=x86_64-unknown-linux-gnu \
  -DCorrosion_RUSTC_EXECUTABLE="$HOME/.cargo/bin/rustc"

Client setup:

task config sync.server.url http://site:port
task config sync.server.client_id <a UUID you generate with uuidgen 
task config sync.encryption_secret "passphrase you make up"
task sync init   [should only be needed for first sync on main client, to xfer sqlite data to Task Champion]
task sync

Mobile

The Android client Taskstrider works with this setup.

Notes

Command Reference (for 2.5.3, can't find one for 3.4.x yet)

Unfortunately, the official taskwarrior-tui does not work with version 3.4 yet, but this works.