Apps / Imágenes Docker
Kimai en Docker.
Registro de horas, listo para producción.
Kimai es una aplicación open source de registro de horas para freelancers y equipos: partes de horas, proyectos y actividades, clientes, tarifas, exportaciones y facturación, con roles y un API REST.
docker pull ghcr.io/remarkablecloud/kimai Build actual
2.66.0-r1
Updated Jan 1, 1970
Base
Kimai 2 oficial, anclada por digest
Qué trae
Pareja MariaDB, admin auto-provisionado, healthcheck
Licencia upstream
Kimai: AGPL-3.0
Free to pull and run anywhere. Digest-pinned, updated deliberately; each build is recorded in the changelog.
La imagen
Qué agrega nuestra imagen.
Kimai es una aplicación open source de registro de horas para freelancers y equipos: partes de horas, proyectos y actividades, clientes, tarifas, exportaciones y facturación, con roles y un API REST.
Base anclada por digest
Construida desde `kimai/kimai2@sha256:d67478...` (Kimai 2.66.0, PHP 8.3, Apache, Debian 12). Anclar por digest mantiene las reconstrucciones reproducibles.
Instalación por variables
En el primer arranque el entrypoint de upstream espera la base, corre migraciones y crea el admin. Nuestro envoltorio genera una contraseña de admin fuerte, la persiste en el volumen de datos y la imprime una vez. Puedes fijar la tuya con `ADMINPASS`.
URL de base de datos segura
El envoltorio construye `DATABASE_URL` desde variables separadas de host, puerto, nombre, usuario y contraseña, codificando la contraseña para que los caracteres especiales no rompan la cadena de conexión.
App secret persistente
El entrypoint de upstream auto-genera un `APP_SECRET` único y lo persiste en `var/data`, así nunca corre con el default público y las sesiones sobreviven reinicios.
Consciente del proxy
`TRUSTED_PROXIES` cubre las redes privadas, así que Kimai honra `X-Forwarded-Proto` detrás de un reverse proxy que termina TLS y genera URLs https correctas.
Healthcheck
Un `HEALTHCHECK` del contenedor confirma que la app responde. El tag publicado actual es `ghcr.io/remarkablecloud/kimai:2.66.0-r1`.
La guía
Córrelo en producción.
Resumen de producción
Dos contenedores: Kimai (Apache + PHP en el puerto 8001 interno) y MariaDB. El primer arranque corre migraciones y crea el admin con contraseña generada, impresa una vez en el log; el APP_SECRET se genera y persiste solo, así las sesiones sobreviven reinicios. Detrás de tu proxy TLS, TRUSTED_PROXIES ya honra X-Forwarded-Proto. Respalda la base de datos y var/data juntos. Para actualizar, cambia al tag nuevo y recrea.
La guía técnica completa (Compose, variables, hardening, respaldos y upgrades) está disponible en inglés: ver la guía completa.
FAQ
Preguntas que nos hacen.
¿Necesito una base de datos?
Sí. Kimai guarda partes de horas y configuración en MariaDB (o MySQL). El compose independiente incluye MariaDB.
¿De dónde sale la contraseña de admin?
Si defines `ADMINPASS`, se usa ese valor. Si lo dejas vacío, la imagen genera una fuerte en la primera corrida y la imprime una vez en el log del contenedor.
¿Por qué el contenedor escucha en 8001?
Es el puerto Apache por defecto de Kimai. Mapéalo a cualquier puerto local; en producción el reverse proxy conecta a `8001` por la red interna.
¿Cómo funciona HTTPS si el contenedor solo sirve HTTP?
El TLS se termina en el reverse proxy (Traefik en la App Platform). Con `TRUSTED_PROXIES` definido, Kimai honra `X-Forwarded-Proto` y genera URLs https.
¿Puedo usar MySQL en vez de MariaDB?
Sí. Kimai conecta con el driver de MySQL, que funciona con MySQL 8 y MariaDB; apunta `KIMAI_DB_HOST` a tu servidor.
Your server runs. You sleep.
Fully managed hosting from people who have been doing this since 2001.