Установка Kimai на VPS включает развертывание контейнеров Docker с приложением и базой данных, настройку реверс-прокси для доступа по доменному имени с поддержкой HTTPS, а также планирование регулярных бэкапов и обновлений для обеспечения стабильной работы самохостинга. Это позволяет получить полноценную систему учёта рабочего времени, полностью контролируемую вами.
Kimai – это мощное и гибкое веб-приложение с открытым исходным кодом, предназначенное для учёта рабочего времени, отслеживания проектов и управления клиентами. Оно идеально подходит для фрилансеров, малых и средних компаний, а также команд, которым требуется детальный контроль над затраченным временем и выставлением счетов. Развернув Kimai на собственном VPS, вы получаете полный контроль над данными, безопасностью и производительностью, избегая ограничений и абонентской платы облачных сервисов. В этой статье мы подробно разберем, как выполнить установку Kimai на вашем виртуальном сервере, используя Docker для максимальной простоты и переносимости.
Что такое Kimai и зачем он нужен на VPS?
Kimai – это современное кроссплатформенное решение для тайм-трекинга, которое помогает эффективно управлять рабочим временем. Оно позволяет записывать часы, потраченные на различные проекты и задачи, генерировать отчёты, выставлять счета и многое другое. Главное преимущество Kimai в его гибкости и возможности kimai self-hosted на собственном сервере, что обеспечивает независимость от сторонних поставщиков и полный суверенитет над вашими данными.
Ключевые возможности и преимущества Kimai
- Гибкий тайм-трекинг: Записывайте время вручную или используйте встроенный секундомер. Возможность привязки времени к клиентам, проектам и задачам.
- Управление клиентами и проектами: Создавайте и управляйте неограниченным количеством клиентов и проектов, назначайте ставки для каждого из них.
- Детальные отчёты: Генерируйте настраиваемые отчёты по времени, затратам, прибыли, экспортируйте их в различных форматах (CSV, PDF, XLSX).
- Выставление счетов: Интегрированные функции для создания счетов на основе учтённого времени.
- Многопользовательская поддержка: Добавляйте пользователей с различными ролями и разрешениями (администратор, менеджер, пользователь).
- Открытый исходный код: Полная прозрачность и возможность кастомизации под свои нужды.
- API: RESTful API для интеграции с другими системами.
- Плагины и расширения: Широкие возможности для расширения функционала.
Почему именно VPS для Kimai?
Выбор VPS-хостинга для Kimai на сервере обусловлен несколькими важными факторами. Виртуальный приватный сервер предоставляет идеальный баланс между стоимостью, производительностью и контролем. В отличие от обычного виртуального хостинга, VPS даёт вам root-доступ, что позволяет устанавливать любое необходимое программное обеспечение (например, Docker), настраивать системные параметры и обеспечивать безопасность на нужном уровне. Это критически важно для развертывания таких приложений, как Kimai, которые требуют специфической серверной среды.
Размещение kimai vps также гарантирует, что ваши данные будут храниться в выбранном вами дата-центре, соответствуя локальным или корпоративным требованиям конфиденциальности. Вы избавлены от рисков, связанных с политикой использования данных сторонних сервисов, и можете быть уверены в их безопасности. Кроме того, вы получаете предсказуемую производительность, не зависящую от "соседей" по серверу, что часто бывает проблемой на shared-хостингах. Это особенно важно при масштабировании, когда количество пользователей и данных в Kimai будет расти.
Системные требования Kimai: что нужно знать?
Прежде чем приступать к установке Kimai, важно понимать, какие ресурсы потребуются вашему виртуальному серверу. Kimai относительно нетребователен к ресурсам для небольших команд, но по мере роста числа пользователей и объёма данных, требования возрастают. Использование Docker упрощает управление зависимостями, но не отменяет необходимости в достаточном количестве CPU, RAM и дискового пространства.
Минимальные и рекомендуемые конфигурации для Kimai self-hosted
Kimai работает на PHP (версии 8.1 или выше) и требует базу данных (MySQL 8.0+, MariaDB 10.5+ или PostgreSQL 13+). Для работы с Docker вам также потребуется достаточно места для образов и контейнеров.
- Минимальные требования (до 5 пользователей, небольшое количество проектов):
- CPU: 1 vCore
- RAM: 1 GB (минимум 512 MB для Kimai + 512 MB для ОС и Docker)
- Диск: 20 GB NVMe (для ОС, Docker образов и данных)
- Операционная система: Ubuntu 22.04+, Debian 11+
- Рекомендуемые требования (до 20 пользователей, активное использование, отчёты):
- CPU: 2 vCores
- RAM: 2 GB
- Диск: 40 GB NVMe
- Операционная система: Ubuntu 22.04+, Debian 11+
- Для больших команд (20+ пользователей, интенсивная работа, API-интеграции):
- CPU: 4+ vCores
- RAM: 4+ GB
- Диск: 80+ GB NVMe
- Операционная система: Ubuntu 22.04+, Debian 11+
Важно помнить, что NVMe-диски значительно ускоряют работу базы данных и приложения в целом, поэтому они предпочтительнее для kimai self-hosted.
Выбор операционной системы
Для развертывания Kimai на VPS через Docker наиболее оптимальным выбором являются дистрибутивы Linux, такие как Ubuntu Server (22.04 LTS и выше) или Debian (11 и выше). Эти ОС хорошо документированы, имеют широкую поддержку сообщества и стабильно работают с Docker. Ubuntu часто выбирают за простоту использования и актуальные пакеты, Debian – за стабильность и минимализм. В данной статье все команды будут представлены для систем на базе Debian/Ubuntu.
Ищете надёжный сервер для ваших проектов?
VPS от $10/мес и выделенные серверы от $9/мес с NVMe, DDoS-защитой и поддержкой 24/7.
Смотреть предложения →Подготовка VPS к установке Kimai Docker
Перед тем как приступить к непосредственной установке Kimai, необходимо подготовить ваш виртуальный сервер. Это включает обновление системы, установку Docker и Docker Compose, а также настройку доменного имени.
Обновление системы и установка Docker/Docker Compose
Подключитесь к вашему VPS по SSH. Первым делом обновите пакеты системы, чтобы убедиться, что у вас установлены самые свежие версии ПО и патчи безопасности:
sudo apt update && sudo apt upgrade -y
Далее установите Docker. Рекомендуется использовать официальный репозиторий Docker для получения самой актуальной версии. Выполните следующие команды:
# Установка необходимых пакетов
sudo apt install ca-certificates curl gnupg lsb-release -y
# Добавление GPG-ключа Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Добавление репозитория Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Обновление индекса пакетов и установка Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Проверьте, что Docker установлен и запущен:
sudo systemctl status docker
Вы увидите статус "active (running)". Добавьте вашего пользователя в группу docker, чтобы не использовать sudo для каждой команды Docker:
sudo usermod -aG docker $USER
newgrp docker
Теперь вы можете проверить установку Docker, выполнив:
docker run hello-world
И убедиться, что Docker Compose плагин работает:
docker compose version
Настройка доменного имени и DNS
Для доступа к Kimai на сервере через браузер по красивому имени, а не по IP-адресу, вам потребуется доменное имя. Зарегистрируйте домен у любого регистратора и настройте A-запись, указывающую на IP-адрес вашего VPS. Например, если ваш домен yourdomain.com, вы можете создать поддомен kimai.yourdomain.com и направить его на IP вашего сервера. Убедитесь, что DNS-записи обновились (это может занять до нескольких часов).
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Пошаговая установка Kimai на VPS с Docker Compose
Теперь, когда ваш VPS готов, можно приступить к установке Kimai Docker. Мы будем использовать Docker Compose для определения и запуска всех необходимых сервисов (Kimai, база данных).
Создание файла docker-compose.yml
Создайте директорию для ваших файлов Kimai и перейдите в неё:
mkdir -p ~/kimai
cd ~/kimai
Создайте файл docker-compose.yml с помощью текстового редактора (например, nano):
nano docker-compose.yml
Вставьте следующее содержимое. Это стандартная конфигурация для kimai self-hosted с использованием MySQL/MariaDB. Замените YOUR_DOMAIN.COM, YOUR_DB_PASSWORD, YOUR_DB_USER, YOUR_DB_NAME на свои значения.
version: '3.8'
services:
database:
image: mariadb:10.11
restart: unless-stopped
env_file:
- .env
volumes:
- database_data:/var/lib/mysql
networks:
- kimai-network
kimai:
image: kimai/kimai2:latest
restart: unless-stopped
env_file:
- .env
depends_on:
- database
ports:
- "8001:8000" # Kimai по умолчанию слушает порт 8000 внутри контейнера
networks:
- kimai-network
volumes:
database_data:
networks:
kimai-network:
driver: bridge
Теперь создайте файл .env в той же директории. Этот файл будет содержать переменные окружения для базы данных и Kimai. Замените YOUR_DB_PASSWORD, YOUR_DB_USER, YOUR_DB_NAME на свои значения. Убедитесь, что пароль достаточно сложный.
nano .env
# Database configuration
DATABASE_URL=mysql://YOUR_DB_USER:YOUR_DB_PASSWORD@database:3306/YOUR_DB_NAME?serverVersion=10.11&charset=utf8mb4
# Kimai configuration
APP_ENV=prod
APP_SECRET=your_secret_key_here # Генерируйте уникальный ключ, например, "openssl rand -base64 32"
TRUSTED_HOSTS=^localhost$,^127\.0\.0\.1$,^YOUR_DOMAIN\.COM$ # Замените на ваш домен
MAILER_URL=smtp://user:[email protected]:587 # Опционально: для отправки почты Kimai
Для APP_SECRET сгенерируйте уникальный ключ, например, командой openssl rand -base64 32.
TRUSTED_HOSTS должен включать ваш домен, через который вы будете получать доступ к Kimai. Например, если вы используете kimai.yourdomain.com, то строка будет TRUSTED_HOSTS=^localhost$,^127\.0\.0\.1$,^kimai\.yourdomain\.com$. Если вы используете несколько доменов или поддоменов, разделите их запятыми.
Запуск Kimai и первоначальная настройка
После создания файлов docker-compose.yml и .env, вы можете запустить Kimai:
docker compose up -d
Опция -d запускает контейнеры в фоновом режиме. Docker загрузит необходимые образы (MariaDB и Kimai), создаст контейнеры и запустит их. Это может занять несколько минут при первом запуске.
Проверьте статус запущенных контейнеров:
docker compose ps
Вы должны увидеть, что оба контейнера (kimai-database-1 и kimai-kimai-1) находятся в статусе "running".
Теперь Kimai доступен по IP-адресу вашего VPS и порту 8001 (например, http://ВАШ_IP_АДРЕС:8001). Откройте этот адрес в браузере. Вы должны увидеть страницу входа Kimai.
Стандартные учетные данные администратора для первого входа:
- Имя пользователя:
admin - Пароль:
kimai
Обязательно смените эти учетные данные сразу после первого входа!
На этом этапе установка Kimai завершена. Однако, для безопасного и удобного доступа по доменному имени с HTTPS, потребуется настроить реверс-прокси.
Настройка Reverse Proxy и HTTPS для Kimai на сервере
Прямой доступ к Kimai по IP-адресу и нестандартному порту (8001) не является идеальным решением. Для профессионального развертывания Kimai на сервере рекомендуется использовать реверс-прокси (например, Nginx или Caddy) для маршрутизации трафика к контейнеру Kimai и обеспечения HTTPS-шифрования с помощью Let's Encrypt.
Использование Nginx в качестве Reverse Proxy
Nginx – это высокопроизводительный веб-сервер, который отлично подходит для роли реверс-прокси. Если Nginx еще не установлен на вашем VPS, установите его:
sudo apt install nginx -y
Создайте новый конфигурационный файл для вашего домена Kimai:
sudo nano /etc/nginx/sites-available/kimai.conf
Вставьте следующую конфигурацию, заменив kimai.yourdomain.com на ваш фактический домен:
server {
listen 80;
listen [::]:80;
server_name kimai.yourdomain.com;
# Перенаправление HTTP на HTTPS (позже будет настроено Certbot)
# return 301 https://$host$request_uri;
location / {
proxy_pass http://localhost:8001; # Порт, на котором Kimai слушает внутри контейнера
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_read_timeout 900s;
proxy_send_timeout 900s;
proxy_connect_timeout 900s;
proxy_redirect off;
}
}
Сохраните файл и создайте символическую ссылку на него в sites-enabled:
sudo ln -s /etc/nginx/sites-available/kimai.conf /etc/nginx/sites-enabled/
Проверьте конфигурацию Nginx на ошибки и перезапустите его:
sudo nginx -t
sudo systemctl restart nginx
Теперь вы можете получить доступ к Kimai по вашему доменному имени (например, http://kimai.yourdomain.com). Следующий шаг – обеспечение HTTPS.
Автоматизация HTTPS с Let's Encrypt через Certbot
Let's Encrypt предоставляет бесплатные SSL/TLS сертификаты, а Certbot автоматизирует процесс их получения и установки. Установите Certbot и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx -y
Запустите Certbot для вашего домена. Он автоматически найдет конфигурацию Nginx и настроит HTTPS:
sudo certbot --nginx -d kimai.yourdomain.com
Certbot задаст несколько вопросов (email, согласие с условиями). После успешного выполнения он автоматически обновит конфигурацию Nginx, добавив HTTPS и перенаправление с HTTP на HTTPS. Проверьте, что автоматическое обновление сертификатов работает:
sudo systemctl status certbot.timer
Теперь ваш kimai vps доступен по защищенному соединению HTTPS (https://kimai.yourdomain.com).
Альтернатива: Caddy для простоты
Для тех, кто ищет более простое решение для реверс-прокси и HTTPS, Caddy – отличный выбор. Caddy автоматически получает и обновляет сертификаты Let's Encrypt для всех настроенных доменов "из коробки".
Установите Caddy (инструкции могут немного отличаться в зависимости от ОС, но для Debian/Ubuntu обычно так):
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Создайте конфигурационный файл Caddyfile:
sudo nano /etc/caddy/Caddyfile
Замените содержимое на следующее, указав ваш домен:
kimai.yourdomain.com {
reverse_proxy localhost:8001
}
Перезапустите Caddy:
sudo systemctl restart caddy
Caddy автоматически настроит HTTPS для вашего домена. Это значительно проще, чем ручная настройка Nginx и Certbot, но Nginx предлагает больше возможностей для тонкой настройки.
Обслуживание Kimai на VPS: бэкапы и обновления
Поддержка Kimai self-hosted в рабочем состоянии требует регулярного обслуживания, включающего резервное копирование данных и своевременные обновления. Эти шаги критически важны для обеспечения стабильности, безопасности и доступности вашего приложения.
Стратегии резервного копирования для Kimai self-hosted
Резервное копирование – это самый важный аспект обслуживания любого сервера. Для Kimai необходимо регулярно бэкапить два основных компонента:
- База данных: Содержит все записи о времени, клиентах, проектах, пользователях и настройках.
- Данные Kimai: Включают конфигурационные файлы, загруженные файлы (если Kimai их использует) и другие специфические данные приложения. В нашем случае, так как Kimai запущен в Docker, основные изменяемые файлы – это те, что хранятся в томах.
Для базы данных MariaDB/MySQL, запущенной в Docker, вы можете использовать команду mysqldump изнутри контейнера:
# Получить имя контейнера базы данных
DB_CONTAINER_NAME=$(docker compose ps -q database)
# Выполнить бэкап базы данных
docker exec $DB_CONTAINER_NAME sh -c 'exec mysqldump -u YOUR_DB_USER -pYOUR_DB_PASSWORD YOUR_DB_NAME' > ~/kimai_backup/kimai_db_$(date +%F).sql
Замените YOUR_DB_USER, YOUR_DB_PASSWORD, YOUR_DB_NAME на актуальные значения из вашего файла .env.
Для бэкапа томов Docker, где хранятся данные Kimai (если вы монтировали дополнительные тома для файлов, помимо базы данных):
# Создать архив директории с данными Kimai, если она содержит важные файлы
# Например, если вы используете локальный том для настроек или загруженных файлов
tar -czvf ~/kimai_backup/kimai_files_$(date +%F).tar.gz ~/kimai/
Рекомендуется автоматизировать этот процесс с помощью Cron-заданий. Например, для ежедневного бэкапа базы данных:
crontab -e
Добавьте строку (замените путь до скрипта и учетные данные):
0 3 * * * /bin/bash -c "DB_CONTAINER_NAME=$(docker compose ps -q database) && docker exec $DB_CONTAINER_NAME sh -c 'exec mysqldump -u YOUR_DB_USER -pYOUR_DB_PASSWORD YOUR_DB_NAME' > /path/to/your/kimai_backup/kimai_db_$(date +\%F).sql"
Для более комплексного подхода к резервному копированию на VPS, включая инкрементальные бэкапы и хранение на удаленных хранилищах, рассмотрите такие инструменты, как Restic. Это позволит обеспечить надежное хранение и быстрое восстановление в случае сбоев.
Процесс обновления Kimai Docker
Обновление Kimai, развернутого через Docker Compose, – это относительно простой процесс. Регулярные обновления важны для получения новых функций, исправлений ошибок и патчей безопасности.
Перед обновлением всегда делайте бэкап базы данных!
# Перейдите в директорию с docker-compose.yml
cd ~/kimai
# Остановите текущие контейнеры
docker compose down
# Удалите старые образы (опционально, но рекомендуется для чистоты)
docker compose rm -f
# Загрузите новые образы и запустите контейнеры
docker compose pull
docker compose up -d
После запуска новых контейнеров, Kimai автоматически выполнит необходимые миграции базы данных при первом запуске нового образа. Если вы столкнулись с проблемами после обновления, проверьте логи контейнера Kimai:
docker compose logs kimai
Если Kimai требует каких-либо дополнительных команд для миграции базы данных или очистки кеша после обновления, это обычно указывается в официальной документации Kimai. Например, иногда требуется выполнить:
docker compose exec kimai bin/console doctrine:migrations:migrate --no-interaction
docker compose exec kimai bin/console cache:clear
Однако, для большинства минорных обновлений, простое docker compose pull && docker compose up -d достаточно.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Выбор VPS-конфигурации для Kimai: реальные сценарии
Выбор правильной конфигурации kimai vps напрямую влияет на производительность и стоимость. Для kimai self-hosted важно найти баланс между достаточными ресурсами для комфортной работы и разумными затратами. Valebyte предлагает различные тарифные планы, которые могут подойти для Kimai под разные сценарии нагрузки.
Таблица сравнения VPS для Kimai под разную нагрузку
Ниже представлена таблица с рекомендациями по VPS-конфигурациям для Kimai, основанными на количестве пользователей и интенсивности использования. Цены являются ориентировочными и могут варьироваться.
| Сценарий использования | Пользователи | vCPU | RAM | Диск (NVMe) | Пример тарифа Valebyte* | Ориентировочная цена/мес* |
|---|---|---|---|---|---|---|
| Персональный / Тестирование | 1-3 | 1 | 1 GB | 20 GB | VPS-1 Core | $5 - $7 |
| Малая команда / Фриланс | 4-10 | 2 | 2 GB | 40 GB | VPS-2 Core | $10 - $15 |
| Средняя команда / Активное использование | 11-25 | 2-4 | 4 GB | 80 GB | VPS-4 Core | $20 - $30 |
| Крупная команда / Корпоративный | 25+ | 4-8 | 8+ GB | 160+ GB | VPS-8 Core | $40+ |
*Цены и названия тарифов являются примером и могут отличаться от актуального предложения Valebyte. Всегда проверяйте текущие тарифы на сайте провайдера.
Важно помнить, что NVMe-диски значительно повышают скорость работы базы данных, что критически важно для производительности Kimai, особенно при генерации отчётов и большом количестве записей.
Рекомендации по масштабированию
По мере роста вашей команды и объёма данных в Kimai, возможно, потребуется масштабировать ваш VPS. Вот несколько советов:
- Мониторинг ресурсов: Регулярно отслеживайте загрузку CPU, использование RAM и дискового пространства на вашем VPS. Инструменты вроде
htop,glancesили Prometheus/Grafana помогут вам понять, какие ресурсы являются узким местом. - Масштабирование RAM: Чаще всего первым узким местом становится оперативная память, особенно для базы данных. Увеличение RAM обычно даёт заметный прирост производительности.
- Масштабирование CPU: Если пользователи часто сталкиваются с задержками при выполнении сложных запросов или генерации отчётов, увеличение количества ядер CPU может помочь.
- Оптимизация базы данных: Убедитесь, что ваша база данных настроена оптимально. Для MariaDB/MySQL это может включать настройку
innodb_buffer_pool_sizeи других параметров вmy.cnf. - Выбор более мощного VPS: Если текущий VPS не справляется, рассмотрите переход на более мощный тарифный план. Гибкость VPS-хостинга позволяет легко апгрейдить ресурсы без переустановки. Многие другие приложения для повышения продуктивности, такие как Kanboard или Invoice Ninja, также могут потребовать аналогичного подхода к масштабированию ресурсов.
- Очистка старых данных: Если Kimai используется долго, и вы не нуждаетесь в старых данных, рассмотрите возможность их архивации или удаления для поддержания производительности базы данных.
Выводы
Установка и настройка Kimai на VPS через Docker Compose — это эффективный способ получить мощную систему учета рабочего времени с полным контролем над данными. Важно не только правильно развернуть приложение, но и обеспечить его безопасность, регулярное резервное копирование и своевременные обновления. Выбирая VPS от Valebyte с NVMe-дисками, вы получите надежную основу для стабильной и быстрой работы вашего Kimai self-hosted решения, способного масштабироваться под растущие потребности вашей команды.
Готовы выбрать сервер?
VPS и выделенные серверы в 72+ странах с мгновенной активацией и полным root-доступом.
Начать сейчас →