176 words
1 minutes
How to Install Kimai with Docker Compose

How to Install Kimai with Docker Compose#

Create a new folder:

mkdir kimai
cd kimai

Environment Variables#

Create .env file:

nano .env

Add the following environment variables:

MYSQL_DATABASE=kimai
MYSQL_USER=kimaiuser
MYSQL_PASSWORD=****
MYSQL_ROOT_PASSWORD=****

ADMINMAIL=admin@kimai.local
ADMINPASS=****

MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD, and ADMINPASS should be no longer than 64 characters and use only alphanuermic characters, with no special character.

ADMINMAIL and ADMINPASS are your admin username and password.

Docker Compose#

Create docker-compose.yml:

nano docker-compose.yml

Add the following content:

services:
  sqldb:
    image: mysql:8.3
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    restart: unless-stopped

  kimai:
    image: kimai/kimai2:apache
    ports:
      - "9093:8001"
    environment:
      ADMINMAIL: ${ADMINMAIL}
      ADMINPASS: ${ADMINPASS}
      DATABASE_URL: mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@sqldb:3306/${MYSQL_DATABASE}?charset=utf8mb4
      TRUSTED_HOSTS: '^clock\.example\.com$|^localhost$|^127\.0\.0\.1$'
    restart: unless-stopped

Update TRUSTED_HOSTS with your domain and leave the other settings unchanged.

Start Kimai:

docker compose up -d

Caddy#

Open Caddyfile:

sudo nano /etc/caddy/Caddyfile

Add the following content:

clock.example.com {
  reverse_proxy localhost:9093
}

Restart caddy:

sudo systemctl restart caddy

Usage#

Go to https://clock.example.com and login using the ADMINMAIL and ADMINPASS values from your .env flie.

NOTE

Kimai may take around 1 minute to start up the first time, while initializing the database.

TIP

To check if Kimai and its database are running correctly, run: docker compose logs -f kimai in the same folder where your docker-compose.yml file is located.

How to Install Kimai with Docker Compose
https://blog.juyung.com/posts/en/2026/02/05/
Author
Jay
Published at
2026-02-05
License
CC BY