All apps · 0 apps
taskchampion-sync-server
Docker app from UnraidUser-3609265787's Repository
Overview
Readme
View on GitHubTaskChampion Sync-Server
TaskChampion is the task database Taskwarrior uses to store and sync tasks. This repository implements a sync server against which Taskwarrior and other applications embedding TaskChampion can sync.
Status
This project provides both pre-built images for common use-cases and Rust libraries that can be used to build more sophisticated applications. See the documentation for more on how to use this project.
Repository Guide
The repository is comprised of four crates:
taskchampion-sync-server-coreimplements the core of the protocoltaskchampion-sync-server-storage-sqliteimplements an SQLite backend for the coretaskchampion-sync-server-storage-postgresimplements a Postgres backend for the coretaskchampion-sync-serverimplements a simple HTTP server for the protocol
Building From Source
Installing Rust
TaskChampion Sync-Server build has been tested with current Rust stable
release version. You can install Rust from your distribution package or use
rustup.
rustup default stable
The minimum supported Rust version (MSRV) is given in
Cargo.toml. Note that package repositories typically do not
have sufficiently new versions of Rust.
If you prefer, you can use the stable version only for installing TaskChampion Sync-Server (you must clone the repository first).
rustup override set stable
Building TaskChampion Sync-Server
To build TaskChampion Sync-Server binary simply execute the following commands.
git clone https://github.com/GothenburgBitFactory/taskchampion-sync-server.git
cd taskchampion-sync-server
cargo build --release
After build the binary is located in
target/release/taskchampion-sync-server.
Building the Postgres Backend
The storage backend is controlled by Cargo features postres and sqlite.
By default, only the sqlite feature is enabled.
To enable building the Postgres backend, add --features postgres.
The Postgres binary is located in
target/release/taskchampion-sync-server-postgres.
Building the Docker Images
To build the images, execute the following commands.
SQLite:
docker build \
-t taskchampion-sync-server \
-f Dockerfile-sqlite .
Postgres:
source .env
docker build \
-t taskchampion-sync-server-postgres \
-f Dockerfile-postgres .
Now to run it, simply exec.
docker run -t -d \
--name=taskchampion \
-p 8080:8080 \
taskchampion-sync-server
This starts TaskChampion Sync-Server and publishes port 8080 to the host. Please
note that this is a basic run, all data will be destroyed after stop and
delete container. You may also set DATA_DIR, CLIENT_ID, or LISTEN with -e, e.g.,
docker run -t -d \
--name=taskchampion \
-e LISTEN=0.0.0.0:9000 \
-p 9000:9000 \
taskchampion-sync-server
Install taskchampion-sync-server on Unraid in a few clicks.
Find taskchampion-sync-server in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/furan917/taskchampion-sync-server:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
Host port mapped to the container's internal port 8080. Default is 8007 to avoid conflicts with common Unraid services.
- Target
- 8080
- Default
- 8007
- Value
- 8007
Persistent storage for the SQLite task database.
- Target
- /var/lib/taskchampion-sync-server
- Default
- /mnt/user/appdata/taskchampion-sync-server
- Value
- /mnt/user/appdata/taskchampion-sync-server
UID the server process runs as. Defaults to Unraid's nobody user (99). Change to match your user ID on other systems (run `id` to find it).
- Default
- 99
- Value
- 99
GID the server process runs as. Defaults to Unraid's users group (100). Change to match your group ID on other systems (run `id` to find it).
- Default
- 100
- Value
- 100
Required. UUID(s) allowed to sync. Comma-separated for multiple devices (e.g. uuid1,uuid2). Generate a UUID with `uuidgen` on Linux/Mac or use an online generator. The container will not start without this.
- Target
- CLIENT_ID
Set to true to prevent new clients from registering after initial setup. Only useful after all your devices have synced at least once — enabling this before first sync will block even allowed clients.
- Target
- NO_CREATE_CLIENTS
- Default
- false
- Value
- false
Address and port the server binds to inside the container. Only change this if you also adjust the container port above.
- Target
- LISTEN
- Default
- 0.0.0.0:8080
- Value
- 0.0.0.0:8080