NewsletterSupport
Garmingo Logo
Garmingo Logo

Garmingo - Excellence for Everyone

Products

StatusHelpdeskGames

Resources

Documentation
Knowledgebase
Knowledgebase
Coming soon
NewsletterRoadmap

Company

About usCareerPress and Media

Connect

BlogContact usSystem Status

© 2025 Garmingo. All rights reserved.

Imprint
Terms of Service
Privacy Policy
Cookie Policy
Return Policy
Disclaimer
Garmingo Logo

Garmingo - Excellence for Everyone

StatusHelpdeskGames
Documentation
Knowledgebase
Knowledgebase
Coming soon
NewsletterRoadmap
About usCareerPress and Media
BlogContact usSystem Status
ImprintTerms of ServicePrivacy PolicyCookie PolicyReturn PolicyDisclaimer

© 2025 Garmingo. All rights reserved.

Blog
/
Community
Thumbnail of the blog post How to Self-Host Kimai (Time Tracking) on Linux (with Monitoring)

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

5/11/2025

Community

1108 views

GarmingoGarmingo

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

⚙️ 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:

🧱 Step 3: Launch Kimai

Run the stack:

docker compose up -d

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

Got an idea? Let us know

Alexander NeitzelAlexander Neitzel