Nomploy Nomad Packs

← All packs

kimai v0.1.0

Apps

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.

nomad-pack run kimai --registry nomploy
3 tasks http 8001db 3306 3 volumes image kimai/kimai2:apache-latest
Variables 17
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run kimai -f values.hcl --registry nomploy
# 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
  }
NameTypeDefaultDescription
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.
Readme

kimai

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.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run kimai --registry=nomploy

Configure

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_hosts to 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 with constraints.