This is the canonical list of where to get and install TimeTracker. Pick the path that matches your environment.
| I want to⦠| Go here |
|---|---|
| Run on a NAS (QNAP, Synology, Portainer) | NAS Deployment Guide + docker-compose.nas.yml |
| Pull a Docker image | Docker Hub or docker pull ghcr.io/drytrix/timetracker:latest |
| Deploy on a server with Docker Compose | INSTALLATION.md |
| One-click cloud deploy | Render Β· Railway Β· Fly.io Β· Coolify |
| Install from Unraid Community Apps | Unraid |
| Add to Portainer App Templates | Portainer |
| Download desktop/mobile clients | GitHub Releases |
Official multi-arch images (linux/amd64, linux/arm64) are built on every release.
docker pull ghcr.io/drytrix/timetracker:latest
docker pull ghcr.io/drytrix/timetracker:v5.10.1 # specific versionRepository: hub.docker.com/r/drytrix/timetracker
docker pull drytrix/timetracker:latestNote: The Docker Hub namespace moved from
driesp/timetrackertodrytrix/timetracker. Update any scripts or bookmarks that used the old URL.
If Docker Hub is unavailable, use GHCR.
docker pull ghcr.io/drytrix/timetracker:developUse with docker/docker-compose.remote-dev.yml.
| File | Use case |
|---|---|
docker-compose.nas.yml |
NAS, Portainer web editor, simple HTTP (app + Postgres) |
docker/docker-compose.remote.yml |
Production HTTPS with nginx (requires git clone) |
docker-compose.example.yml |
Simple HTTP from cloned repo |
GitHub Release docker-compose.production.yml |
Full production stack artifact |
GitHub Release docker-compose.nas.yml |
NAS stack artifact (same as repo file) |
curl -fsSL -o docker-compose.nas.yml \
https://raw.githubusercontent.com/drytrix/TimeTracker/main/docker-compose.nas.yml
echo "SECRET_KEY=$(openssl rand -hex 32)" > .env
docker compose -f docker-compose.nas.yml up -dRaw compose URL (for pasting into NAS UIs):
https://raw.githubusercontent.com/drytrix/TimeTracker/main/docker-compose.nas.yml
Each release includes:
docker-compose.production.ymlβ full production stackdocker-compose.nas.ymlβ NAS-friendly stackk8s-deployment.ymlβ basic Kubernetes manifest- Desktop installers (Windows
.exe, Linux.AppImage/.deb, macOS.dmg) when CI succeeds - Mobile builds (Android APK/AAB, iOS simulator zip) when CI succeeds
Download: github.com/drytrix/TimeTracker/releases
Add TimeTracker to Portainer's template catalog:
- In Portainer, go to Settings β App Templates
- Set App Templates URL to:
https://raw.githubusercontent.com/drytrix/TimeTracker/main/templates/portainer/templates.json - Refresh App Templates and deploy TimeTracker
Template definition: templates/portainer/templates.json
See also: Portainer Deployment Guide
Template XML files live in templates/unraid/:
| Template | File |
|---|---|
| PostgreSQL database | templates/unraid/timetracker-db.xml |
| TimeTracker app | templates/unraid/timetracker-app.xml |
- Copy both XML files to
/boot/config/plugins/dockerMan/templates-user/on your Unraid server - In Docker β Add Container, pick TimeTracker-DB first, deploy
- Add TimeTracker app container on the same custom network (
timetracker) - Set
SECRET_KEY(generate withopenssl rand -hex 32)
To list TimeTracker in the official Unraid CA catalog:
- Ensure
templates/unraid/ca_profile.xmlmetadata is current - Go to ca.unraid.net/submit
- Point the repository URL at this repo (or a dedicated
unraid-ca-templatesrepo containingtemplates/unraid/) - Run Validate, then Scan
- Wait for moderator review (typically 1β2 weeks)
Checklist before submitting:
-
Repositoryin each XML points to a valid image (ghcr.io/drytrix/timetracker:latest,postgres:16-alpine) -
TemplateURLin each XML points to the raw GitHub URL for that file -
Support,Project, andOverviewfields are filled in -
WebUIis set tohttp://[IP]:[PORT:8080]/on the app template - Tested on a clean Unraid install
One-click Blueprint deploy (PostgreSQL + web service from GHCR image):
Blueprint file: render.yaml
- Create a new project at railway.app
- Add a PostgreSQL plugin
- Add a Docker image service:
ghcr.io/drytrix/timetracker:latest - Set environment variables (see
railway.toml) - Set
DATABASE_URLfrom the Postgres plugin connection string
# Requires external Postgres (Fly Postgres, Neon, etc.)
fly launch --no-deploy --image ghcr.io/drytrix/timetracker:latest
fly secrets set SECRET_KEY="$(openssl rand -hex 32)" DATABASE_URL="postgresql://..."
fly deployConfig: fly.toml
- In Coolify, create a new Docker Compose resource
- Set Repository URL to
https://github.com/drytrix/TimeTracker - Set Compose file to
docker-compose.nas.yml - Add environment variable
SECRET_KEY(generate withopenssl rand -hex 32) - Deploy
Coolify pulls the compose file from Git and uses the prebuilt GHCR image β no local build.
Server Docker images do not include desktop or mobile apps. Client binaries are published on GitHub Releases when CI builds succeed.
Build from source: see desktop/README.md and mobile/README.md.
QNAP App Center and Synology Package Center require native packages (QPKG/SPK), not Docker Compose alone. Until those packages exist, use:
- NAS Deployment Guide β Container Station / Container Manager
- This page β compose file + Docker image
Track demand via GitHub issues labeled platform:nas before investing in native packaging.
On each release, maintainers should:
- Verify GHCR and Docker Hub images published (CI:
cd-release.yml) - Verify Docker Hub description was auto-updated from
docker/hub-README.md(cd-release.yml) - Confirm GitHub Release includes
docker-compose.nas.yml - Re-test Portainer template URL and Unraid XML if compose changed
See Release Process for the full checklist.