[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-kimai-en-vps-seguimiento-tiempo-open-source-ma-es":6,"promo-bar-likely":297},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-kimai-en-vps-seguimiento-tiempo-open-source-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":234,"ctaBody":235,"ctaButton":236,"ctaUrl":237,"relatedPosts":238},341,"alojar-kimai-en-vps-seguimiento-tiempo-open-source",{"fr":12,"en":13,"ar":14,"es":10},"heberger-kimai-vps","self-host-kimai-vps-open-source-time-tracking","استضافة-kimai-على-vps-تتبع-الوقت-مفتوح-المصدر","Alojar Kimai en VPS: seguimiento de tiempo open source","Kimai con Docker en tu VPS: compose, HTTPS, roles, presupuestos, facturación, API, copias de seguridad y resolución de problemas.",14,0,false,"2026-01-09T00:00:00+00:00","2026-11-04T16:30:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-kimai-vps-poster.svg",{"categorySlug":34,"appSlug":35},"erp-gestion-empresarial","kimai","Kimai es un software de seguimiento de tiempo open source, con licencia MIT, capaz de sustituir a Toggl Track, Clockify o Harvest a largo plazo: temporizador, partes de horas, clientes, proyectos, actividades, tarifas horarias, presupuestos, informes y facturación. Esta guía va más allá de la instalación. Explica la arquitectura del stack Docker, un `docker-compose.yml` comentado para quien despliega a mano, la publicación en HTTPS detrás de un proxy inverso, la creación de cuentas desde la línea de comandos, el modelo de datos y los roles, la facturación, la API REST, los plugins, las copias de seguridad, las actualizaciones y los errores más habituales. Al terminar sabrás operar Kimai en producción para un equipo, no solo arrancarlo.",[38,42,50,53,62,65,83,86,89,97,115,118,121,130,133,139,142,157,161,164,167,170,178,181,189,229,232],{"type":39,"title":40,"body":41},"h2","¿Por qué alojar Kimai tú mismo?","Una herramienta de control horario concentra datos sensibles: quién trabaja para qué cliente, cuántas horas y a qué tarifa. En un servicio SaaS esa información reside en los servidores del proveedor y el coste crece con cada usuario. Si alojas Kimai en tu propio VPS, la base de datos queda bajo tu control, añades usuarios sin pagar licencias y decides tú cuándo actualizar.",{"type":43,"items":44},"ul",[45,46,47,48,49],"**Licencia MIT** — sin tarifas de licencia ni límite de usuarios impuesto por el proveedor.","**Facturación integrada** — las facturas se generan directamente desde los partes de horas, sin módulos externos.","**API REST documentada** — conecta tus herramientas internas (tickets, RR. HH., paneles) a tus propios datos.","**Soberanía de datos** — horas, tarifas y fichas de clientes se quedan en tu base MySQL.","**Stack ligero** — un contenedor de aplicación y una base MySQL, holgado en un VPS de entrada.",{"type":39,"title":51,"body":52},"Arquitectura: qué se ejecuta en el VPS","Kimai es una aplicación **PHP** construida sobre el framework **Symfony**. La versión 2 funciona con **MySQL o MariaDB**; SQLite ya no está soportado. La imagen oficial `kimai\u002Fkimai2` tiene dos variantes: `apache` (servidor web incluido, escucha en el puerto **8001**) y `fpm` (pensada para ir detrás de tu propio Nginx). La plantilla de ServOrbit usa `kimai\u002Fkimai2:apache-latest` con MySQL 8.0, de modo que el stack se reduce a dos contenedores.",{"type":43,"title":54,"items":55},"Las piezas del stack",[56,57,58,59,60,61],"**Contenedor `kimai`** — Apache y PHP, la aplicación Symfony en `\u002Fopt\u002Fkimai`, puerto 8001 publicado solo en `127.0.0.1`.","**Contenedor `db`** — MySQL 8.0 con un healthcheck `mysqladmin ping`: Kimai solo arranca cuando la base está lista.","**Volumen `kimai_db`** — los ficheros de datos de MySQL, es decir, todos tus partes de horas.","**Volumen `kimai_data`** — `\u002Fopt\u002Fkimai\u002Fvar\u002Fdata`, los ficheros subidos a la aplicación (plantillas de factura, documentos).","**Volumen `kimai_public`** — `\u002Fopt\u002Fkimai\u002Fpublic\u002Favatars`, los avatares de los usuarios.","**Proxy inverso** — Nginx, Caddy o Traefik termina el HTTPS y reenvía las peticiones al puerto local 8001.",{"type":39,"title":63,"body":64},"Desplegar Kimai en ServOrbit","El Marketplace de ServOrbit aprovisiona el stack completo sobre Ubuntu 24.04: Docker, MySQL 8.0, el contenedor de Kimai, los tres volúmenes y una contraseña de administrador generada. No necesitas un dominio para empezar.",{"type":66,"steps":67},"steps",[68,71,74,77,80],{"title":69,"body":70},"Lanzar el despliegue","En tu área de cliente: **Marketplace → ERP y Gestión → Kimai → Desplegar**. ServOrbit crea el VPS, instala Docker y arranca el stack (MySQL 8 + Apache\u002FPHP) automáticamente.",{"title":72,"body":73},"Recuperar las credenciales","Espera unos **60 segundos**. La tarjeta de la app muestra tus credenciales: usuario `admin@kimai.local` y contraseña generada.",{"title":75,"body":76},"Conectarse sin dominio","Abre un túnel SSH: `ssh -L 8080:127.0.0.1:8001 root@\u003Cip>` y luego `http:\u002F\u002Flocalhost:8080`. Añade un dominio desde el panel cuando lo tengas listo.",{"title":78,"body":79},"Crear cliente y proyecto","Crea tu primer **cliente**, luego un **proyecto** vinculado y al menos una **actividad**. Fija una tarifa horaria o un presupuesto.",{"title":81,"body":82},"Registrar las primeras horas","Haz clic en **▶** para iniciar el temporizador y elige proyecto y actividad: Kimai registra tus horas en tiempo real.",{"type":84,"body":85},"tip","En el primer inicio de sesión, abre tu perfil para sustituir `admin@kimai.local` por una dirección real y cambiar la contraseña generada. Después reserva esa cuenta de superadministrador para la administración y crea cuentas nominativas para el trabajo diario.",{"type":39,"title":87,"body":88},"Instalación manual con Docker Compose","Si prefieres instalar Kimai por tu cuenta en un VPS existente, aquí tienes un `docker-compose.yml` equivalente a la plantilla, con un volumen adicional para los plugins. Colócalo en un directorio dedicado, por ejemplo `\u002Fopt\u002Fkimai`.\n\n```yaml\nservices:\n  db:\n    image: mysql:8.0\n    restart: unless-stopped\n    environment:\n      MYSQL_DATABASE: kimai\n      MYSQL_USER: kimai\n      MYSQL_PASSWORD: ${DB_PASSWORD}\n      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}\n    volumes:\n      - kimai_db:\u002Fvar\u002Flib\u002Fmysql\n    healthcheck:\n      test: [\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"127.0.0.1\", \"--silent\"]\n      interval: 10s\n      retries: 12\n\n  kimai:\n    image: kimai\u002Fkimai2:apache-latest\n    restart: unless-stopped\n    depends_on:\n      db:\n        condition: service_healthy\n    ports:\n      - \"127.0.0.1:8001:8001\"\n    environment:\n      DATABASE_URL: \"mysql:\u002F\u002Fkimai:${DB_PASSWORD}@db\u002Fkimai?charset=utf8mb4&serverVersion=8.0.34\"\n      APP_SECRET: ${APP_SECRET}\n      ADMINMAIL: admin@your-domain.com\n      ADMINPASS: ${ADMIN_PASSWORD}\n      TRUSTED_HOSTS: \"localhost,127.0.0.1,kimai.your-domain.com\"\n    volumes:\n      - kimai_data:\u002Fopt\u002Fkimai\u002Fvar\u002Fdata\n      - kimai_plugins:\u002Fopt\u002Fkimai\u002Fvar\u002Fplugins\n      - kimai_public:\u002Fopt\u002Fkimai\u002Fpublic\u002Favatars\n\nvolumes:\n  kimai_db:\n  kimai_data:\n  kimai_plugins:\n  kimai_public:\n```\n\nA continuación genera los secretos en un fichero `.env`, que Compose lee automáticamente, y arranca el stack. En el primer arranque el contenedor crea el esquema de la base y la cuenta de administrador definida por `ADMINMAIL` y `ADMINPASS`.\n\n```bash\ncat > .env \u003C\u003CEOF\nDB_PASSWORD=$(openssl rand -hex 16)\nDB_ROOT_PASSWORD=$(openssl rand -hex 16)\nAPP_SECRET=$(openssl rand -hex 32)\nADMIN_PASSWORD=$(openssl rand -hex 12)\nEOF\nchmod 600 .env\ndocker compose up -d\ndocker compose logs -f kimai\n```",{"type":43,"title":90,"items":91},"Variables de entorno que conviene conocer",[92,93,94,95,96],"`DATABASE_URL` — cadena de conexión de Doctrine: usuario, contraseña, host `db`, nombre de la base, `charset=utf8mb4` y `serverVersion`. Como la contraseña va dentro de una URL, evita `@`, `\u002F` o `:`; un secreto hexadecimal resuelve el problema.","`APP_SECRET` — clave de Symfony con la que se firman sesiones y tokens. Un valor aleatorio largo, generado una vez y sin tocarlo después: cambiarlo cierra la sesión de todos.","`ADMINMAIL` y `ADMINPASS` — la cuenta de superadministrador creada en el primer arranque. Con la instancia en marcha, gestiona las cuentas desde la interfaz o la consola.","`TRUSTED_HOSTS` — lista de nombres de host aceptados, separados por comas. Debe incluir tu dominio público; si no, Symfony rechaza las peticiones.","`MAILER_URL` — transporte de correo. La plantilla de ServOrbit lo fija en `null:\u002F\u002Flocalhost`, así que no se envía ningún correo. Indica un servidor SMTP para activar la recuperación de contraseña y las notificaciones.",{"type":66,"title":98,"steps":99},"Publicar Kimai en un dominio con HTTPS",[100,103,106,109,112],{"title":101,"body":102},"Apuntar el DNS","Crea un registro A para `kimai.your-domain.com` hacia la IP pública del VPS y comprueba la propagación con `dig +short kimai.your-domain.com`.",{"title":104,"body":105},"Configurar el proxy inverso","El puerto 8001 solo escucha en `127.0.0.1`, así que únicamente el proxy local puede alcanzarlo. Ejemplo de bloque Nginx:\n\n```nginx\nserver {\n    listen 80;\n    server_name kimai.your-domain.com;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8001;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```",{"title":107,"body":108},"Obtener el certificado","Con certbot y su plugin de Nginx, se emite el certificado de Let's Encrypt y el bloque `server` se completa para el puerto 443:\n\n```bash\napt install -y certbot python3-certbot-nginx\ncertbot --nginx -d kimai.your-domain.com\n```",{"title":110,"body":111},"Declarar el dominio en Kimai","Añade `kimai.your-domain.com` a `TRUSTED_HOSTS` y ejecuta `docker compose up -d` para recrear el contenedor. Si los enlaces generados siguen en `http:\u002F\u002F`, consulta la documentación de Kimai sobre proxies inversos: las cabeceras `X-Forwarded-*` solo se tienen en cuenta si vienen de un proxy de confianza.",{"title":113,"body":114},"Cerrar lo que sobra","En el cortafuegos abre solo los puertos 22, 80 y 443. MySQL no publica ningún puerto y no debe hacerlo.",{"type":39,"title":116,"body":117},"Crear usuarios desde la línea de comandos","La interfaz basta para gestionar cuentas en el día a día, pero la consola Symfony de Kimai resulta muy útil para automatizar altas o recuperar un acceso. El comando `kimai:user:create` recibe un nombre de usuario, un correo y un rol, y después pide la contraseña:\n\n```bash\ndocker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:user:create alice alice@your-domain.com ROLE_TEAMLEAD\n```\n\nLa misma consola ofrece `kimai:reload` para reconstruir la caché tras un cambio de configuración, y `kimai:update` para aplicar las migraciones de base de datos en instalaciones fuera de Docker. Ejecuta `bin\u002Fconsole list kimai` dentro del contenedor para ver los comandos disponibles en tu versión.",{"type":39,"title":119,"body":120},"El modelo de datos: clientes, proyectos, actividades","Kimai organiza el tiempo en tres niveles. Un **cliente** lleva la moneda, la zona horaria y los datos de facturación. Un **proyecto** pertenece a un cliente y puede tener fechas de inicio y fin, un número de pedido y un presupuesto. Una **actividad** describe el tipo de trabajo (desarrollo, reunión, soporte); puede asociarse a un proyecto concreto o ser **global** y estar disponible en todos. Cada entrada del parte de horas une un usuario, un proyecto, una actividad, un intervalo de tiempo y, si hace falta, una descripción y etiquetas. Diseñar bien esta jerarquía desde el principio ahorra correcciones costosas: un cliente por entidad facturada, un proyecto por encargo o contrato y actividades globales para las tareas transversales.",{"type":43,"title":122,"items":123},"Tarifas y presupuestos",[124,125,126,127,128,129],"**Tarifa horaria** — se define en el cliente, el proyecto, la actividad o el usuario; se aplica el nivel más específico a cada entrada.","**Tarifa fija** — un importe cerrado por entrada, útil para un servicio facturado a precio fijo sea cual sea su duración.","**Tarifa interna** — lo que realmente te cuesta una hora, separado del precio facturado, para medir la rentabilidad de cada proyecto.","**Presupuesto en tiempo o en dinero** — en un cliente, proyecto o actividad, con un indicador visual de consumo.","**Presupuesto mensual o total** — una bolsa de mantenimiento mensual se controla de forma distinta a un proyecto cerrado durante toda su vida.","**Sobrepasos** — los paneles muestran cuánto presupuesto se ha consumido y un ajuste de configuración permite autorizar o bloquear las entradas que lo superen.",{"type":39,"title":131,"body":132},"Roles, equipos y permisos","Kimai trabaja con roles jerárquicos, y la pantalla **Roles y permisos** permite ajustar con detalle lo que cada rol ve y modifica. Los **equipos** completan el sistema: un cliente, proyecto o actividad restringido a un equipo solo es visible para sus miembros, y el **jefe de equipo** revisa y corrige las horas de su equipo sin ver el resto de la empresa. Para un colaborador externo, crea una cuenta de usuario limitada a un equipo dedicado.",{"type":43,"items":134},[135,136,137,138],"`ROLE_USER` — registra y consulta sus propias horas en los proyectos a los que tiene acceso.","`ROLE_TEAMLEAD` — ve y modifica las horas de los miembros de sus equipos y consulta sus informes.","`ROLE_ADMIN` — gestiona clientes, proyectos, actividades, facturas y usuarios.","`ROLE_SUPER_ADMIN` — acceso completo, incluida la configuración del sistema y los permisos.",{"type":39,"title":140,"body":141},"Facturar a partir de los partes de horas","El módulo de facturación convierte una selección de horas en un documento. Desde el menú **Facturas** eliges un cliente, un periodo, opcionalmente un proyecto y después una **plantilla**. Kimai calcula los importes a partir de las tarifas, muestra una vista previa y guarda la factura con un estado (pendiente, pagada, cancelada). Las entradas facturadas pueden marcarse como **exportadas**, lo que evita facturarlas dos veces y las protege de cambios posteriores.",{"type":66,"title":143,"steps":144},"Preparar tu primera plantilla de factura",[145,148,151,154],{"title":146,"body":147},"Crear la plantilla","En **Facturas → Plantillas**, indica el emisor, la dirección, los datos bancarios, el plazo de pago y el texto del pie.",{"title":149,"body":150},"Elegir el formato de salida","Selecciona un formato PDF o HTML para un documento listo para enviar, o un formato ofimático si terminas la factura en otra herramienta.",{"title":152,"body":153},"Definir la numeración","Configura el formato del número de factura (prefijo, año, contador) para obtener una secuencia continua acorde con tu contabilidad.",{"title":155,"body":156},"Configurar el impuesto","Introduce el tipo impositivo aplicable en la plantilla; crea una plantilla por régimen si facturas a clientes con tipos distintos.",{"type":158,"title":159,"body":160},"callout","IVA y menciones obligatorias","Kimai calcula el impuesto a partir del tipo indicado en la plantilla, pero no conoce tu situación fiscal. Las menciones legales, el tipo aplicable y la conservación de facturas dependen de tu país y de tu forma jurídica: pide a tu asesor que revise la plantilla. Si llevas la contabilidad completa en un ERP como Dolibarr, Kimai puede seguir siendo la herramienta de registro de horas y su exportación servir de base para la factura final.",{"type":39,"title":162,"body":163},"API REST e integraciones","Kimai expone una **API REST** que cubre clientes, proyectos, actividades, partes de horas y usuarios. Su documentación interactiva la sirve tu propia instancia en `\u002Fapi\u002Fdoc`, siempre al día con la versión instalada. Para autenticar un script, crea un **token de API** desde tu perfil de usuario y envíalo en una cabecera:\n\n```bash\ncurl -s -H \"Authorization: Bearer TU_TOKEN\" \\\n  https:\u002F\u002Fkimai.your-domain.com\u002Fapi\u002Ftimesheets\n```\n\nUn token hereda los permisos de su usuario: crea una cuenta de servicio con el rol mínimo necesario en lugar de usar el superadministrador. La API permite, por ejemplo, iniciar un temporizador desde un atajo, volcar las horas en un panel o sincronizar los proyectos con tu herramienta de tickets.",{"type":39,"title":165,"body":166},"Ampliar Kimai con plugins","Kimai cuenta con una tienda de plugins en su web oficial, con extensiones gratuitas y de pago: gastos, campos personalizados, flujos de aprobación de partes de horas e importaciones desde otras herramientas. Un plugin es un directorio que se coloca en `var\u002Fplugins\u002F`. Con Docker, monta ese directorio en un volumen o desaparecerá al recrear el contenedor; esa es la función de `kimai_plugins` en el compose anterior. Instalación típica:\n\n```bash\ndocker compose cp NombreDelPluginBundle kimai:\u002Fopt\u002Fkimai\u002Fvar\u002Fplugins\u002F\ndocker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:reload --env=prod\n```\n\nAlgunos plugins añaden tablas y traen su propio comando de instalación; sigue la ficha del plugin y comprueba su compatibilidad con tu versión de Kimai antes de cada actualización.",{"type":39,"title":168,"body":169},"Copia de seguridad y restauración","Casi todo está en la base MySQL; los volúmenes `kimai_data` y `kimai_public` completan la copia. Un volcado lógico es más portable que copiar en caliente los ficheros de MySQL:\n\n```bash\ndocker compose exec -T db sh -c 'exec mysqldump --single-transaction -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\" \"$MYSQL_DATABASE\"' > kimai-$(date +%F).sql\ndocker run --rm -v kimai_kimai_data:\u002Fdata -v \"$PWD\":\u002Fbackup alpine tar czf \u002Fbackup\u002Fkimai_data-$(date +%F).tgz -C \u002Fdata .\n```\n\nEl nombre real del volumen lleva como prefijo el nombre del proyecto Compose: compruébalo con `docker volume ls`. Para restaurar, arranca un stack vacío con el mismo `.env` y vuelve a cargar el volcado:\n\n```bash\ndocker compose exec -T db sh -c 'exec mysql -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\" \"$MYSQL_DATABASE\"' \u003C kimai-AAAA-MM-DD.sql\n```\n\nPrograma el volcado cada noche con cron, cópialo fuera del VPS (Restic, BorgBackup o almacenamiento de objetos) y prueba una restauración al menos una vez: una copia que nunca se ha restaurado es solo una hipótesis.",{"type":43,"title":171,"items":172},"Actualizaciones sin sorpresas",[173,174,175,176,177],"**Primero, la copia** — un volcado justo antes de actualizar permite volver atrás si falla una migración.","**Actualizar la imagen** — `docker compose pull kimai && docker compose up -d kimai`, y después sigue `docker compose logs -f kimai`. Al arrancar, el contenedor aplica las migraciones de base de datos automáticamente.","**Fijar una versión** — en producción, sustituye `apache-latest` por una etiqueta versionada de la imagen para decidir cuándo subir de versión.","**Leer las notas de versión** — algunas versiones mayores cambian requisitos o el comportamiento de los plugins.","**Exportar con regularidad** — la exportación CSV o XLSX de los partes de horas es una copia legible, útil para una auditoría o una migración.",{"type":39,"title":179,"body":180},"Resolución de problemas habituales","La mayoría de las incidencias de Kimai en Docker se deben a unas pocas causas conocidas. Empieza siempre por `docker compose logs kimai` y `docker compose ps`.",{"type":43,"items":182},[183,184,185,186,187,188],"**«Untrusted Host» o error 400 tras añadir un dominio** — falta el nombre de host en `TRUSTED_HOSTS`. Añádelo y recrea el contenedor.","**Error 500 y «Permission denied» en `var\u002F`** — suele aparecer tras un comando de consola ejecutado con un usuario distinto al del servidor web. Restablece la propiedad con `docker compose exec kimai chown -R www-data:www-data \u002Fopt\u002Fkimai\u002Fvar` y después `kimai:reload`.","**Un cambio de configuración no surte efecto** — la caché de Symfony sirve la versión anterior: `docker compose exec kimai \u002Fopt\u002Fkimai\u002Fbin\u002Fconsole kimai:reload --env=prod`.","**Kimai se reinicia en bucle en el primer arranque** — la base no está lista o `DATABASE_URL` es incorrecta. Revisa el healthcheck de `db` y las credenciales del `.env`.","**Enlaces en `http:\u002F\u002F` detrás del proxy HTTPS** — las cabeceras `X-Forwarded-Proto` no se envían o no se consideran de confianza; revisa la configuración del proxy.","**Contraseña olvidada sin correo configurado** — `MAILER_URL` apunta a `null:\u002F\u002F`: restablece la contraseña desde una cuenta de administrador o crea un nuevo administrador por consola.",{"type":190,"title":191,"headers":192,"rows":198},"comparison","Kimai frente a Toggl Track, Clockify y Harvest",[193,194,195,196,197],"Criterio","Kimai (self-hosted)","Toggl Track","Clockify","Harvest",[199,203,207,211,216,221,225],[200,201,202,202,202],"Licencia","Open source (MIT)","Propietaria",[204,205,206,206,206],"Alojamiento","Tu VPS","SaaS del proveedor",[208,209,210,210,210],"Ubicación de los datos","Tu base MySQL","Infraestructura del proveedor",[212,213,214,215,214],"Modelo de coste","Solo el servidor, sin cuota por usuario","Nivel gratuito limitado y después suscripción","Nivel gratuito y después suscripción",[217,218,219,219,220],"Facturación","Módulo integrado (plantillas, numeración, impuestos)","Según el plan","Integrada en el producto",[222,223,224,224,224],"API","REST, tokens, documentación incluida","REST",[226,227,228,228,228],"Personalización","Código fuente, plugins, configuración","Ajustes e integraciones",{"type":39,"title":230,"body":231},"Dimensionar el VPS","Kimai es austero: la carga procede sobre todo de MySQL y de los informes que abarcan periodos largos. Para un freelance o un equipo pequeño bastan **1 vCPU y de 1 a 2 GB de RAM**. A partir de una veintena de usuarios activos, o si generas a menudo informes anuales y exportaciones voluminosas, prevé **2 vCPU y 4 GB**, lo que deja margen a la caché InnoDB de MySQL. El disco necesario es modesto: unos pocos gigabytes cubren años de partes de horas, pero reserva espacio para los volcados locales antes de enviarlos fuera del servidor.",{"type":84,"body":233},"Antes de invitar al equipo, fija las reglas en **Ajustes**: redondeo de duraciones, si se permiten entradas en el futuro y bloqueo de los periodos ya facturados. Es mucho más sencillo decidirlo en una instancia vacía que sobre meses de historial.","Despliega Kimai en tu VPS en 60 segundos","ServOrbit preconfigurea el stack completo (Apache\u002FPHP + MySQL 8) y genera tus credenciales de admin — listo para registrar tus primeras horas.","Lanzar Kimai","\u002Fapplications\u002Ferp-gestion-empresarial\u002Fkimai",[239,257,277],{"id":240,"slug":241,"slugs":242,"title":246,"excerpt":247,"readTime":248,"views":18,"isPinned":19,"noindex":19,"publishedAt":249,"updatedAt":250,"category":251,"categories":252,"featuredImage":30,"bgImage":31,"posterImage":254,"relatedSolution":255},143,"alojar-dolibarr-en-un-vps-erp-libre",{"fr":243,"en":244,"ar":245,"es":241},"heberger-dolibarr-vps","hosting-dolibarr-on-a-vps-open-source-erp-under-control","استضافة-dolibarr-على-خادم-vps-نظام-erp-حر-تحت-السيطرة","Alojar Dolibarr en VPS: ERP libre bajo control","Despliegue Dolibarr en un VPS ServOrbit: ERP\u002FCRM libre, base de datos controlada, copias de seguridad y acceso HTTPS para su pyme.",11,"2026-02-02T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[253],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-dolibarr-vps-poster.svg",{"categorySlug":34,"appSlug":256},"dolibarr",{"id":258,"slug":259,"slugs":260,"title":264,"excerpt":265,"readTime":266,"views":23,"isPinned":19,"noindex":19,"publishedAt":267,"updatedAt":268,"category":269,"categories":274,"featuredImage":30,"bgImage":31,"posterImage":276,"relatedSolution":30},37,"desplegar-con-nginx-proxy-manager",{"fr":261,"en":262,"ar":263,"es":259},"deployer-avec-nginx-proxy-manager","deploy-your-applications-with-nginx-proxy-manager-on-a-vps","انشر-تطبيقاتك-باستخدام-nginx-proxy-manager-على-خادم-vps","Desplegar sus aplicaciones con Nginx Proxy Manager en un VPS","Gestione dominios, SSL y reverse proxy de varios servicios en un VPS con Nginx Proxy Manager: instalación, redes Docker, errores 502 y ajustes avanzados.",10,"2026-05-14T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":270,"name":271,"slug":272,"color":273,"icon":272},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[275],{"id":270,"name":271,"slug":272,"color":273,"icon":272},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-nginx-proxy-manager-poster.svg",{"id":278,"slug":279,"slugs":280,"title":284,"excerpt":285,"readTime":248,"views":18,"isPinned":19,"noindex":19,"publishedAt":286,"updatedAt":287,"category":288,"categories":294,"featuredImage":30,"bgImage":31,"posterImage":296,"relatedSolution":30},113,"copias-de-seguridad-vps-con-restic",{"fr":281,"en":282,"ar":283,"es":279},"sauvegardes-restic-vps","automate-your-vps-backups-with-restic","أتمتة-نسخ-خادمك-vps-الاحتياطية-باستخدام-restic","Automatizar las copias de seguridad de su VPS con Restic","Automatice las copias de seguridad de su VPS con Restic: snapshots cifrados, deduplicación y envío a S3 o a cualquier backend de objetos.","2026-02-27T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":289,"name":290,"slug":291,"color":292,"icon":293},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[295],{"id":289,"name":290,"slug":291,"color":292,"icon":293},"\u002Fblog\u002Fcovers\u002Fsauvegardes-restic-vps-poster.svg",true,1794270533234]