Self-host TimeTracker in 4 steps
Each step is short. From zero to logging hours in about 5 minutes — Docker required.
Or skip ahead — try the live demo
Docker Deployment (Recommended)
If you have Docker installed, you can have TimeTracker running in under 5 minutes. No complex configuration needed.
Minimal Requirements
512MB RAM, Docker support, a few GB storage
Works Everywhere
Linux, Windows (WSL), macOS, Raspberry Pi, VPS, cloud servers
No Database Setup
SQLite included by default, PostgreSQL optional for scale
Getting Help
We provide comprehensive documentation and community support to help you get started.
Step 1 of 4
Quick Start
Get TimeTracker up and running in minutes
# Clone the repository
git clone https://github.com/drytrix/TimeTracker.git
cd TimeTracker
# Start with Docker
docker-compose -f docker-compose.local-test.yml up --build
# Access at http://localhost:8080
Need Help Getting Started?
We're here to help! Get support through our community or reach out directly.
Support the project (donate, purchase key)
Step 2 of 4
Configure for production
Point a real hostname at your instance, terminate TLS in front of Docker, and lock down backups before you invite the wider team.
TLS and public URL
Put Caddy, nginx, or Traefik in front of the container and obtain a certificate (Let's Encrypt or your internal PKI). Ensure the browser-visible URL matches what users will bookmark—mixed HTTP/HTTPS redirects confuse SSO bookmarks.
- Forward
Hostand WebSocket headers if you use live timers in the UI. - Keep container ports off the public internet; only the reverse proxy should listen on 443.
Environment and database
SQLite is fine for pilots and small teams. When you outgrow it, switch to PostgreSQL using the upstream repository's deployment notes—run the migration on a copy first.
All variable names and compose overrides live in the main TimeTracker README; this marketing site stays generic so docs never drift from the code.
Production checklist
- Backups: snapshot the database file or volume and any uploaded assets on a schedule you can restore from cold storage.
- Updates: pin a release tag in Git, pull, rebuild containers, and smoke-test timers + invoicing after each upgrade.
- Access: enforce MFA at the SSO or VPN layer if the app is reachable outside your office network.
- Observability: ship container logs to your central stack so failed jobs surface before payroll day.
Step 3 of 4
Invite your team
Finish the in-app onboarding, seed clients and projects, then roll out logins once a manager has validated rates and roles.
- Admin walkthrough — complete first-login setup, set company defaults, and confirm mail settings if you use outbound email.
- Structure — create at least one client, project, and default bill rate so timers are not free-floating.
- Users & roles — invite colleagues or create accounts manually; align admin vs contributor roles with how you ran your old SaaS workspace.
- Pilot — ask two billable people to run parallel timers for a week while you compare CSV exports to your legacy tool.
Need a feature-by-feature tour first? See Features or Compare before you migrate data.
Step 4 of 4
You're live! Now explore all the features.
Open the live demo to compare your fresh install against ours, or browse every feature category.
Tip: bookmark /admin on your install for quick access to settings.