FleetHub Документ

Начинать

Установите FleetHub на cPanel, Hostinger или частный VPS менее чем за 10 минут.

Пользователи и роли

5 ролей автопарка с разрешениями Spatie — администратор, менеджер автопарка, менеджер, бухгалтер, водитель.

Особенности продукта

Транспортные средства, водители, запросы на транспортные средства, передача, журналы топлива, совокупная стоимость владения, соответствие требованиям, показатели состояния автопарка и многое другое.

Кастомизация

Пользовательские поля по типу автомобиля, марке, языку и интерфейсу.

Установить Хостингер

Выполните поэтапное развертывание самого дешевого единого общего пакета.

Установить cPanel

Развертывайте шаг за шагом на хостинге cPanel — терминал не требуется.

Безопасность и QR

Веб-перехватчики для подписи HTTPS, HMAC, журналы аудита и быстрое сканирование QR-кодов с помощью камеры.

Отчет и экспорт

7 отчетов по автопарку, экспорт Excel + PDF, фильтр по дате.

Оповещения по электронной почте

Напоминания о соблюдении требований, техническое обслуживание, запросы на получение просроченных транспортных средств и водительских прав.

Часто задаваемые вопросы

Работает ли FleetHub на самом дешевом одиночном плане Hostinger?

Да — FleetHub полностью совместим с Hostinger Single (~2,99 доллара США в месяц). Единый план включает PHP 8.3, MySQL, Cron Jobs и бесплатный SSL. Нет необходимости в SSH, Composer или командной строке. См. раздел Установка Hostinger.

Нужны ли мне технические навыки для установки?

Нет. Веб-установщик выполняет все функции: тестирование запросов, базу данных, миграцию и создание учетной записи администратора. Просто загрузите файл, перейдите на /install и следуйте инструкциям.

Как работают запланированные электронные письма (оповещения о соблюдении требований и обслуживании)?

FleetHub использует планировщик Laravel. Вам нужно настроить только одно задание cron для запуска каждую минуту; Laravel автоматически запускает каждую задачу вовремя. В cPanel: Дополнительно → Задания Cron. На Hostinger: hPanel → Дополнительно → Задания Cron. Если на хосте нет cron, используйте URL-адрес Cron в приложении с cron-job.org.

Какие методы амортизации поддерживаются?

Три метода: Прямая, Убывающий баланс и Производственные единицы (в часовых километрах). Стоимость автомобиля обновляется ежемесячно и включается в таблицу совокупной стоимости владения.

Работает ли QR-сканер на телефонах?

Да — водители и менеджеры сканируют QR-код автомобиля с помощью камеры браузера через html5-qrcode. Быстрое сканирование (топливо, часы, неисправности) требует регистрации. Требуется HTTPS.

Могу ли я добавить частные поля без кода?

Иметь. Администратор → Пользовательские поля позволяет добавлять неограниченное количество атрибутов, отмечать тегами по типу транспортного средства, обязательную маркировку и сортировку перетаскиванием.

Сколько языков поддерживает FleetHub?

11 языков: английский, вьетнамский, испанский, французский, немецкий, китайский, японский, португальский (BR), русский, арабский (RTL) и хинди. Администрирование переводов осуществляется в Администрирование → Переводы.

Можно ли установить FleetHub на общий хостинг cPanel?

Да — FleetHub работает на общем хостинге cPanel с PHP 8.2+, MySQL и Cron Jobs. Нет необходимости в Composer или Node.js на сервере. См. раздел Установка cPanel.

Как провести ребрендинг FleetHub (страница входа, заголовок вкладки и цвета)?

FleetHub можно полностью переименовать от администратора — не нужно менять код или npm run build. Логотип, нижний колонтитул, значок и заголовок вкладки для входа в меню Настройки → Брендинг → Имя приложения. Вкладка Внешний вид позволяет настроить светлый/темный цвет.

Контрольный список ребрендинга: обновить Имя приложения → отредактировать auth.login_subtitle по языку → настроить цвет в Настройки → Внешний вид.

Краткая справка:

ТоварПримерКак изменить
Логотип и усилитель; имяABC FleetНастройки → Брендинг → Имя приложения
Войти в субтитрыВведите информацию для доступа к FleetHubАдминистрирование → Переводыauth.login_subtitle
Название вкладки браузераИмя приложенияНастройки → Брендинг → Имя приложения
Цвета приложенияПользовательская цветовая палитраНастройки → Внешний вид

1. Логотип и имя: Войти администратор → Настройки → Брендинг → обновить Имя приложения (и загрузить логотип, если необходимо) → Сохранить.

2. Субтитры для входа: Редактировать auth.login_subtitle в Администрирование → Переводы или файл lang/{locale}/auth.php.

3. Цвет приложения: Настройки → Внешний вид — отдельные настройки цвета для светлого и темного. Нажмите Сохранить внешний вид, чтобы применить.

Обзор

FleetHub — корпоративная система управления автопарком для внутренних служебных ТС (50–200 единиц). Построена на Laravel 11, Vue 3 и Tailwind CSS — охватывает ТС, водителей, заявки, передачи с картой повреждений, журналы топлива, расходы, TCO-аналитику, контроль соответствия и индекс здоровья автопарка. Не предназначена для такси или проката.

Быстро сканируйте QR

Сканируйте QR-код автомобиля, чтобы записать уровень топлива, обновить часы или сообщить о проблемах — мобильная оптимизация для водителей.

Таблица совокупной стоимости владения

Общая стоимость владения транспортными средствами и автопарком — покупка, топливо, обслуживание, страховка и многое другое.

Передача автомобиля

Передача импорта/экспорта с двухмерной схемой повреждений, контрольным списком, фотографиями, подписью и отчетом в формате PDF.

Оценка состояния флота

Ежедневный счет с подробностями — просроченное техническое обслуживание, истекающий срок действия, перебои с подачей топлива.

Отслеживание соответствия

Страховка, регистрация, дорожный налог, права, водительские права — оповещения 14/30/7/1 день.

Отчетность по автопарку

7 встроенных отчетов, диаграмм, экспорт в Excel и PDF.

Требуется сервер

  • PHP 8.2 или выше (рекомендуется 8.3)
  • MySQL 5.7+ или MariaDB 10.3+
  • Composer 2.x (только локальная разработка — не требуется на общем хостинге)
  • Node.js 18+ и npm 9+ (только для сборок локального интерфейса)
  • Веб-сервер: Apache или Nginx.

Необходимое расширение PHP

  • OpenSSL, PDO, PDO_MySQL, Mbstring, Tokenizer, XML, Ctype, JSON, GD, Fileinfo

Емкость привода

Минимум ~200 МБ. Дополнительные условия для фотографий транспортных средств, квитанций о топливе, фотографий передачи и документов соответствия.

Параметр

Вариант А — веб-установщик (рекомендуется)

  1. Загрузите файлы проекта на веб-сервер.
  2. Укажите корень документа на папку public/.
  3. Авторизация: storage/ и bootstrap/cache/ должны быть доступны для записи (chmod 775).
  4. Скопируйте .env.example в .env и установите APP_KEY (запустите php artisan key:generate, если SSH доступен, или см. Настройки cPanel → Шаг 5).
  5. Откройте https://yourdomain.com/install в своем браузере.
  6. Следуйте инструкциям мастера — Требования → База данных → Миграция → Учетная запись администратора → Готово. Выберите Включить демонстрационные данные, чтобы загрузить образцы данных (см. Пользователи и роли).

Вариант Б — Установить CLI

# 1. Установите зависимости
composer install --no-dev --optimize-autoloader
npm install
npm run build

# 2. Настройте среду
cp .env.example .env
php artisan key:generate

# 3. Отредактируйте .env, чтобы установить информацию о БД.
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD

# 4. Создайте таблицу и задайте исходные данные.
php artisan migrate --seed

# 5. Создайте хранилище символических ссылок для загрузки.
php artisan storage:link

# 6. Конфигурация кэша для производства
php artisan config:cache
php artisan route:cache
php artisan view:cache

# 7. Отметить установленное
echo "Installed" > storage/installed.lock
Конфигурация веб-сервера: Корень документа должен указывать на public/. Apache использует встроенный .htaccess. Nginx см. Руководство по развертыванию Laravel.

Шаг мастера 2 — Настройка базы данных

Когда мастер доходит до шага 2, вам необходимо ввести информацию о подключении MySQL созданной базы данных в панели управления хостингом. База данных уже должна существовать (может быть пустой — на следующем шаге будут созданы таблицы).

ШколаПо умолчанию/ПримерПримечание
Host127.0.0.1Верно для 99% виртуального хостинга (Hostinger, cPanel, Plesk). Оставайтесь прежними, если хост не предоставит собственное имя хоста MySQL (управляемая база данных, такая как AWS RDS, управляемая база данных DigitalOcean).
Port3306Стандартный порт MySQL. Меняйте только в том случае, если провайдер использует другой порт (редко).
Имя базы данныхuXXXXX_fleethubПолное имя отображается в панели управления хостингом. Большинство виртуальных хостингов имеют префикс в соответствии с идентификатором пользователя (например, Hostinger: u287094729_fleethub).
Имя для входаuXXXXX_fleethubУчетная запись MySQL имеет разрешения на доступ к указанной выше базе данных. НЕ используйте root — общий хостинг запрещен.
Пароль(ваш пароль к БД)Пароль, который вы устанавливаете или копируете при создании пользователя MySQL. Большинство хостов появляются только один раз при создании — используйте «Просмотр/Сброс», если они не сохранены.

Где найти информацию о БД по каждому типу хостинга

  • Hostinger: hPanel → Базы данных → Управление → нажмите базу данных. На странице сведений отображаются имя, имя пользователя и кнопка «Показать пароль».
  • cPanel: cPanel → Базы данных MySQL. Список баз данных выше, список пользователей ниже. При необходимости используйте «Изменить пароль».
  • Plesk: Plesk → Базы данных → щелкните имя базы данных. На странице сведений отображаются учетные данные и имеется кнопка сброса пароля.
  • DirectAdmin: DirectAdmin → Управление MySQL → нажмите на базу данных. Учетные данные и сброс пароля находятся на странице сведений.
  • Внешняя/управляемая БД: AWS RDS, управляемая база данных DigitalOcean и т. д. Используйте собственное имя хоста, порт (обычно 3306, но следует проверить), имя базы данных, пользователя и пароль из облачной консоли. Убедитесь, что IP-адрес сервера внесен в белый список брандмауэра БД.

Распространенные ошибки и как их исправить

Сообщение об ошибкеПричина и исправление
SQLSTATE[HY000] [1045] Access deniedНеверное имя пользователя или пароль, или у пользователя нет прав доступа к этой базе данных. Двойная проверка правописания (включая префикс пользователя на общем хосте). Если не уверены, сбросьте пароль в панели управления хостингом.
SQLSTATE[HY000] [1049] Unknown databaseИмя базы данных неверно, или вы не создали базу данных в панели управления. Сначала создайте его, затем повторно введите точное имя (включая префикс).
SQLSTATE[HY000] [2002] Connection refusedНевозможно подключиться к серверу MySQL. Проверьте хост и порт. На общих хостах попробуйте localhost вместо 127.0.0.1 или наоборот. При использовании управляемой базы данных убедитесь, что IP-адрес сервера внесен в белый список.
SQLSTATE[42S02] Base table not found: sessionsПроисходит, когда SESSION_DRIVER=database или CACHE_STORE=database установлено в .env до существования таблиц. Отредактируйте .env, измените оба на file, сохраните и перезагрузите мастер. Если хотите, вы можете изменить его обратно на database после завершения установки.
could not find driverРасширение PHP pdo_mysql отсутствует или отключено. Включите в панели управления хостингом. В cPanel: Редактор MultiPHP INI → Расширения или Выберите версию PHP → Расширения. На Hostinger: hPanel → Дополнительно → Конфигурация PHP → вкладка «Расширения PHP».
Совет: Поля «Хост» и «Порт» предварительно заполнены наиболее распространенными значениями (127.0.0.1 и 3306), которые остаются неизменными на виртуальном хостинге. Вам просто нужно ввести имя базы данных, имя пользователя и пароль. Нажмите Test & Сохраните →, чтобы проверить соединение и перейдите к шагу 3.

Локальный хост (локальная разработка)

Краткое руководство по запуску FleetHub на вашем компьютере в целях тестирования или разработки перед развертыванием в рабочей среде. Выберите среду, подходящую для вашей операционной системы.

Рекомендуется: Laravel Herd — самый быстрый вариант для macOS и Windows — не требуется Docker и не требуется ручная настройка Apache/MySQL. XAMPP и Laragon — хорошие бесплатные варианты, если вы знакомы с более традиционным стеком.

Вариант 1 — Laravel Herd (рекомендуется, macOS и Windows)

Laravel Herd — официальная локальная среда от команды Laravel — бесплатная, нативная, без Docker. Включает PHP 8.2/8.3/8.4, Nginx и (в Herd Pro) MySQL/Redis.

  1. Загрузите и установите Laravel Herd с сайта herd.laravel.com.
  2. Установите для папки проекта FleetHub значение ~/Herd/ (macOS) или %USERPROFILE%\Herd\ (Windows). Херд создает домен .test — например http://fleethub.test.
  3. Откройте Herd → Сайты и убедитесь, что версия PHP — 8.2 или 8.3. Щелкните сайт правой кнопкой мыши → Безопасность, чтобы включить HTTPS (требуется для QR-сканера).
  4. Создайте базу данных MySQL. С помощью Herd Pro перейдите в Сервисы → MySQL → Открыть в TablePlus. Если у вас нет версии Pro, установите MySQL Community или используйте SQLite (DB_CONNECTION=sqlite, touch database/database.sqlite).
  5. Скопируйте .env.example в .env, заполните информацию о БД, затем запустите php artisan key:generate в корне проекта.
  6. Откройте http://fleethub.test/install в браузере и следуйте указаниям мастера.

Вариант 2 — XAMPP (Windows, macOS, Linux)

XAMPP объединяет Apache, MySQL/MariaDB и PHP. Бесплатная, кроссплатформенная. Обязательно выберите версию PHP 8.2 или выше.

  1. Загрузите XAMPP 8.2+ с apachefriends.org и установите.
  2. Скопируйте проект FleetHub в C:\xampp\htdocs\FleetHub\ (Windows) или /Applications/XAMPP/htdocs/FleetHub/ (macOS).
  3. Откройте Панель управления XAMPP и запустите Apache и MySQL. Если порт занят, перейдите в Config → service.conf, чтобы переключить Apache на 8080.
  4. Перейдите в http://localhost/phpmyadminNew → создайте базу данных с именем fleethub с параметрами сортировки utf8mb4.
  5. В папке проекта: скопируйте .env.example в .env, установите DB_DATABASE=fleethub, DB_USERNAME=root, оставьте DB_PASSWORD пустым (по умолчанию XAMPP). Запустите php artisan key:generate.
  6. Откройте http://localhost/FleetHub/public/install, чтобы запустить мастер установки.
Компактный URL-адрес без /public/: создает виртуальный хост в C:\xampp\apache\conf\extra\httpd-vhosts.conf, указывая DocumentRoot на папку public/ проекта, а затем добавляя 127.0.0.1 fleethub.local в файл хостов.

Вариант 3 — Ларагон (Windows)

Laragon — портативный Windows-стек для Laravel: автоматические vhost, короткие URL, MySQL/MariaDB и встроенный HeidiSQL.

  1. Загрузите Laragon Full с laragon.org и установите.
  2. В Ларагоне: Меню → PHP → Версия — переключитесь на PHP 8.2 или 8.3.
  3. Скопируйте проект FleetHub в C:\laragon\www\FleetHub\.
  4. Нажмите Начать все. Ларагон создает свой собственный виртуальный хост: http://fleethub.test (указывает на папку public/).
  5. Откройте HeidiSQL (включено) → создайте базу данных fleethub. Информация по умолчанию: пользователь root, пароль пустой.
  6. Отредактируйте .env с информацией о БД, запустите php artisan key:generate, затем получите доступ к http://fleethub.test/install.

Вариант 4. Существующий PHP-сервер (веб-сервер не требуется)

Самый простой вариант: Laravel поставляется с artisan serve, который запускает сервер разработки PHP. Нет необходимости в Apache или Nginx. Лучше всего подходит для быстрого тестирования.

# Установите зависимости и настройте
cd /path/to/FleetHub
composer install
cp .env.example .env
php artisan key:generate

# Запустите миграцию и заполните исходные данные
php artisan migrate --seed

# Запустите сервер разработки
php artisan serve
# Затем получите доступ: http://127.0.0.1:8000/install

Распространенные проблемы при запуске localhost

QR-сканер не открывает камеру на http://

API камеры браузера требует HTTPS, за одним исключением: http://localhost и http://127.0.0.1 считаются безопасными контекстами. Если вы получаете доступ к FleetHub через IP-адрес локальной сети (например, http://192.168.1.10), камера будет отклонена. Используйте localhost для разработки или включите HTTPS через Herd/mkcert.

Разрешение на хранилище отклонено (macOS/Linux)

Если вы столкнулись с ошибкой при регистрации или кэшировании приложения, исправьте разрешение: chmod -R 775 storage bootstrap/cache. В Windows обычно нет необходимости.

Порт используется

Если порт 8000 уже занят другим приложением, используйте другой порт:

php artisan serve --port=8001

Проверьте электронную почту локально

Настоящий SMTP обычно недоступен на локальном хосте. Два безопасных варианта: (1) поставить MAIL_MAILER=log в .env — письмо регистрируется в системе storage/logs/laravel.log вместо отправки; или (2) используйте Mailtrap / MailHog для перехвата исходящих писем в поддельный почтовый ящик.

MAIL_MAILER=log
# Все электронные письма сохраняются в хранилище/logs/laravel.log.

Ресурсы внешнего интерфейса (Vite/Tailwind)

Интерфейс Vue/Tailwind от FleetHub уже встроен в пакет. Если вы редактируете компонент Vue или конфигурацию Tailwind, вам понадобится Node.js 18+:

npm install
npm run dev    # Горячая перезагрузка при разработке
npm run build  # Сборка рабочей версии (запуск перед развертыванием)

Развертывание на одиночном хостинге (общий хостинг)

Это рекомендуется для людей без VPS или технического опыта. FleetHub полностью совместим с самым дешевым планом Единый веб-хостинг Hostinger (~2,99 доллара США в месяц). Нет необходимости в SSH, Composer или командной строке — Single поставляется со встроенными заданиями cron, PHP 8.3 и бесплатным SSL.

Протестировано на: Планах Hostinger Single, Premium, Business (PHP 8.2+, MySQL 5.7+, оригинальные задания Cron доступны на всех уровнях).

Шаг 1 — Подготовьте хостинг

  1. Войдите в Hostinger hPanel.
  2. Перейдите в Хостинг → Управление для вашего доменного имени.
  3. Установите версию PHP 8.2 или 8.3 через Дополнительно → Конфигурация PHP.
  4. Убедитесь, что эти расширения PHP включены (обычно по умолчанию):
    • OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo

Шаг 2 — Создайте базу данных MySQL

  1. В hPanel перейдите в Базы данных → Базы данных MySQL.
  2. Нажмите Создать новую базу данных.
  3. Запишите эти 3 значения:
    • Имя базы данных — например u123_FleetHub
    • Имя для входа — например u123_admin
    • Пароль — Создается самостоятельно и бережно хранится

Шаг 3 — Загрузите файлы

  1. Перейдите в Файл → Диспетчер файлов в hPanel.
  2. Перейдите к public_html/ (это корень доменного имени).
  3. Удалите все файлы по умолчанию index.html или default.php в этой папке.
  4. Нажмите Загрузить файлы и загрузите все source.zip из установочного пакета.
    Или загрузите содержимое папки /source/ напрямую через FTP, если хотите.
  5. Если вы загружаете ZIP, щелкните правой кнопкой мыши → Извлечь. После распаковки все файлы должны находиться в корне public_html/.
  6. Подтвердите, что public_html/ содержит: app/, public/, vendor/, .htaccess, index.phppublic/), .env и т. д.
Важно: Убедитесь, что файл .htaccess существует в корне public_html/. Он содержит правила перезаписи URL-адресов. Если Диспетчер файлов скрывает скрытые файлы, нажмите Настройки → Показать скрытые файлы.

Шаг 4 — Запустите установщик

  1. Откройте браузер и перейдите к https://yourdomain.com/install.
  2. Вы увидите установщик FleetHub.
  3. Шаг 1: Требования — Все предметы должны пройти (зеленый). Если есть ошибки, обратитесь в службу поддержки Hostinger, чтобы включить отсутствующее расширение PHP.
  4. Шаг 2: База данных — Введите информацию из шага 2 выше:
    • Хозяин: localhost
    • Порт: 3306
    • База данных: u123_FleetHub
    • Имя пользователя: u123_admin
    • Пароль: (сгенерирован Hostinger)
  5. Шаг 3. Миграция — Нажмите «Выполнить миграцию и заполнение». Занимает ~10 секунд. Не обновляйте.
  6. Шаг 4: Администратор — Создайте учетную запись администратора. Используйте надежные пароли.
  7. Готово! — Вы увидите URL-адрес Cron (сохраните!) и кнопку входа в систему.

Шаг 5. Настройте автоматические оповещения по электронной почте через Hostinger Cron.

FleetHub использует планировщик Laravel: оповещения о соответствии требованиям, напоминания о техническом обслуживании, просроченные запросы, водительские права, обновления стоимости транспортных средств и перерасчет показателей состояния автопарка. Настройте a cron на hPanel.

  1. В hPanel перейдите в Дополнительно → Задания Cron.
  2. Нажмите Создать задание Cron.
  3. Выберите тип: Custom (не «PHP» — потому что нужно передавать параметры).
  4. Введите следующую команду (замените uXXXXXX на свое имя пользователя Hostinger):
    /usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
    Совет: откройте диспетчер файлов, найдите файл artisan (корень проекта), щелкните правой кнопкой мыши → Свойства, чтобы скопировать полный путь.
  5. Установите расписание на Каждую минуту — все пять полей (Минута, Час, День, Месяц, День недели) установлены на *.
  6. Нажмите Сохранить.

FleetHub будет отправлять напоминания о просроченных претензиях, предупреждения о техническом обслуживании, соблюдении требований и лицензировании, обновления амортизации и автоматический перерасчет показателей состояния автопарка.

Корневой каталог документа установлен на public_html/public/? Нет проблем — код Laravel все еще находится в корневом каталоге public_html/, поэтому путь cron остается /home/uXXXX/public_html/artisan (не добавляйте /public/).
План резервного копирования для хостов без cron: Если вы не используете Hostinger или у вашего провайдера нет заданий cron, FleetHub также предоставляет URL-адрес активации веб-перехватчика.
  1. Войдите в систему администратора → Настройки → вкладка «Система» → скопируйте URL-адрес Cron.
  2. Зарегистрируйтесь бесплатно на сайте cron-job.org.
  3. Создайте cronjob, вставьте URL, установите Каждые 15 минут, сохраните.

Шаг 6 — Настройка электронной почты (SMTP)

Hostinger предоставляет учетные записи электронной почты для каждого плана. Для уведомлений FleetHub:

  1. В hPanel перейдите в Электронная почта → Учетные записи электронной почты и создайте учетную запись (например, noreply@yourdomain.com).
  2. Отредактируйте файл .env в public_html/ через диспетчер файлов:
    MAIL_MAILER=smtp
    MAIL_HOST=smtp.hostinger.com
    MAIL_PORT=587
    MAIL_USERNAME=noreply@yourdomain.com
    MAIL_PASSWORD=your_email_password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=noreply@yourdomain.com
    MAIL_FROM_NAME="Your Company Name"
  3. Сохраните файл.
  4. Войдите в FleetHub → Настройки → вкладка «Электронная почта» → «Отправить тестовое письмо». Если вы это поняли, все готово.
Ограничение SMTP для одного плана: Hostinger Single позволяет отправлять ~100 электронных писем в час. Для более крупных развертываний используйте выделенного поставщика, например SendGrid, Mailgun или Postmark (доступны бесплатные планы).

Распространенные проблемы на Hostinger Single

«500 Внутренняя ошибка сервера» после загрузки

  • Убедитесь, что .htaccess существует в корне public_html/ и содержит правила перезаписи.
  • Убедитесь, что в hPanel установлена ​​версия PHP 8.2 или 8.3.
  • Проверьте storage/logs/laravel.log через диспетчер файлов, чтобы увидеть фактическую ошибку.

"В доступе отказано" при загрузке

Hostinger обычно самостоятельно устанавливает правильные разрешения, но если нет:

  • Щелкните правой кнопкой мыши storage/ в Диспетчере файлов → Разрешения → установите значение 755 рекурсивно.
  • То же самое с bootstrap/cache/.

QR-сканер не может открыть камеру

Для API камеры браузера требуется HTTPS. Hostinger предлагает бесплатный SSL через Let's Encrypt — включите его в hPanel в разделе SSL → Управление.

Запланированные электронные письма не отправляются

  • В hPanel → Задания Cron → проверьте столбец Последний запуск в записи cron. Если пусто, cron не запущен — убедитесь, что путь ремесленника правильный.
  • Проверьте команду вручную: откройте Terminal в hPanel (если доступно) и запустите команду cron. Если возникла ошибка, сообщение об ошибке четко укажет на проблему (неправильная версия PHP, неверный путь и т. д.).
  • Убедитесь, что SMTP настроен правильно (Настройки → Электронная почта → Отправить тест).
  • Проверьте storage/logs/laravel.log на наличие ошибок планировщика.

Медленная производительность

Hostinger Single использует общий процессор и оперативную память. Если в вашей группе более 20 человек, учтите:

  • Обновите до Premium (~3,99 доллара США в месяц) — более быстрые серверы, больше ресурсов, больше баз данных.
  • Или Бизнес (~5,99 долларов США в месяц) — выделенные ресурсы, ежедневное резервное копирование, промежуточная среда.

Развертывание на cPanel (общий хостинг)

Это руководство предназначено для стандартного общего хостинга cPanel (Namecheap, Bluehost, GoDaddy и большинства дешевых хостов). У FleetHub уже есть vendor/ и сборка внешнего интерфейса — нет необходимости в Composer, npm или терминале на сервере. Если в cPanel нет терминала, используйте SSH Access или методы в диспетчере файлов ниже.

Протестировано: cPanel 110+ с PHP 8.2/8.3, MySQL 5.7+/MariaDB 10.3+, Apache и Cron Jobs. Домашний каталог обычно — /home/CPANELUSER/ — см. боковую панель cPanel в разделе Общая информация.

Шаг 1 — Установите версию PHP и расширения

  1. Войдите в cPanel.
  2. Откройте MultiPHP Manager (или Выберите версию PHP) и выберите PHP 8.2 или 8.3 для домена.
  3. Откройте MultiPHP INI Editor или Расширения PHP и убедитесь, что следующие расширения включены:
    • OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
  4. Если расширение отсутствует, включите его из списка или обратитесь в службу поддержки хостинга.

Шаг 2 — Включите SSL (HTTPS)

  1. Перейдите к Статус SSL/TLS (или Давайте зашифруем SSL / AutoSSL).
  2. Запустите AutoSSL или установите бесплатный сертификат для домена.
  3. HTTPS требуется, чтобы QR-сканер открыл камеру браузера.
Совет: Подождите несколько минут после включения SSL, затем откройте https://yourdomain.com и проверьте значок замка.

Шаг 3 — Создайте базу данных MySQL и пользователя

  1. Откройте Управление моими базами данных (в разделе «Базы данных»).
  2. В разделе Создать новую базу данных введите имя (например, fleethub) и нажмите «Создать». cPanel автоматически добавляет префикс — полное имя в виде cpaneluser_fleethub.
  3. В разделе Пользователи MySQL создайте пользователя с надежным паролем. Скопируйте имя пользователя с префиксом.
  4. В разделе Добавить пользователя в базу данных выберите пользователя и базу данных, добавить, затем предоставьте ВСЕ ПРИВИЛЕГИИ. Этот шаг легко пропустить — его пропуск приведет к ошибке Access denied (1045).
  5. Запишите ровно 3 значения, отображаемые в cPanel:
    • Имя базы данных — например u123_FleetHub
    • Имя для входа — например u123_admin
    • Пароль — Создается самостоятельно и бережно хранится

Шаг 4 — Загрузите файлы

  1. Откройте Файловый менеджер, перейдите к public_html/ (корень документа).
  2. Включите Настройки → Показать скрытые файлы, чтобы увидеть .htaccess и .env.
  3. Удалите значение по умолчанию index.html в public_html/, если оно присутствует.
  4. Загрузите source.zip и Extract или загрузите содержимое папки /source/ через FTP.
  5. После декомпрессии public_html/ должен иметь корень app/, public/, vendor/, .htaccess и artisan на одном уровне.
Важно: .htaccess root перенаправляет все запросы на public/ — обычно требует изменить корень документа вручную.

Шаг 5. Подготовьте .env перед запуском установщика.

Завершите этот шаг до при открытии /install. Laravel должен быть действительным APP_KEY и правильной конфигурацией БД в .env.

  1. В диспетчере файлов скопируйте .env.example в .env (та же папка, что и artisan).
  2. Отредактируйте .env и установите минимум:
    APP_NAME=FleetHub
    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://yourdomain.com
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=cpaneluser_fleethub
    DB_USERNAME=cpaneluser_admin
    DB_PASSWORD="your_password"
    
    SESSION_DRIVER=file
    CACHE_STORE=file
  3. Установите DB_CONNECTION=mysql.env.example по умолчанию для использования SQLite; для общего хостинга требуется MySQL.
  4. Поставьте SESSION_DRIVER=file и CACHE_STORE=file перед первой миграцией (чтобы избежать ошибок в таблице сеансов).
  5. Заключите DB_PASSWORD в кавычки, если пароль содержит специальные символы (#, $, ! и т. д.).

Сгенерируйте APP_KEY (терминал не нужен)

Многие планы cPanel не включают веб-терминал. Используйте один из следующих методов:

  • SSH-доступ (cPanel → Безопасность → SSH-доступ): соединение PuTTY/PowerShell, запустите cd ~/public_html && php artisan key:generate.
  • Файловый менеджер — создайте временный public/genkey.php, откройте браузер, скопируйте результаты в APP_KEY=, затем немедленно удалите файл.
    <?php
    echo 'base64:' . base64_encode(random_bytes(32));
  • На ПК — если есть локальный PHP: php -r "echo 'base64:'.base64_encode(random_bytes(32));", вставьте .env.
Безопасность: Удалите genkey.php сразу после копирования ключа. Не оставляйте вспомогательные сценарии в рабочей среде.
  • Установите разрешения от storage/ и bootstrap/cache/ до 755 (рекурсивно), если установщик сообщает об ошибке записи.

Шаг 6 — Запустите веб-установщик

  1. Откройте https://yourdomain.com/install в браузере.
  2. Шаг 1: Требования — все должно ПРОЙДАТЬ (зеленый). Исправьте расширение PHP на шаге 1, если оно отсутствует.
  3. Шаг 2: База данных — введите имя с префиксом из шага 3:
    • Хозяин: 127.0.0.1 or localhost
    • Порт: 3306
    • База данных: cpaneluser_fleethub
    • Имя пользователя: cpaneluser_admin
    • Пароль: (your MySQL password)
  4. Шаг 3. Миграция — нажмите «Выполнить миграцию и заполнение». ~10 секунд. Не обновляйте страницу.
  5. Снимите флажок Включить демонстрационные данные при установке чистой продукции.
  6. Шаг 4: Администратор — создайте учетную запись администратора.
  7. Готово! — сохранить URL-адрес Cron на последнем экране.

Шаг 7. Настройте задания Cron для оповещений по электронной почте.

FleetHub необходим запуск cron каждую минуту, чтобы Laravel отправлял оповещения о соответствии требованиям, напоминания о техническом обслуживании, просроченные запросы и другие запланированные электронные письма.

  1. В cPanel перейдите в Дополнительно → Задания Cron.
  2. В разделе Добавить новое задание Cron установите расписание на Каждую минуту (* * * * *).
  3. Введите команду (замените CPANELUSER на имя пользователя cPanel в разделе «Общая информация»):
    /usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
    Совет: путь PHP может быть /usr/local/bin/php или /usr/bin/php. Путь ремесленника обычно /home/CPANELUSER/public_html/artisan.
  4. Нажмите Добавить новое задание Cron, чтобы сохранить.
Корень документа — public_html/public/? Cron по-прежнему указывает на /home/CPANELUSER/public_html/artisan — не более /public/.
Нет cron? Использовать URL-адрес Cron в приложении:
  1. Войдите в систему с правами администратора → Настройки → Система → скопируйте URL-адрес Cron.
  2. Зарегистрируйтесь бесплатно на сайте cron-job.org.
  3. Создайте задание, которое будет вызывать этот URL-адрес каждые 15 минут.

Шаг 8 — Настройка электронной почты (SMTP)

Создайте учетную запись электронной почты cPanel для исходящих уведомлений:

  1. Перейдите в Учетные записи электронной почты → создайте, например. noreply@yourdomain.com.
  2. Отредактируйте .env в диспетчере файлов:
    MAIL_MAILER=smtp
    MAIL_HOST=mail.yourdomain.com
    MAIL_PORT=587
    MAIL_USERNAME=noreply@yourdomain.com
    MAIL_PASSWORD=your_email_password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=noreply@yourdomain.com
    MAIL_FROM_NAME="Your Company Name"
  3. Сохраните, затем во FleetHub: Настройки → Электронная почта → Отправить тестовое письмо.
Ограничение общего хостинга SMTP: Многие хосты cPanel ограничивают ~100–500 электронных писем в час. Большим командам следует использовать SendGrid, Mailgun или Postmark.

Распространенные проблемы в cPanel

«Доступ запрещен для пользователя» (SQLSTATE 1045)

  • Скопируйте имя базы данных и имя пользователя точно из cPanel, включая префикс.
  • Подтвердите Добавить пользователя в базу данных со ВСЕМИ ПРИВИЛЕГИЯМИ.
  • Сбросьте пароль MySQL в cPanel и обновите .env — используйте скобки вокруг DB_PASSWORD, если есть специальные символы.

Миграция завершается сбоем после прохождения шага «База данных».

  • Мастер проверяет форму, но Migrate читает .env. Убедитесь, что они совпадают.
  • Удалите bootstrap/cache/config.php, если он есть, и повторите попытку.
  • Убедитесь, что DB_CONNECTION=mysql в .env (не sqlite).

«Неверное значение по умолчанию» при миграции (1067)

Строгий режим MySQL на виртуальном хостинге может запрещать значения по умолчанию для некоторых столбцов. См. storage/logs/laravel.log и убедитесь, что PHP 8.2+ со всеми расширениями.

«500 Внутренняя ошибка сервера» после загрузки

  • Ознакомьтесь с оригинальным .htaccess и PHP 8.2+.
  • См. storage/logs/laravel.log для фактической ошибки.
  • Убедитесь, что APP_KEY установлено в .env — пустой ключ вызывает ошибку 500.

В cPanel нет терминала

Это нормально на многих shared-пакетах. Используйте SSH Access (если включён), временный genkey.php на шаге 5 или сгенерируйте ключ на локальном ПК.

QR-сканер не открывает камеру

Включите SSL через Состояние SSL/TLS → AutoSSL и получите доступ с помощью https://.

Конфигурация

.env-файл

ЗамокОписыватьНапример
APP_NAMEНазвание приложения отображается в строке заголовка.FleetHub
APP_URLПубличный URL-адрес установкиhttps://fleet.example.com
APP_DEBUGУстановите false при производствеfalse
DB_*Информация о подключении к базе данныхmysql, 127.0.0.1, 3306, ...
MAIL_MAILERПочтовый драйверsmtp, log, mailgun
MAIL_HOSTИмя хоста SMTP-сервераsmtp.gmail.com
MAIL_PORTПорт SMTP587
MAIL_USERNAMEИмя пользователя SMTPyour@email.com
MAIL_PASSWORDПароль SMTP или токен приложения**********
MAIL_FROM_ADDRESSАдрес отправителя по умолчаниюnoreply@example.com

Установить в приложение

Большинство неконфиденциальных параметров настраиваются в Администратор → Настройки:

  • Общие: название компании/адрес электронной почты/телефон, бренд.
  • Автомобильный парк: префикс кода транспортного средства, шаблон контрольного списка передачи, настройки по умолчанию для технического обслуживания, режим страницы общественного транспорта.
  • Электронная почта: отправить тестовое письмо для проверки SMTP.
  • Уведомления: включение/отключение оповещений о соответствии требованиям, техническое обслуживание, требования к транспортному средству, лицензия.
  • Многоязычный: часовой пояс, формат даты, валюта — применимо во всем приложении.
  • Соответствие: управление предустановками типов соответствия (страхование, регистрация, дорожный налог...)
  • Бренд: название и логотип приложения — обновленный логин, нижний колонтитул, заголовок вкладки.
  • Внешний вид: настройте цвет бренда, статус и текст для светлого/темного цвета — см. руководство по ребрендингу в FAQ.

Многоязычная поддержка

FleetHub доступен на 11 языках, включая арабский (RTL) и хинди. Пользователи меняют язык с помощью раскрывающегося списка флагов в правом верхнем углу.

Доступные языки

КодЯзыкНаправление
enEnglish (default)LTR
viTiếng ViệtLTR
esEspañolLTR
frFrançaisLTR
deDeutschLTR
zh简体中文LTR
ja日本語LTR
pt-BRPortuguês (Brasil)LTR
ruРусскийLTR
arالعربيةRTL
hiहिन्दीLTR

Как изменить язык

  1. Нажмите на значок флага в правом верхнем углу, чтобы открыть раскрывающийся список.
  2. Выберите язык из списка.
  3. Страница перезагрузится; Все метки пользовательского интерфейса, даты и форматы валют сохраняются.
  4. Выбор сохраняется как в учетной записи пользователя, так и в файлах cookie (1 год).
Не открывайте файл .html приложения напрямую. FleetHub — это серверное приложение Laravel + Vue — изменение языка отправки POST на /locale/{code} работает только при работающем PHP-сервере. Всегда доступ через реальный домен (производственный) или http://localhost:8000 (разработчик с php artisan serve). Файлы документации, подобные этому, полностью автономны и могут быть открыты напрямую.

Добавить собственный язык (администратор)

Перейдите в Администрирование → Переводы (у администратора есть разрешение управление переводами):

  • Нажмите «Добавить локаль» — введите код (например, mk для македонского языка), отображаемое имя, название локали, имя файла флага SVG, направление (LTR/RTL) и исходную локаль, чтобы скопировать перевод.
  • Новая локаль появится в переключателе языков и списке языков по умолчанию в меню «Настройки» → «Локализация».
  • Перевод БД автоматически переопределяет файл в lang/{code}/.

Редактор перевода

Редактор перечисляет все ключи перевода по файлам (активы, навигация, настройки...). Каждая клавиша отображает базовый файл и переопределяет БД (если есть).

  • Фильтрация по локали, группе переводов или текстовому поиску.
  • Нажмите значение, чтобы изменить его в строке; Сохраните в БД сейчас.
  • Клавиша сброса для возврата к базовому файлу.
  • Встроенную локаль (en, vi, es...) можно редактировать; Полностью настраиваемая локаль из БД.
  • Доступ к этой странице имеют только пользователи с разрешением управление переводами.

Импорт/экспорт CSV

  • Экспорт — загрузить все ключи локали в формате CSV (group,key,value).
  • Импорт — загрузить CSV в тот же столбец; обновлена ​​база данных переопределения, добавлен новый ключ.

Языковой стандарт по умолчанию в соответствии с пользователем

У каждого пользователя есть столбец locale. Письма с уведомлениями автоматически отправляются в соответствии с языком получателя благодаря контракту Laravel HasLocalePreference.

Язык сайта по умолчанию находится в Настройки → Локализация → Язык по умолчанию. Отдельные пользователи переопределяют язык с помощью переключателя языка в заголовке.

Список функций (15 групп модулей)

Управление транспортным средством

  • Автоматически сгенерированный код автомобиля (префикс VH)
  • Номерной знак, VIN, марка, модель, тип топлива.
  • Генерируйте QR-коды и печатайте оптом
  • Статус, статус, отслеживание счетчика
  • Массовый импорт/экспорт Excel
  • Клонируйте машину при покупке множества похожих машин
  • Страница сведений с 7 вкладками и временной шкалой жизненного цикла

Требования и передача

  • Обработка запроса → одобрение → оплата
  • Обнаружение календаря и дубликатов календаря
  • 2D-диаграмма повреждений + цифровая подпись
  • Экспорт отчета о передаче в формате PDF

Обслуживание

  • Планирование профилактики и коррекции
  • Расписание по уровню приоритета
  • Запланируйте следующее профилактическое обслуживание самостоятельно
  • Отслеживание расходов → автоматическая синхронизация расходов
  • Напоминание по электронной почте до истечения срока

Соответствие требованиям и топливо

  • Раздел комплаенс (страхование, регистрация, лицензирование)
  • Следить за сроком действия водительских прав
  • Журнал топлива, загрузка квитанций и сжатие фотографий
  • Проверка на мошенничество с часами

Общая стоимость владения и амортизация

  • 3 метода амортизации, включая производственные единицы (км)
  • Таблица совокупной стоимости владения с индексом стоимости/км
  • Автоматически синхронизируйте расходы на топливо и техническое обслуживание
  • График кривой амортизации

Отчет

  • 7 типов отчетов автопарка
  • Экспорт Excel + PDF
  • Панель управления ApexCharts
  • Фильтровать по периоду времени

Эксплуатировать автопарк

  • Оценка состояния флота, пересчитывается ежедневно
  • Управляйте водителями, синхронизируйте водительские права
  • Расходы на транспортное средство (страховка, дорожные сборы, парковка...)
  • Быстрое QR-сканирование для водителей (топливо, счетчик, происшествия)

Многоязычный

  • 11 языков пользовательского интерфейса + пользовательская локаль
  • Редактор переводов, поиск и редактирование онлайн
  • Импорт/экспорт CSV для пакетных обновлений.
  • Часовой пояс и валюта применяются во всем приложении.

Бренд и внешний вид

  • Название вкладки браузера в меню «Настройки» → «Брендинг» → «Имя приложения».
  • Настройте цвет в «Настройки» → «Внешний вид» (светлый и темный).

Пользователи и роли

FleetHub имеет 5 ролей, доступных для внутренних операций автопарка:

РольВласть
АдминПолный контроль системы — пользователи, отделы, настройки, журналы аудита, вебхуки, переводы.
Управление автопаркомУправляйте транспортными средствами, водителями, запросами, передачами, обслуживанием и журналами топлива; утвердить запрос; Полный отчет
БухгалтерТаблицы совокупной стоимости владения, затраты, амортизация, отчеты о соответствии — финансовая направленность, преимущественно просмотр
Руководитель отделаПросматривайте запросы на номера, просматривайте транспортные средства и отправляйте отчеты в отделы.
ВодительПросматривайте автомобили, находящиеся в режиме ожидания, записывайте журналы топлива, быстро сканируйте QR-код, просматривайте свои запросы

Демо-счет (пароль: password): admin@fleethub.test, manager@fleethub.test, dept@fleethub.test, accountant@fleethub.test, driver@fleethub.test. Включите демонстрационные данные при установке или раздаче. Разрешения Spatie — администраторы могут точно настроить каждое разрешение.

Управление транспортным средством

Создать новую машину

  1. Перейдите в Транспорт → Новые транспортные средства.
  2. Заполните номерной знак, марку, модель, год, тип топлива, категорию и отдел.
  3. Добавьте дату и цену покупки (обязательно для учета амортизации и совокупной стоимости владения).
  4. Загрузите фотографии (несколько файлов, максимум 5 МБ каждый — автоматически сжимаются на мобильном устройстве).
  5. Сохранить — код автомобиля и QR-код генерируются автоматически.

Формат кода автомобиля

По умолчанию: {PREFIX}-{YEAR}-{NNNN}, например VH-2026-0001. Настройте в Настройки → Автопарк → Префикс кода автомобиля.

Массовый импорт

  1. Нажмите Импорт на странице «Транспортные средства».
  2. Загрузите шаблоны Excel.
  3. Заполните данные — обязательные столбцы: license_plate, make, model, category_name.
  4. Загрузите файлы.

QR-код и быстрое сканирование

Каждое транспортное средство автоматически получает QR-код при создании. Отсканируйте, чтобы открыть страницу общественного транспорта или выполнить быстрые действия в приложении для вошедших в систему водителей.

Распечатайте QR-этикетки

  • Одна этикетка: щелкните значок принтера на автомобиле.
  • Пакетная печать: выберите несколько автомобилей → Распечатайте QR-этикетки. Размер А4, 2 этикетки/ряд.

Сканировать в приложении

Нажмите Сканировать QR на странице «Автомобиль». Разрешить камеры. Работает в современных браузерах с HTTPS или localhost.

Страница общественного автомобиля

У каждого автомобиля есть общедоступный URL-адрес по адресу /v/{vehicle_code}, что полезно для быстрой идентификации без необходимости входа в систему.

  • Настройте в Настройки → Автопарк → Страница общественного транспорта: Общественный, Требовать вход в систему или Выкл.
  • В гостевом режиме отображается только основная информация (номерной знак, марка/модель). Для быстрого действия требуется войти в систему.
  • После изменения APP_URL нажмите Обновить все QR-коды в настройках.

Процедура

Запросить машину

Сотрудник отправляет заявку на использование транспортного средства. Поток: requested → approved → returned (или rejected). Менеджер автопарка или руководитель отдела согласования. В календаре отображаются резервы автомобилей для всего автопарка. Верните просроченный автомобиль и отправьте электронное письмо с предупреждением.

Передача автомобиля

  1. Когда запрос будет одобрен, создайте Exit Handover, прежде чем водитель заберет автомобиль.
  2. Запишите время, заполните чек-лист, отметьте повреждения на 2D-схемах, прикрепите фотографии и цифровые подписи.
  3. Сохраните и загрузите отчет о доставке в формате PDF для своих записей.
  4. При возврате автомобиля создайте Handover — сравнить статус, обновить счетчик, удалить назначение водителя.
  5. Завершение приёмной передачи помечает заявку как возвращённую и устанавливает статус ТС «доступно».

Амортизация и совокупная стоимость владения

FleetHub рассчитывает амортизацию транспортного средства одним из трех методов. Амортизация включается в таблицу совокупной стоимости владения вместе с журналами учета топлива и расходов.

МетодРецептВ случае использования
Прямая линия(Cost - Salvage) / Useful LifeСамый популярный; Амортизируются равномерно каждый год
Баланс постепенно уменьшается2 / Useful Life × Book ValueБыстрая амортизация; налоговые цели
Производственное подразделение(км за этот период / общее ожидаемое количество км) × (цена покупки — ликвидационная стоимость)Ожидаемое общее количество километров автомобиля (согласно часам)

По умолчанию наследуется от категории транспортных средств. current_value обновляется ежемесячно через fleethub:update-vehicle-values. TCO = цена покупки + общая стоимость автомобиля за выбранный период.

Пользовательские поля

Администратор → Пользовательские поля позволяют добавлять неограниченное количество свойств к транспортным средствам:

  • Тип: текст, число, дата, выбор, текстовая область, файл, флажок.
  • Область: применяется ко всем категориям или определенным категориям транспортных средств.
  • Arrange: маркер перетаскивания.
  • Обязательное поле проверяется при сохранении автомобиля

Отчет

Семь интегрированных отчетов об автопарке, доступных из меню «Отчеты»:

  1. Total TCO — общая стоимость владения транспортным средством и всем автопарком.
  2. График амортизации — начисление амортизации по ТС, с экспортом файла
  3. Затраты на техническое обслуживание — расходы по транспортному средству, типу и месяцу.
  4. Расход и стоимость топлива — тренд км/л, неравномерная разметка
  5. Использование запроса на транспортное средство — уровень бронирования транспортных средств с течением времени
  6. Истечение срока действия — истекает срок действия документов на транспортное средство и водительских прав.
  7. Распределение транспортных средств по отделам — транспортные средства и их использование по отделам

Все отчеты поддерживают экспорт Excel и PDF с помощью кнопки в верхней части страницы.

Интеграция вебхука

FleetHub может уведомлять внешние службы о важных событиях в автопарке.

Событие доступности

  • vehicle.created, vehicle.updated, vehicle.deleted
  • requisition.approved, requisition.rejected, requisition.overdue, requisition.returned
  • handover.completed
  • compliance.expiring, compliance.expired
  • maintenance.due, maintenance.overdue, maintenance.completed
  • fleet_health_score.dropped

Формат полезной нагрузки

{
  "event": "handover.completed",
  "timestamp": "2026-06-23T08:00:00+00:00",
  "data": {
    "vehicle_id": 1,
    "vehicle_code": "VH-2026-0001",
    "license_plate": "51A-12345",
    "handover_id": 12,
    "direction": "outgoing",
    "driver_id": 4
  }
}

Подтвердить подпись

Если настроено как секретное, запрос имеет заголовок X-FleetHub-Signature, содержащий HMAC-SHA256 тела. Подтвердите свою сторону:

$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-FleetHub-Signature'))) {
  // действительный
}

Политика повторных попыток

Доставка не удалась, и попытка повторилась 3 раза каждые 200 мс. После 10 последовательных сбоев вебхук отключается.

Запланированные задачи

FleetHub использует планировщик Laravel для фоновых задач. Всего one cron — Laravel выполняет каждую команду fleethub: вовремя.

Общий хостинг (Cron Jobs cPanel / Hostinger)

См. Установить cPanel → Шаг 7 или Установить Hostinger → Шаг 5. Вкратце: Дополнительно → Задания Cron, команда:

/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run

Календарь: каждую минуту (* во всех пяти полях).

команда cron cPanel

Замените CPANELUSER на свое имя пользователя cPanel:

/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run

VPS/частный сервер (crontab)

Запустите crontab -e от веб-пользователя и добавьте:

* * * * * cd /path/to/FleetHub && php artisan schedule:run >> /dev/null 2>&1

Резервный вариант: проверка связи с внешним URL-адресом

Если на хосте нет cron, используйте URL-адрес Cron в приложении (Настройки → Система) с cron-job.org (бесплатно, каждые 15 минут).

Задача запускается автоматически

ВремяКомандаЦель
Ежедневно 08:00fleethub:send-requisition-overdue-alertsЗапрос был одобрен, но оплата не была произведена после даты закрытия.
Ежедневно 08:30fleethub:send-maintenance-remindersНапоминаем, что скоро предстоит техническое обслуживание
Ежедневно 09:00fleethub:send-compliance-expiry-alertsСрок действия соглашения истекает через 14/30/7/1 дней.
Ежедневно 09:30fleethub:send-driver-license-alertsВнимание! Срок действия водительских прав истекает.
1-го числа каждого месяца 02:00fleethub:update-vehicle-valuesОбновить текущее_значение транспортного средства на основе амортизации
Ежедневно 03:00fleethub:recalculate-fleet-health-scoreПересчет и кэширование очков здоровья флота

Руководства по обновлению

FleetHub v1.0.0 — первый релиз на CodeCanyon.

FleetHub v1.0.0 — первый публичный релиз. Предыдущих версий для обновления нет. Руководства по обновлению будут добавлены при выходе новых версий.

Поиск неисправностей

«Разрешение отклонено» на хранилище

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

QR-сканер не открывает камеру

Для API камеры браузера требуется HTTPS. Установите SSL или используйте localhost при тестировании.

Электронная почта не получена

Проверьте storage/logs/laravel.log на наличие ошибок. Используйте Настройки → Электронная почта → Отправить тестовое письмо, чтобы подтвердить информацию SMTP. Убедитесь, что SMTP-сервер разрешает отправку IP-адресов.

База данных «Доступ запрещен» (1045) на cPanel

Неправильный пользователь/пароль, пользователь не назначен в базу данных, или в пароле повреждены специальные символы .env. См. Установка cPanel → Распространённые проблемы.

Ошибка миграции 1067 (недопустимое значение по умолчанию)

Строгий режим MySQL на общем хостинге отклоняет несколько столбцов timestamp NOT NULL. Исправлено начиная с версии 2.1.0+. Обновление пакета или изменение yêu cầu xe_date/expected_return_date на dateTime при миграции требует наличия xes.

APP_KEY отсутствует / ошибка 500 перед установкой

Laravel требуется APP_KEY в .env перед запуском приложения. Если в cPanel нет терминала, см. Установить cPanel → Шаг 5 (SSH, genkey.php или создать на ПК).

Сбросить настройки

Удалите storage/installed.lock и снова получите доступ к /install. Существующие данные будут удалены, если миграция будет запущена снова.

Производительность — список медленных автомобилей

Запустите php artisan optimize. Убедитесь, что индекс MySQL находится на vehicles.vehicle_code, vehicles.license_plate, vehicles.status.

Журнал изменений

v1.0.0 — Первый выпуск (2026-06)

  • CRUD — автомобиль с автоматически сгенерированным QR-кодом и общедоступной страницей /v/{vehicle_code}
  • 5 ролей (администратор, менеджер автопарка, менеджер, бухгалтер, водитель)
  • Управляйте водителями, синхронизируйте срок действия водительских прав с разделом соответствия
  • Процесс запроса транспортного средства с расписанием и оповещениями о просрочке
  • Передайте автомобиль с 2D-схемой повреждений, контрольным списком, подписью и PDF-файлом.
  • Журнал учета топлива, защита от мошенничества со счетчиками, автоматическая синхронизация расходов
  • Таблица стоимости транспортного средства и совокупной стоимости владения с анализом стоимости/км
  • Износ — прямолинейный, уменьшающийся остаток, ед. продукции (км)
  • Товар соответствует предупреждению об истечении срока годности 30/14/7/1 день.
  • Планирование технического обслуживания, профилактическое самообновление, отслеживание затрат
  • Оценка состояния флота, ежедневный пересчет и подробное модальное окно
  • 7 отчетов о автопарке, экспорт в Excel и PDF
  • Пользовательские поля (7 типов) по категориям транспортных средств
  • Вебхуки подписывают HMAC (X-FleetHub-Signature) и повторяют попытку.
  • Журнал аудита Spatie Activitylog с различиями
  • Многоязычный интерфейс: 11 языков, включая арабский язык справа налево и хинди.
  • Компания, автопарк, электронная почта, уведомления, предустановленные настройки соответствия
  • Веб-установщик с системой раздачи демонстрационных данных
  • Темный режим, пользовательский интерфейс ориентирован на мобильные устройства, сжатие изображений при загрузке

Примечание

Используемая библиотека с открытым исходным кодом