Kimai — a professional self-hosted time-tracking app: track time per customer/project/activity, manage teams and rates, and export invoices and reports. Deployed as an all-in-one host-networked Nomad job: a MariaDB sidecar plus the Kimai app.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "kimai"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Kimai (Apache) container image. Pin a tag in production.
image = "kimai/kimai2:apache-latest"
# The MariaDB image for the bundled database.
mariadb_image = "mariadb:11"
# Host port for the Kimai web UI.
port = 8001
# Host port for the co-located MariaDB.
db_port = 3306
# Password for the Kimai database user.
db_password = "kimai"
# Initial super-admin email (ADMINMAIL).
admin_email = "admin@nomploy.local"
# Initial super-admin password (ADMINPASS, min 8 chars). CHANGE THIS.
admin_password = "changeme-please"
# Hosts Kimai will answer for (TRUSTED_HOSTS). Include the node IP/domain you access it on.
trusted_hosts = "localhost,127.0.0.1"
# UID the app runs as (www-data). The data volume is chown'd to this at startup.
uid = 33
# Named volume for Kimai runtime data — invoices, uploads (/opt/kimai/var/data).
data_volume = "kimai_data"
# Named volume for MariaDB data (/var/lib/mysql). Holds all time records.
db_data_volume = "kimai_db_data"
# Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# Resources for the Kimai app task.
resources = {
cpu = 500
memory = 512
}
# Resources for the MariaDB task.
mariadb_resources = {
cpu = 300
memory = 512
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "kimai" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "kimai/kimai2:apache-latest" | The Kimai (Apache) container image. Pin a tag in production. |
| mariadb_image | string | "mariadb:11" | The MariaDB image for the bundled database. |
| port | number | 8001 | Host port for the Kimai web UI. |
| db_port | number | 3306 | Host port for the co-located MariaDB. |
| db_password key | string | "kimai" | Password for the Kimai database user. |
| admin_email | string | "admin@nomploy.local" | Initial super-admin email (ADMINMAIL). |
| admin_password set me | string | "changeme-please" | Initial super-admin password (ADMINPASS, min 8 chars). CHANGE THIS. |
| trusted_hosts | string | "localhost,127.0.0.1" | Hosts Kimai will answer for (TRUSTED_HOSTS). Include the node IP/domain you access it on. |
| uid | number | 33 | UID the app runs as (www-data). The data volume is chown'd to this at startup. |
| data_volume | string | "kimai_data" | Named volume for Kimai runtime data — invoices, uploads (/opt/kimai/var/data). |
| db_data_volume | string | "kimai_db_data" | Named volume for MariaDB data (/var/lib/mysql). Holds all time records. |
| constraints | list | [] | Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 500
memory = 512
} | Resources for the Kimai app task. |
| mariadb_resources | object | {
cpu = 300
memory = 512
} | Resources for the MariaDB task. |
No variables match.
Kimai — a professional self-hosted time-tracking app: track time per customer/project/activity, manage teams and rates, and export invoices and reports.
All-in-one host-networked Nomad job: a busybox chown init, a MariaDB prestart sidecar, and the Kimai (Apache) app.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run kimai --registry=nomploy
| Variable | Default | Description |
|---|---|---|
port |
8001 |
Web UI port. |
db_port |
3306 |
Co-located MariaDB port. |
db_password |
kimai |
Database password. |
admin_email / admin_password |
admin defaults | Initial super-admin. Change the password. |
trusted_hosts |
localhost,127.0.0.1 |
Hosts Kimai answers for — add your node IP/domain. |
uid |
33 |
User the app runs as (www-data); data volume chown'd to it. |
data_volume / db_data_volume |
named volumes | Uploads/invoices / MariaDB data. |
resources / mariadb_resources |
see defaults | Per-task resources. |
Set
trusted_hoststo the host/IP or domain you access Kimai on, or it returns an "Invalid host" error. Pin the job to the node holding the volumes withconstraints.