1. Preparación del Servidor
Antes de comenzar, asegúrate de que tu sistema esté actualizado:
sudo apt update && sudo apt upgrade -y
Instala los paquetes esenciales:
sudo apt install unzip curl git -y
2. Instalación del Servidor Web y Base de Datos
Instalar Apache/Nginx y MariaDB
Para Apache:
sudo apt install apache2 -y
sudo systemctl enable --now apache2
Para Nginx:
sudo apt install nginx -y
sudo systemctl enable --now nginx
Instala MariaDB:
sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb
Configura la seguridad de MySQL/MariaDB:
sudo mysql_secure_installation
Sigue las indicaciones y establece una contraseña segura.
3. Instalación de PHP y Extensiones
Kimai requiere PHP 8.1 o superior. Instálalo con:
sudo apt install php8.2 php8.2-cli php8.2-curl php8.2-xml php8.2-zip php8.2-mbstring php8.2-intl php8.2-sqlite3 php8.2-mysql php8.2-gd php8.2-bcmath php8.2-redis
fpmphp8.2-
-y
Verifica la versión instalada:
php -v
4. Configurar la Base de Datos para Kimai
Accede a MySQL/MariaDB:
sudo mysql -u root -p
Ejecuta los siguientes comandos para crear la base de datos y el usuario:
CREATE DATABASE kimai CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'kimai_user'@'localhost' IDENTIFIED BY 'TuContraseñaSegura';
GRANT ALL PRIVILEGES ON kimai.* TO 'kimai_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
5. Descarga e Instalación de Kimai
Dirígete a la carpeta /var/www y clona el repositorio de Kimai:
cd /var/www
sudo git clone -b 2.0 https://github.com/kevinpapst/kimai.git
cd kimai
Cambia la propiedad de los archivos a www-data (usuario del servidor web):
sudo chown -R www-data:www-data /var/www/kimai
sudo chmod -R 775 /var/www/kimai
6. Configuración de Kimai
Copia el archivo de configuración:
cp .env.dist .env
Edita el archivo .env:
nano .env
Modifica las siguientes líneas para que coincidan con tu configuración de base de datos:
DATABASE_URL=mysql://kimai_user:TuContraseñ[email protected]:3306/kimai
?charset=utf8mb4&serverVersion=8
Guarda y sal del editor (CTRL + X
, Y
, Enter
).
Instala las dependencias con Composer:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer install --no-dev --optimize-autoloader
Genera las claves y migra la base de datos:
bin/console kimai:install -n
Crear primer usuario Admin:bin/console kimai:user:create username [email protected] ROLE_SUPER_ADMIN
7. Configuración del Servidor Web
Para Apache
Crea un nuevo archivo de configuración:
sudo nano /etc/apache2/sites-available/kimai.conf
Agrega el siguiente contenido:
<VirtualHost *:80>
ServerName tu-dominio.com
DocumentRoot /var/www/kimai/public
<Directory /var/www/kimai/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/kimai_error.log
CustomLog ${APACHE_LOG_DIR}/kimai_access.log combined
</VirtualHost>
Habilita la configuración y módulos requeridos:
sudo a2enmod rewrite
sudo a2ensite kimai.conf
sudo systemctl restart apache2
Para Nginx
Crea el archivo de configuración:
sudo nano /etc/nginx/sites-available/kimai
Añade:
server {
listen 80;
server_name tu-dominio.com;
root /var/www/kimai/public;
index index.php index.html;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Habilita la configuración:
sudo ln -s /etc/nginx/sites-available/kimai /etc/nginx/sites-enabled/
sudo systemctl restart nginx
8. Configurar Certificado SSL (Opcional)
Si usas Let's Encrypt, instala Certbot:
sudo apt install certbot python3-certbot-apache -y
Genera el certificado:
sudo certbot --apache -d tu-dominio.com
Para Nginx:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tu-dominio.com
Renueva automáticamente:
sudo certbot renew --dry-run
9. Acceder a Kimai
Ahora puedes acceder a Kimai desde tu navegador en:
http://tu-dominio.com
Inicia sesión con el usuario predeterminado creado anteriormente:
- Usuario: user
admin
- Contraseña: passwordadmin
Cambia la contraseña después de iniciar sesión.