Kimai è un software open source per la gestione del tempo e la fatturazione progettato per freelance, team e aziende che hanno bisogno di monitorare le ore lavorative in modo semplice ma strutturato.
Grazie alla sua interfaccia web intuitiva, permette di registrare attività, progetti e clienti, generare report dettagliati e persino emettere fatture direttamente dal sistema.
Una delle caratteristiche più apprezzate è la sua flessibilità: Kimai può essere utilizzato tanto come semplice time tracker personale quanto come soluzione completa di gestione del lavoro collaborativo.
In questo articolo vedremo come procedere con l’installazione e la configurazione base di Kimai su Ubuntu Server 24.04, così da avere un’istanza funzionante e pronta per essere personalizzata in base alle proprie esigenze.
PREREQUISITI
Prima di iniziare il processo di installazione, assicurarsi di avere:
Ubuntu Server aggiornato
Utente non root con privilegi sudo.
INSTALLAZIONE DEL SOFTWARE NECESSARIO
Iniziamo con installare il software necessario con i seguenti comandi:
0 |
sudo apt-get updatesudo apt-get upgradesudo apt-get install git unzip curl vim mariadb-server mariadb-client nginx
|
AGGIUNTA DEL REPOSITORY PHP
Kimai richiede PHP 8.1 o superiore. Per impostazione predefinita, il repository di Ubuntu Server fornisce solo PHP 7.2.
Per installare PHP 8.3, aggiungeremo un repository PPA di terze parti.
Installare software-properties-common (se non presente): Questo pacchetto è necessario per usare il comando add-apt-repository:
0 |
sudo apt install software-properties-common -y
|
Aggiungere il repository PPA di Ondřej Surý con il comando:
0 |
sudo add-apt-repository ppa:ondrej/php -y
|
Aggiornare l’elenco dei pacchetti dopo aver aggiunto il repository con il comando:
0 |
sudo apt update
|
Dopo aver aggiunto il PPA, esegui il seguente comando per installare PHP 8.3:
0 |
sudo apt-get install php8.3 php8.3-curl php8.3-fpm php8.3-gd php8.3-intl php8.3-mbstring php8.3-mysql php8.3-opcache php8.3-xml php8.3-zip
|
Verificare la versione del PHP installata con il comando:
0 |
php -v
|
Dovremmo visualizzare il seguente output:
0 |
PHP 8.3.6 (cli) (built: Jul 14 2025 18:30:55) (NTS)Copyright (c) The PHP GroupZend Engine v4.3.6, Copyright (c) Zend Technologieswith Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
|
INSTALLAZIONE DEL COMPOSER
Prendere l’ultimo hash dalla pagina di download del compositore:
https://getcomposer.org/download/
e poi seseguirlo con il comando:
0 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"php composer-setup.phpphp -r "unlink('composer-setup.php');"
|
Se è andato tutto a buon fine dovremmo visualizzare il seguente output:
0 |
Installer verifiedAll settings correct for using ComposerDownloading...Composer (version 2.8.11) successfully installed to: /home/user/composer.pharUse it: php composer.phar
|
CREAZIONE DEL DATABASE
Connettersi al database utilizzando l’utenza root:
0 |
sudo su |
Quindi collegarsi al database con il comando:
0 |
mysql -u root |
Creare un nuovo database per Kimai con il comando:
0 |
CREATE DATABASE IF NOT EXISTS `kimai`; |
Creare un nuovo utente per Kimai e concedere i privilegi al database appena creato con il comando:
0 |
CREATE USER IF NOT EXISTS `kimai`@127.0.0.1 IDENTIFIED BY "PASSWORD"; |
NOTA BENE: inserire al posto di PASSWORD la password desiderata
Concedere i privilegi al database appena creato con il comando:
0 |
GRANT select,insert,update,delete,create,alter,drop,index,references ON `kimai`.* TO [email protected]; |
Svuotare i privilegi in modo che le modifiche abbiano effetto con il comando:
0 |
FLUSH PRIVILEGES; |
Uscire con il comando:
0 |
EXIT |
INSTALLAZIONE DI KIMAI
Posizionarsi nella directory /var/www/html con il comando:
0 |
cd /var/www/
|
Clonare il GIT con il comando:
0 |
git clone -b 2.38.0 --depth 1 https://github.com/kimai/kimai.git
|
Posizionarsi nella cartella KImai con il comando:
0 |
cd kimai/
|
Quindi installare tutte librerie PHP richieste dal progetto con il comando:
0 |
composer install --no-dev --optimize-autoloader
|
Quindi editare il dile .env con il comando:
0 |
nano .env
|
All’interno del file individuare la seguente riga:
0 |
DATABASE_URL=mysql://user:PASSWORD@127.0.0.1:3306/database?charset=utf8mb4&serverVersion=10.6.12-MariaDB
|
Quindi modificarla con la riga con le info corrette:
0 |
DATABASE_URL=mysql://kimai:PASSWORD.1@127.0.0.1:3306/kimai?charset=utf8mb4&serverVersion=10.11.13-MariaDB
|
Eseguire l’installazione di Kimai con i seguenti comandi:
0 |
bin/console kimai:install -n
|
Dovremmo visualizzare il seguente output:
0 |
Start installation ...Database `kimai` for connection named default already exists. Skipped.Creating database ...[notice] Migrating up to DoctrineMigrations\Version20250608143244[notice] finished in 4396.1ms, used 54M memory, 71 migrations executed, 253 sql queries[OK] Successfully migrated to version: DoctrineMigrations\Version20250608143244Rebuilding cache ...// Clearing the cache for the prod environment with debug false[OK] Cache for the "prod" environment (debug=false) was successfully cleared.// Warming up the cache for the prod environment with debug false[OK] Cache for the "prod" environment (debug=false) was successfully warmed.[OK] Successfully installed Kimai version 2.38.0
|
Quindi creare l’utente admin con il comando:
0 |
bin/console kimai:user:create admin admin@example.com ROLE_SUPER_ADMIN
|
Inserire la password quando richiesto
Dovremmo visualizzare il seguente output:
0 |
Please enter the password:[OK] Success! Created user: admin
|
Consentire a PHP (il processo del tuo server web) di scrivere su var/ e sulle sue sottodirectory.
Eseguire all’interno della directory Kimai i seguenti comandi:
0 |
sudo chown -R :www-data .sudo chmod -R g+r .sudo chmod -R g+rw var/
|
CONFIGURAZIONE DEL WEBSERVER
Editare il file di configurazione www.conf con il comando:
0 |
nano /etc/php/8.3/fpm/pool.d/www.conf
|
Quindi accertarsi che sia presente la seguente riga:
0 |
listen = /run/php/php8.3-fpm.sock
|
Editare il virtual host file con il comando:
0 |
nano /etc/nginx/sites-available/kimai
|
Incollare la seguente configurazione all’interno:
0 |
server {listen 80 default_server;listen [::]:80 default_server;server_name www.kimai.local;root /var/www/kimai/public;index index.php;access_log off;log_not_found off;location ~ /\.ht {deny all;}location / {try_files $uri /index.php$is_args$args;}location ~ ^/index\.php(/|$) {fastcgi_pass unix:/run/php/php8.3-fpm.sock;fastcgi_split_path_info ^(.+\.php)(/.*)$;include fastcgi.conf;fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/..:/tmp/";internal;}location ~ \.php$ {return 404;}}
|
Salvare e chiudere il file di configurazione.
Rimuovere il default Host di Ubuntu quindi attivare il sito con i seguenti comandi:
0 |
unlink /etc/nginx/sites-enabled/defaultln -s /etc/nginx/sites-available/kimai /etc/nginx/sites-enabled/kimainginx -t && service nginx reload
|
Se è andato tutto a buon fine dovremmo viaualizzare il seguente output:
0 |
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
|
ACCESSO A KIMAI TRAMITE WEB GUI
Dopo aver completato tutti i passaggi è possibile accedere all’installazione di Kimai aprendo un browser web richiamando il link:
http://FQDN_O_IP_ADDRESS/
Inserire le credenziali definite in precedenza
Cliccare Next
Impostare la lingua, il timezone e il design quindi cliccare Next
Cliccare Next
Se è andato tutto a buon fine dovremmo visualizzare la Dashboard di Kimai
Kimai come tutti i software ha una serie di client opensource e una serie a pagamento
Al seguente link è possibile predere visione di tutti i client:
https://www.kimai.org/en/integrations
Mobile
CodeTimer Mobile
Piattaforma: Android
Prezzo: Gratuito, open-source
Autore: Martin Lačný (Owly)
Descrizione: Client leggero e open source per collegarsi a Kimai via API. Permette di avviare/fermare i timer, inserire ore e gestire attività direttamente da smartphone. Ideale se vuoi un’alternativa libera e senza costi.
Kimai Mobile (Android)
Piattaforma: Android
Prezzo: 19,99 €
Autore: Cloudrizon GmbH
Descrizione: App commerciale con interfaccia curata, progettata per un uso intensivo su Android. Consente gestione di progetti, attività e ore con un’integrazione fluida con Kimai. È a pagamento, ma più completa rispetto alle alternative gratuite.
Kimai Mobile (iOS)
Piattaforma: iOS (iPhone, iPad)
Prezzo: 19,99 €
Autore: Cloudrizon GmbH
Descrizione: Versione per iOS dell’app precedente. Offre le stesse funzioni: timer, inserimento ore, gestione attività, interfaccia ottimizzata per Apple. È la scelta obbligata se usi Kimai da iPhone/iPad.
️ Desktop
CodeTimer Desktop
Piattaforme: Windows, macOS, Linux
Prezzo: Gratuito, open-source
Autore: Martin Lačný (Owly)
Descrizione: Applicazione desktop open source. Permette di avviare/fermare timer direttamente dal computer, utile per chi lavora su PC e non vuole passare dal browser. Interfaccia semplice e multipiattaforma.
Eon Timer
Piattaforma: macOS
Prezzo: 19,99 €
Autore: Charlie Monroe
Descrizione: Software Mac di time tracking integrato con Kimai (sia Cloud che On-Premise). Sfrutta le caratteristiche native di macOS per un’integrazione più fluida. Pagamento una tantum.
Kemai — Desktop client
Piattaforme: Windows, macOS, Linux
Prezzo: Gratuito
Autore: Alexandre Petitjean
Descrizione: Client grafico multipiattaforma sviluppato in Qt. Molto leggero, consente di gestire progetti e attività, avviare/fermare timer. Alternativa open source e multipiattaforma a CodeTimer.
KimTrack
Piattaforme: Windows, macOS, Linux
Prezzo: 10 €
Autore: Playmoweb
Descrizione: Client che si integra nella menu bar (barra superiore o inferiore del sistema). Puoi avviare/fermare timer senza aprire finestre aggiuntive. Pensato per utenti che vogliono la massima comodità con un piccolo costo.
KimaiClock
Piattaforma: macOS
Prezzo: Gratuito
Autore: Foraum GmbH
Descrizione: App gratuita per menu bar macOS. Permette tracking rapido del tempo senza dover aprire Kimai nel browser. Leggera e pensata per semplicità.
KimaiBar
Piattaforma: macOS
Prezzo: Non indicato (in genere commerciale, simile a KimTrack)
Autore: —
Descrizione: Menu bar app nativa per macOS. Include feature aggiuntive come promemoria di inattività (idle reminders), utile per non dimenticare di avviare/fermare il tracking. Più avanzata rispetto a KimaiClock.
INSTALLAZIONE DEL CLIENT KEMAI SU PC WINDOWS
Prima di tutto scaricare il pacchetto di installazione dal link:
https://github.com/alexandreptj/kemai/releases
Scaricare il file Kemai-0.11.1-win64.msi com mostrato nell’immagine sovrastante
Eseguire l’applicazione
Cliccare Next
Cliccare Next
Cliccare Next
Cliccare Install
Cliccare Finish per chiudere il wizard
Dovremmo visualizzare l’icona Kemai sul Desktop come mostrato nell’immagine sovrastante
La prima cosa da fare è configurare l’account utente cliccando su File -> Settings
Selezionare Profiles quindi il nome del Profilo.
Inserire tutte le info riguardanti l’utente compreso l’API Token quindi cliccare Save
Cliccare Test e verificare che il collegamento col server avvenga quindi cliccare Save
Se è andato tutto a buon fine dovremmo visualizzare tutte le info relative ai Customer censite sul Server Kimai
Selezionare il Customer, il Progetto e l’attività e cliccare sul pulsante start come mostrato nell’immagine sovrastante
INSTALLAZIONE DEL CLIENT CODETIMER SU PC WINDOWS
Prima di tutto scaricare il pacchetto di installazione dal link:
https://www.kimai.org/store/owlysk-codetimer.html
Scompattare il file zip appena scaricato quindi eseguire il file: CodeTimer-win_x64
Inserire il link del server senza lo slash finale
Inserire l’Username quindi l’API Token
Cliccare Test e verificare che la connessione sia OK
Cliccare Save per salvare la configurazione
Chiudere e rieseguire CodeTimer-win_x64. Se è andato tutto a buon fine dovremmo visualizzare tutti i progetti e le attività caricate su Server Kimai
Basta cliccare Start e selezionare l’attività desiderata per far partire il timer
CONSIDERAZIONI FINALI
✅ Punti di forza (Pro)
- Open Source / Autonomia dei dati
- Puoi ospitarlo autonomamente (“self‐hosted”), quindi hai controllo completo sui dati, privacy, backup, etc.
- Costo contenuto: Non ci sono costi di licenza nella versione self-hosted, ottimo se il budget è limitato.
- Funzionalità base molto solide: Tracciamento del tempo semplice ed efficace, gestione progetti/attività, esportazione dei timesheet, dashboard con report, supporto multi‐utente, multi‐lingua.
- Flessibilità / personalizzazione: Essendo open source, puoi adattarlo, estenderlo mediante plugin, modificarlo alle tue esigenze.
- Comunità attiva: Ci sono contributi, documentazione, utenti che condividono esperienze, cosa utile per supporto non ufficiale, soluzioni a problemi, best practices.
⚠️ Limiti / Possibili problemi (Contro)
- Setup e manutenzione: Se lo usi self-hosted, serve qualcuno con competenze tecniche per installarlo, mantenerlo aggiornato, gestire sicurezza, backup.
- Interfaccia utente / user experience: Alcuni utenti segnalano che l’interfaccia è un po’ “vecchia”, “non modernissima”, poco “liscia” rispetto ad app commerciali molto curate.
- Meno integrazioni native: Non ha tante integrazioni già pronte con altri strumenti (calendar, strumenti di gestione attività, automazioni) come fanno certe app commerciali. Per collegamenti avanzati potresti dover sviluppare o utilizzare l’API.
- Funzionalità avanzate/o personalizzate carenti: Per esigenze complesse (per esempio tariffe variabili nel tempo per progetto, gestione avanzata di fatturazione o di spese, workflow complessi, notifiche automatiche molto personalizzate), può mancare qualcosa.
- Esperienza mobile meno curata: L’uso da dispositivi mobili o tramite app può essere meno fluido rispetto ad altri strumenti che investono molto su UX mobile.
- Scalabilità per grandi team / organizzazioni: Sebbene molti utenti dicano che per team piccoli/medi Kimai va bene, in contesti molto grandi con molte regole, integrazioni, multi‐setting, può emergere che mancano funzionalità aziendali “enterprise” standard.
- Supporto ufficiale / SLA: Non essendo un prodotto commerciale “chiavi in mano” in tutti i casi (nella versione self-hosted), il supporto può dipendere dalla comunità, oppure richiedere accordi esterni se vuoi assistenza professionale.
0 commenti