DEV Community

Cover image for How to Self-Host Kimai (Time Tracking) on Linux (with Monitoring)
Alexander Neitzel
Alexander Neitzel

Posted on • Originally published at garmingo.com

How to Self-Host Kimai (Time Tracking) on Linux (with Monitoring)

Kimai is a slick, open-source time tracking tool — great for freelancers, teams, and agencies who want full control and privacy.

In this guide, I’ll show you how to self-host Kimai using Docker on any Linux server (Ubuntu, Debian…), get it up and running in minutes, and make sure it stays online 24/7 with monitoring from Garmingo.

Let’s go 👇


🧰 What You’ll Need

  • A Linux server with Docker + Docker Compose
  • Basic terminal access (SSH)
  • Optional: domain + HTTPS
  • 10 minutes

🚀 Step 1: Create a Project Directory

mkdir kimai && cd kimai 
Enter fullscreen mode Exit fullscreen mode

⚙️ Step 2: Create a docker-compose.yml

Paste this into docker-compose.yml:

version: '3.7' services: kimai: image: kimai/kimai2:apache restart: unless-stopped ports: - "8001:8001" environment: - ADMINMAIL=admin@yourdomain.com - DATABASE_URL=mysql://kimai:kimai@db/kimai depends_on: - db db: image: mysql:5.7 restart: unless-stopped environment: - MYSQL_DATABASE=kimai - MYSQL_USER=kimai - MYSQL_PASSWORD=kimai - MYSQL_ROOT_PASSWORD=rootpass volumes: - mysql_data:/var/lib/mysql volumes: mysql_data: 
Enter fullscreen mode Exit fullscreen mode

🧱 Step 3: Launch Kimai

Run the stack:

docker compose up -d 
Enter fullscreen mode Exit fullscreen mode

Wait a minute, then open:

http://your-server-ip:8001

Login with:

  • Username: admin
  • Password: changeme

Change your password immediately.


🌐 Step 4: Optional – Add Domain + SSL

Point time.yourdomain.com to your server.

Use a reverse proxy like Caddy, Nginx Proxy Manager, or Traefik to:

  • Forward HTTPS requests to port 8001
  • Secure the connection with Let’s Encrypt

🧪 Step 5: Start Tracking Time

Log in → create customers, projects, and time entries.

You can also invite your team and enable timesheets, exports, and invoice generation.


✅ Step 6: Monitor Your Kimai Instance with Garmingo Status

Kimai handles critical workflows — especially for clients, timesheets, and billing.

If it goes offline and you don’t know… you’ve got problems.

Set up Garmingo Status to:

  • Monitor https://time.yourdomain.com or your IP
  • Alert you via Slack, Email, Telegram, Discord, or Webhook
  • Show uptime history & log incidents
  • Share a public or private status page
  • Get monthly uptime reports

🆓 All available on the forever free plan — no credit card needed.

👉 Set up your monitoring now


🧘 TL;DR

  • ✅ Deploy Kimai with Docker
  • 🔐 Secure with domain + HTTPS
  • 🕵️ Track your time
  • 📈 Monitor with Garmingo Status

Time tracking shouldn’t stop when your server crashes.

👉 Monitor your Kimai instance today

Top comments (0)