Быстрый старт
Установите AssetHub на cPanel, Hostinger или собственный VPS менее чем за 10 минут.
Пользователи и роли
5 предустановленных ролей с правами Spatie, тонкая настройка для каждого пользователя.
Функции продукта
Активы, процессы, обслуживание, амортизация, журнал аудита и многое другое.
Настройка
Добавляйте неограниченное число полей, меняйте брендинг, языки и темы.
Настройка Hostinger
Пошаговое развёртывание на самом дешёвом тарифе Single shared hosting.
Настройка cPanel
Пошаговое развёртывание на стандартном shared hosting cPanel — Terminal не требуется.
Безопасность и QR
HTTPS, webhook'и с HMAC-подписью, журнал аудита и сканер QR через камеру.
Отчёты и экспорт
8 встроенных отчётов с экспортом в Excel + PDF и фильтрами по дате.
E-mail-уведомления
Напоминания о гарантии, обслуживании, окончании документов и просроченных checkout'ах.
Часто задаваемые вопросы
Можно ли запустить AssetHub на самом дешёвом тарифе Hostinger Single?
Да — AssetHub полностью совместим с Hostinger Single (~$2,99/мес). Single включает PHP 8.3, MySQL, нативные Cron Jobs и бесплатный SSL — всё, что нужно AssetHub. Без SSH, Composer и командной строки. Смотрите раздел Настройка Hostinger для пошагового руководства.
Нужны ли технические навыки для установки?
Нет. Веб-установщик делает всё: проверка требований, настройка базы данных, миграции и создание учётной записи admin. Просто загрузите файлы, откройте /install в браузере и следуйте мастеру.
Как работают запланированные письма (уведомления о гарантии/обслуживании)?
AssetHub использует планировщик Laravel. Вы настраиваете только один cron job, запускаемый каждую минуту, а Laravel внутренне распределяет каждую задачу в нужное время (ежедневно 08:00, ежемесячно и т. д.). Для cPanel настройте в Advanced → Cron Jobs. Для Hostinger используйте hPanel → Advanced → Cron Jobs. Смотрите Настройка cPanel → Шаг 7 или Настройка Hostinger → Шаг 5. Если на вашем хостинге нет cron, используйте Cron URL приложения с бесплатным сервисом cron-job.org.
Какие методы амортизации поддерживаются?
Три метода: Линейный (равномерная годовая амортизация), Уменьшаемого остатка (ускоренная, обычно для налоговых целей) и Производственный (по использованию, для производственного оборудования). Стоимость активов автоматически обновляется 1-го числа каждого месяца.
Работает ли сканер QR на телефонах?
Да — он использует камеру браузера через html5-qrcode и работает в любом современном браузере телефона/планшета/ПК. Единственное требование — HTTPS. AutoSSL в cPanel и Let's Encrypt SSL в Hostinger работают сразу из коробки.
Можно ли добавить свои поля без кода?
Да. Админ → Пользовательские поля позволяет добавлять неограниченное число атрибутов (текст, число, дата, выпадающий список, текстовая область, файл, чекбокс), ограничивать их конкретными категориями, отмечать как обязательные и переупорядочивать перетаскиванием — всё из интерфейса.
Сколько языков поддерживает AssetHub?
11 locale из коробки: English, Vietnamese, Spanish, French, German, Chinese, Japanese, Portuguese (BR), Russian, Arabic (с полной поддержкой RTL) и Hindi (हिन्दी). Админы управляют переводами в Administration → Translations (требуется право manage translations).
Можно ли установить AssetHub на shared hosting cPanel?
Да — AssetHub работает на любом стандартном тарифе shared hosting cPanel с PHP 8.2+, MySQL и Cron Jobs. Composer и Node.js на сервере не требуются — пакет поставляется в готовом виде. Многие хосты cPanel не предоставляют веб-Terminal; это нормально. Смотрите раздел Настройка cPanel для полного пошагового руководства (включая генерацию APP_KEY без Terminal).
Как изменить брендинг AssetHub (страница входа, заголовок вкладки и цвета)?
AssetHub можно полностью ребрендировать из панели администратора — без правки кода и npm run build. С v3.1.0 логотип, footer и badge входа следуют Settings → Branding → App Name. v4.0 добавляет заголовок вкладки браузера в реальном времени и вкладку Appearance для цветов всего приложения в светлой и тёмной теме.
auth.login_subtitle для каждого языка → настройте цвета в Settings → Appearance.
Краткая справка:
| Элемент | Пример | Как изменить |
|---|---|---|
| Top-left logo & wordmark | VimoticFAR | Settings → Branding → App Name |
| Login subtitle | Enter your credentials to access AssetHub | Administration → Translations → auth.login_subtitle |
| Footer copyright | © 2026 VimoticFAR | Settings → Branding → App Name |
| Right panel badge | VIMOTICFAR | Settings → Branding → App Name |
| Browser page title (tab) | YourAppName | Settings → Branding → App Name (v4.0+) |
| App colors (buttons, sidebar, badges…) | Custom green / blue palette | Settings → Appearance (v4.0+) |
1. Logo and wordmark:
- Sign in as an administrator.
- Go to Settings → Branding.
- Update App Name (and optionally upload a logo).
- Save.
This name appears on the login page (logo, footer, badge), in the sidebar, and — since v4.0 — in the browser tab title on every page.
2. Browser page title (v4.0):
The text shown in the browser tab follows Settings → Branding → App Name at runtime. Change App Name, save, and refresh — no .env edit or rebuild needed. The title updates on the login screen and after sign-in.
3. Login subtitle: the line below the main heading uses the translation key auth.login_subtitle (not App Name).
- In the app (recommended): Administration → Translations → select language → group auth → key
login_subtitle→ replaceAssetHubwith your app name → Save. Repeat for each language. - In code: edit
lang/{locale}/auth.php— e.g.'login_subtitle' => 'Enter your credentials to access YourAppName',
4. Footer and right-panel badge: since v3.1.0, the footer (© {year} …) and the uppercase badge on the right column use the same App Name as the logo. Change it once under Settings → Branding and refresh the login page.
5. App colors — Appearance (v4.0):
The Appearance tab lets you change the color scheme for the entire application — buttons, sidebar highlights, badges, links, and themed text — separately for light and dark mode. Colors are saved to the database.
- Open: Sidebar → Settings → Appearance (requires manage settings permission).
- Color groups: Brand & Accent (primary UI), Success / Warning / Danger / Info (status badges), Primary / Secondary / Muted / Link (text).
- Light & dark: use the Editing: Light / Dark toggle — configure both if your team uses dark mode. Live Preview on the right.
- Save: click Save appearance to apply app-wide. Reset to defaults restores AssetHub's built-in palette (save afterward to persist).
Branding vs Appearance: Branding = app name, logo, page title. Appearance = colors only. For a complete visual rebrand, update both tabs.
Notes:
- Changing App Name does not update translation strings — edit
auth.login_subtitle(and otherauth.*keys) per language. - Translation overrides in Administration → Translations are stored in the database and survive app updates.
- The login page right column (headline, features) uses other
auth.*keys — edit them under the same auth group if needed. - If colors do not update after saving Appearance, hard-refresh (Ctrl+F5) and confirm you are editing the correct light/dark palette.
- After upgrading from an older package, upload the full current
source/files (including pre-builtpublic/build/) if branding features are missing.
Обзор
AssetHub — полноценная система управления активами на Laravel 11, Vue 3 и Tailwind CSS. Версия 3.0 добавляет полноценный Translation Editor, пользовательские locale, CSV import/export и эффективную локализацию часового пояса/валюты — поверх v2: пакетное/лотовое отслеживание, распределения, Disposals и публичные QR-страницы передачи.
Отслеживание по QR
Автогенерация QR-кодов для каждого актива. Сканируйте любой камерой браузера.
Амортизация
3 метода: линейный, уменьшаемого остатка, производственный.
Пользовательские поля
Неограниченные пользовательские атрибуты — текст, дата, выпадающий список, файл, чекбокс.
Webhook'и
15 типов событий с HMAC-подписью и автоповтором.
Журнал аудита
Каждое изменение фиксируется с полным просмотрщиком diff.
Отчёты
12 отчётов с графиками, экспортом в Excel и PDF.
Требования к серверу
- PHP 8.2 или выше
- 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 МБ. Зарезервируйте дополнительно место для фотографий активов и вложений документов.
Установка
Вариант A — Веб-установщик (Рекомендуется)
- Загрузите файлы проекта на ваш веб-сервер.
- Укажите document root домена на
public/. - Установите права:
storage/иbootstrap/cache/должны быть доступны для записи (chmod 775). - Скопируйте
.env.exampleв.envи задайтеAPP_KEY(выполнитеphp artisan key:generateпри наличии SSH/Terminal, или смотрите Настройка cPanel → Шаг 5 для альтернатив через File Manager). - Откройте
https://yourdomain.com/installв браузере. - Следуйте мастеру — Requirements → Database → Migrate → Admin Account → Done.
Вариант B — Установка через 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. Создать symlink storage для загрузок
php artisan storage:link
# 6. Кэшировать конфиг для production
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 7. Отметить как установленный
echo "Installed" > storage/installed.lock
public/. Для Apache включённый .htaccess обрабатывает перезапись URL. Для Nginx см. руководство по развёртыванию Laravel.
Шаг мастера 2 — Настройка базы данных
Когда мастер дойдёт до шага 2, введите данные подключения MySQL для базы, созданной в панели хостинга. База должна уже существовать (может быть пустой — на следующем шаге мастера будут созданы таблицы).
| Поле | По умолчанию / Пример | Примечания |
|---|---|---|
| Host | 127.0.0.1 | Работает на 99% shared hosting (Hostinger, cPanel, Plesk). Оставьте значение по умолчанию, если хостинг не предоставляет собственный hostname MySQL (managed DB: AWS RDS, DigitalOcean Managed Database и т. п.). |
| Port | 3306 | Стандартный порт MySQL. Меняйте только если провайдер использует нестандартный порт (редко). |
| Имя базы данных | uXXXXXX_assethub | Полное имя в панели хостинга. На большинстве shared hosting к имени добавляется префикс user ID (напр. Hostinger: u287094729_assethub). |
| Имя пользователя | uXXXXXX_assethub | Пользователь MySQL с правами на указанную базу. Не используйте root — на shared hosting это запрещено. |
| Пароль | (ваш пароль БД) | Пароль, заданный или скопированный при создании пользователя MySQL. Большинство хостингов показывают его один раз при создании — используйте «View / Reset», если не сохранили. |
Где найти эти учётные данные в панели хостинга
- Hostinger: hPanel → Databases → Management → нажмите на вашу базу данных. На странице отображаются имя, имя пользователя и кнопка «Show password».
- cPanel: cPanel → MySQL Databases. Список баз данных показывает имена; пользователи перечислены ниже. При необходимости используйте «Change Password».
- Plesk: Plesk → Databases → нажмите имя базы данных. На странице деталей — учётные данные и сброс пароля.
- DirectAdmin: DirectAdmin → MySQL Management → нажмите на базу данных. На странице деталей — учётные данные и сброс пароля.
- Внешняя / managed БД: AWS RDS, DigitalOcean Managed Database и т. п. Используйте пользовательский hostname, порт (часто
3306, но проверьте), имя БД, пользователя и пароль из облачной консоли. Убедитесь, что IP сервера в whitelist файрвола БД.
Типичные ошибки и способы исправления
| Сообщение об ошибке | Причина и решение |
|---|---|
SQLSTATE[HY000] [1045] Access denied | Неверное имя пользователя или пароль, либо у пользователя нет доступа к этой базе данных. Перепроверьте написание (включая префикс пользователя на shared hosting). Сбросьте пароль в панели хостинга, если не уверены. |
SQLSTATE[HY000] [1049] Unknown database | Неверное имя базы данных или вы ещё не создали её в панели хостинга. Сначала создайте базу, затем введите точное имя (включая префикс). |
SQLSTATE[HY000] [2002] Connection refused | Сервер MySQL недоступен. Проверьте Host и Port. На shared hosting попробуйте localhost вместо 127.0.0.1 или наоборот. Для managed DB убедитесь, что IP сервера внесён в whitelist. |
SQLSTATE[42S02] Base table not found: sessions | Возникает, когда в .env заданы SESSION_DRIVER=database или CACHE_STORE=database до создания таблиц. Отредактируйте .env и измените оба значения на file, сохраните и перезагрузите мастер. После установки можно вернуть database, если нужно. |
could not find driver | Расширение PHP pdo_mysql отсутствует или отключено. Включите его в панели хостинга (Конфигурация PHP → Расширения). На cPanel: MultiPHP INI Editor → Расширения или Select PHP Version → Расширения. На Hostinger: hPanel → Advanced → PHP Configuration → вкладка PHP Extensions. |
127.0.0.1 и 3306) — на shared hosting оставьте как есть. Нужно ввести только Database name, Username и Password. Нажмите Test & Save →, чтобы проверить подключение и перейти к шагу 3.
Localhost (Локальная разработка)
Краткое руководство по запуску AssetHub на вашем компьютере для тестирования или разработки перед деплоем в продакшн. Выберите среду, подходящую вашей операционной системе.
Вариант 1 — Laravel Herd (Рекомендуется, macOS и Windows)
Laravel Herd — официальная локальная среда от команды Laravel: бесплатная, нативная, без Docker. Включает PHP 8.2/8.3/8.4, Nginx и (в Herd Pro) MySQL/Redis.
- Скачайте и установите Laravel Herd с herd.laravel.com.
- Поместите папку проекта AssetHub в
~/Herd/(macOS) или%USERPROFILE%\Herd\(Windows). Herd автоматически создаст домен.test— напримерhttp://assethub.test. - Откройте Herd → Sites и подтвердите версию PHP 8.2 или 8.3. Правая кнопка по сайту → Secure, чтобы включить HTTPS (нужно для QR-сканера).
- Создайте базу MySQL. В Herd Pro используйте Services → MySQL → Open in TablePlus. Иначе установите MySQL Community или используйте SQLite (
DB_CONNECTION=sqlite,touch database/database.sqlite). - Скопируйте
.env.exampleв.env, заполните учётные данные БД и выполнитеphp artisan key:generateв корне проекта. - Откройте
http://assethub.test/installв браузере и следуйте мастеру установки.
Вариант 2 — XAMPP (Windows, macOS, Linux)
XAMPP упаковывает Apache, MySQL/MariaDB и PHP. Бесплатно и кроссплатформенно. Обязательно выберите версию с PHP 8.2 или новее.
- Скачайте XAMPP 8.2+ с apachefriends.org и установите.
- Скопируйте проект AssetHub в
C:\xampp\htdocs\AssetHub\(Windows) или/Applications/XAMPP/htdocs/AssetHub/(macOS). - Откройте XAMPP Control Panel и запустите Apache и MySQL. Если порты заняты, используйте Config → service.conf, чтобы переключить Apache на 8080.
- Перейдите на
http://localhost/phpmyadmin→ Создать → создайте БДassethubс сопоставлением utf8mb4. - В папке проекта: скопируйте
.env.exampleв.env, задайтеDB_DATABASE=assethub,DB_USERNAME=root, оставьтеDB_PASSWORDпустым (по умолчанию XAMPP). Выполнитеphp artisan key:generate. - Откройте
http://localhost/AssetHub/public/installдля запуска мастера установки.
/public/: создайте виртуальный хост в C:\xampp\apache\conf\extra\httpd-vhosts.conf, указав DocumentRoot на папку public/ проекта, затем добавьте 127.0.0.1 assethub.local в файл hosts.
Вариант 3 — Laragon (Windows)
Laragon — портативный Windows-стек, разработанный для Laravel: автоматические vhost, чистые URL, MySQL/MariaDB и встроенный HeidiSQL.
- Скачайте Laragon Full с laragon.org и установите.
- В Laragon: Меню → PHP → Version — переключите на PHP 8.2 или 8.3.
- Скопируйте проект AssetHub в
C:\laragon\www\AssetHub\. - Нажмите Start All. Laragon автоматически создаст vhost:
http://assethub.test(указывает на папкуpublic/). - Откройте HeidiSQL (встроен) → создайте базу
assethub. Учётные данные по умолчанию: пользовательroot, пароль пустой. - Отредактируйте
.envс учётными данными БД, выполнитеphp artisan key:generateи откройтеhttp://assethub.test/install.
Вариант 4 — Встроенный PHP-сервер (без веб-сервера)
Самый простой вариант: Laravel поставляется с artisan serve, который запускает разработческий PHP-сервер. Apache или Nginx не нужны. Лучше всего для быстрого тестирования.
# Установить зависимости и настроить
cd /path/to/AssetHub
composer install
cp .env.example .env
php artisan key:generate
# Запустить миграции и заполнить начальные данные
php artisan migrate --seed
# Запустить dev-сервер
php artisan serve
# Затем откройте: http://127.0.0.1:8000/install
Частые подводные камни localhost
QR-сканер не открывает камеру по http://
API камеры браузера требуют HTTPS, с одним исключением: http://localhost и http://127.0.0.1 считаются безопасными контекстами. Если открыть AssetHub по LAN IP (например http://192.168.1.10), камера будет отклонена. Для разработки используйте localhost или включите HTTPS через Herd / mkcert.
Permission denied на storage (macOS / Linux)
Если возникают ошибки записи, когда приложение логирует или кеширует, исправьте права: chmod -R 775 storage bootstrap/cache. На Windows обычно не требуется.
Порт уже занят
Если порт 8000 занят другим приложением, используйте другой:
php artisan serve --port=8001
Тестирование email локально
Реальный SMTP недоступен в большинстве localhost-настроек. Два безопасных варианта: (1) задайте MAIL_MAILER=log в .env — письма сохраняются в storage/logs/laravel.log вместо отправки; или (2) используйте Mailtrap / MailHog, чтобы перехватывать исходящую почту в фальшивый ящик.
MAIL_MAILER=log
# Все письма записываются в storage/logs/laravel.log
Frontend-ассеты (Vite / Tailwind)
Vue/Tailwind фронтенд AssetHub предварительно собран в пакете. Если вы редактируете Vue-компоненты или конфиг Tailwind, понадобится Node.js 18+:
npm install
npm run dev # Горячая перезагрузка во время разработки
npm run build # Production-сборка (выполнить перед деплоем)
Развёртывание на Hostinger Single (Shared Hosting)
Это рекомендуемый путь для пользователей без VPS или технического опыта. AssetHub полностью совместим с самым дешёвым тарифом Hostinger Single Web Hosting (~$2,99/мес). Без SSH, Composer и командной строки — Single включает нативные cron jobs, PHP 8.3 и бесплатный SSL.
Шаг 1 — Подготовка хостинга
- Войдите в Hostinger hPanel.
- Перейдите в Хостинг → Управление для вашего домена.
- Установите версию PHP на 8.2 или 8.3 через Дополнительно → Конфигурация PHP.
- Убедитесь, что эти расширения PHP включены (обычно по умолчанию):
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
Шаг 2 — Создание базы данных MySQL
- В hPanel перейдите в Базы данных → MySQL Databases.
- Нажмите Создать новую базу данных.
- Запишите эти 3 значения:
Имя базы данных— напр.u123_AssetHubИмя пользователя— напр.u123_adminПароль— автоматически сгенерированный, храните в безопасности
Шаг 3 — Загрузка файлов
- Перейдите в Файлы → File Manager в hPanel.
- Перейдите в
public_html/(это корень вашего домена). - Удалите любые дефолтные
index.htmlилиdefault.phpв этой папке. - Нажмите Загрузить файлы и загрузите весь
source.zipиз пакета.
Или загрузите содержимое папки/source/напрямую через FTP, если предпочитаете. - Если загрузили ZIP, правая кнопка → Распаковать. После распаковки все файлы должны быть в корне
public_html/. - Убедитесь, что
public_html/содержит:app/,public/,vendor/,.htaccess,index.php(вpublic/),.envи т. д.
.htaccess существует в корне public_html/. Он содержит правила переписывания URL. Если File Manager скрывает скрытые файлы, нажмите Настройки → Показать скрытые файлы.
Шаг 4 — Запуск установщика
- Откройте браузер и перейдите по
https://yourdomain.com/install. - Вы увидите AssetHub Installer.
- Шаг 1: Requirements — Все проверки должны быть пройдены (зелёные). Если какие-то не пройдены, свяжитесь с поддержкой Hostinger для включения недостающего PHP-расширения.
- Шаг 2: Database — Введите учётные данные из Шага 2 выше:
- Хост:
localhost - Порт:
3306 - База данных:
u123_AssetHub - Имя пользователя:
u123_admin - Пароль: (сгенерированный Hostinger)
- Хост:
- Шаг 3: Migrate — Нажмите "Run Migrations & Seed". Занимает ~10 секунд. Не обновляйте страницу.
- Шаг 4: Admin — Создайте учётную запись администратора. Используйте надёжный пароль.
- Готово! — Вы увидите Cron URL (сохраните!) и кнопку входа.
Шаг 5 — Настройка автоматических e-mail-уведомлений через Hostinger Cron
AssetHub использует планировщик Laravel для фоновых задач: уведомления о гарантии, напоминания об обслуживании, окончание документов, обновление амортизации и просроченные checkout. Настройте один cron job в hPanel, и Laravel решит, какую задачу когда запускать.
- В hPanel перейдите в Дополнительно → Cron Jobs.
- Нажмите Создать Cron job.
- Выберите тип: Custom (не "PHP" — нам нужно передать аргумент).
- Для команды введите (замените
uXXXXXXна ваше имя пользователя Hostinger):
Совет: откройте File Manager, найдите файл/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:runartisan(корень проекта), правая кнопка → Свойства, чтобы скопировать полный путь. - Установите расписание на Каждую минуту — все пять полей (Минуты, Часы, День, Месяц, День недели) на
*. - Нажмите Сохранить.
Готово — AssetHub теперь автоматически отправляет напоминания о просроченных checkout, уведомления о обслуживании, окончании документов, гарантии и обновляет значения амортизации. Laravel внутренне планирует каждую задачу с правильной частотой (ежедневно 08:00, ежемесячно и т. д.).
public_html/public/? Не проблема — ваш код Laravel по-прежнему в корне public_html/, поэтому путь cron остаётся /home/uXXXX/public_html/artisan (не добавляйте /public/).
- Войдите как admin → Настройки → вкладка Система → скопируйте ваш Cron URL.
- Бесплатно зарегистрируйтесь на cron-job.org.
- Создайте cronjob, вставьте URL, установите Каждые 15 минут, сохраните.
Шаг 6 — Настройка e-mail (SMTP)
Hostinger предоставляет почтовые учётные записи с каждым тарифом. Чтобы использовать их для уведомлений AssetHub:
- В hPanel перейдите в Email → Почтовые ящики и создайте один (напр.
noreply@yourdomain.com). - Отредактируйте файл
.envвpublic_html/через File Manager: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" - Сохраните файл.
- Войдите в AssetHub → Настройки → вкладка Email → Отправить тестовое письмо. Если получили — готово.
Частые проблемы на Hostinger Single
"500 Internal Server Error" после загрузки
- Проверьте, что
.htaccessсуществует в корнеpublic_html/и содержит правила rewrite. - Проверьте, что версия PHP установлена на 8.2 или 8.3 в hPanel.
- Проверьте
storage/logs/laravel.logчерез File Manager для реальной ошибки.
"Permission denied" при загрузках
Hostinger обычно устанавливает правильные права, но если нет:
- Правая кнопка на
storage/в File Manager → Права → установите755рекурсивно. - То же для
bootstrap/cache/.
Сканер QR не открывает камеру
API камеры браузера требуют HTTPS. Hostinger предоставляет бесплатный SSL через Let's Encrypt — включите его в hPanel в SSL → Управление.
Запланированные письма не отправляются
- В hPanel → Cron Jobs → проверьте колонку Last run у вашей записи cron. Если пусто, cron не запускается — проверьте путь к artisan.
- Протестируйте команду вручную: откройте Terminal в hPanel (если доступен) и запустите команду cron. Если возникнет ошибка, сообщение укажет на проблему (не та версия PHP, не тот путь и т. д.).
- Проверьте, что SMTP правильно настроен (Настройки → Email → Отправить тест).
- Проверьте
storage/logs/laravel.logна ошибки планировщика.
Медленная производительность
Hostinger Single использует общие CPU/RAM. Если у вас в команде более 20 пользователей, рассмотрите:
- Обновление до Premium (~$3,99/мес) — более быстрые серверы, больше ресурсов, несколько баз данных.
- Или Business (~$5,99/мес) — выделенные ресурсы, ежедневные бэкапы, среда staging.
Развёртывание на cPanel (Shared Hosting)
Это руководство охватывает стандартный shared hosting cPanel (Namecheap, Bluehost, GoDaddy и большинство бюджетных хостингов). AssetHub поставляется с vendor/ и заранее собранными frontend-ассетами — Composer, npm и веб-Terminal не требуются. Если в вашем cPanel нет Terminal, используйте SSH Access или варианты работы через File Manager ниже.
/home/CPANELUSER/ — проверьте боковую панель в cPanel в разделе Общая информация.
Шаг 1 — Установить версию PHP и расширения
- Войдите в cPanel.
- Откройте MultiPHP Manager (или Select PHP Version) и задайте домену PHP 8.2 или 8.3.
- Откройте MultiPHP INI Editor или PHP Extensions и убедитесь, что включены:
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
- Если расширение отсутствует, включите его в списке расширений или обратитесь в поддержку хостинга.
Шаг 2 — Включить SSL (HTTPS)
- Перейдите в SSL/TLS Status (или Let's Encrypt SSL / AutoSSL).
- Запустите AutoSSL или установите бесплатный сертификат для вашего домена.
- HTTPS обязателен для доступа браузерного QR-сканера к камере.
https://yourdomain.com, чтобы убедиться, что значок замка появился.
Шаг 3 — Создать базу данных MySQL и пользователя
- Откройте Manage My Databases (в разделе Databases).
- В разделе Create New Database введите имя (напр.
assethub) и нажмите Create. cPanel автоматически добавит префикс вашего аккаунта — полное имя будет выглядеть какcpaneluser_assethub. - В разделе MySQL Users создайте пользователя с надёжным паролем. Скопируйте полное имя пользователя с префиксом.
- В разделе Add User To Database выберите пользователя и базу данных, нажмите Add, затем выдайте ALL PRIVILEGES. Этот шаг легко пропустить — без него вы получите ошибки
Access denied (1045). - Запишите эти три значения точно так, как они показаны в cPanel:
Имя базы данных— напр.u123_AssetHubИмя пользователя— напр.u123_adminПароль— автоматически сгенерированный, храните в безопасности
Шаг 4 — Загрузить файлы
- Откройте File Manager и перейдите в
public_html/(корень документов вашего домена). - Включите Настройки → Показать скрытые файлы, чтобы видеть
.htaccessи.env. - Удалите любой дефолтный
index.htmlвpublic_html/, если он есть. - Загрузите пакет
source.zipи Распакуйте его, или загрузите содержимое папки/source/через FTP. - После распаковки
public_html/должна содержатьapp/,public/,vendor/, корневой.htaccessиartisanна одном уровне.
.htaccess перенаправляет все запросы в папку public/ — на большинстве хостингов не нужно вручную менять корень документов.
Шаг 5 — Подготовить .env перед запуском установщика
Выполните этот шаг до открытия /install. Laravel требует действительный APP_KEY и корректные настройки базы данных в .env.
- В File Manager скопируйте
.env.exampleв.env(та же папка, что иartisan). - Отредактируйте
.envи укажите как минимум:APP_NAME=AssetHub 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_assethub DB_USERNAME=cpaneluser_admin DB_PASSWORD="your_password" SESSION_DRIVER=file CACHE_STORE=file - Установите
DB_CONNECTION=mysql— в.env.exampleпо умолчанию SQLite; shared hosting требует MySQL. - Установите
SESSION_DRIVER=fileиCACHE_STORE=fileдо первой миграции (избежите ошибок "таблица sessions не найдена"). - Оберните
DB_PASSWORDв двойные кавычки, если он содержит специальные символы (#,$,!и т. д.).
Сгенерировать APP_KEY (Terminal не требуется)
Многие тарифы cPanel не включают веб-Terminal. Используйте один из методов:
- SSH Access (cPanel → Безопасность → SSH Access): подключитесь через PuTTY или PowerShell, затем выполните
cd ~/public_html && php artisan key:generate. - Вспомогательный файл в File Manager — создайте временно файл
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 сразу после копирования ключа. Никогда не оставляйте вспомогательные скрипты на production-сервере.
- Установите права на
storage/иbootstrap/cache/в значение 755 (рекурсивно), если установщик сообщает об ошибках записи.
Шаг 6 — Запустить веб-установщик
- Откройте
https://yourdomain.com/installв браузере. - Шаг 1: Требования — все проверки должны быть пройдены (зелёные). Исправьте недостающие PHP-расширения по инструкции из Шага 1 выше.
- Шаг 2: База данных — введите точные имена с префиксами из Шага 3:
- Хост:
127.0.0.1orlocalhost - Порт:
3306 - База данных:
cpaneluser_assethub - Имя пользователя:
cpaneluser_admin - Пароль: (your MySQL password)
- Хост:
- Шаг 3: Migrate — нажмите "Run Migrations & Seed". Занимает ~10 секунд. Не обновляйте страницу.
- Снимите флажок Include demo data для чистой production-установки.
- Шаг 4: Admin — создайте учётную запись администратора.
- Готово! — сохраните Cron URL, отображённый на последнем экране.
Шаг 7 — Настроить Cron Jobs для e-mail-уведомлений
AssetHub требует один cron job, запускаемый каждую минуту, чтобы Laravel мог отправлять предупреждения о гарантии, напоминания об обслуживании и другие запланированные письма.
- В cPanel перейдите в Advanced → Cron Jobs.
- В разделе Add New Cron Job установите расписание на Каждую минуту (
* * * * *). - Введите команду (замените
CPANELUSERна ваше имя пользователя cPanel из раздела Общая информация):
Совет: путь к PHP может быть/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run/usr/local/bin/phpили/usr/bin/php— уточните у хостинга, если не уверены. Путь к artisan — это место, куда вы загрузили проект (обычно/home/CPANELUSER/public_html/artisan). - Нажмите Add New Cron Job для сохранения.
public_html/public/? Cron по-прежнему указывает на /home/CPANELUSER/public_html/artisan — не добавляйте /public/.
- Войдите как admin → Настройки → вкладка Система → скопируйте Cron URL.
- Зарегистрируйтесь на cron-job.org (бесплатно).
- Создайте задание, которое обращается к этому URL каждые 15 минут.
Шаг 8 — Настроить e-mail (SMTP)
Создайте почтовый аккаунт cPanel для исходящих уведомлений:
- Перейдите в Email Accounts → создайте, например,
noreply@yourdomain.com. - Отредактируйте
.envв File Manager: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" - Сохраните, затем в AssetHub: Настройки → Email → Отправить тестовое письмо.
Типичные проблемы на cPanel
"Access denied for user" (SQLSTATE 1045)
- Скопируйте имя базы данных и имя пользователя точно из cPanel — включая префикс аккаунта.
- Убедитесь, что выполнили Add User To Database с ALL PRIVILEGES.
- Сбросьте пароль MySQL в cPanel и обновите
.env— заключитеDB_PASSWORDв кавычки, если он содержит специальные символы.
Миграция завершается ошибкой после успешного шага Database
- Установщик проверяет учётные данные из формы, но Migrate читает из
.env. Убедитесь, что оба совпадают. - Удалите
bootstrap/cache/config.php, если он существует, затем повторите. - Убедитесь, что
DB_CONNECTION=mysqlзадан в.env(не sqlite).
"Invalid default value" при миграции (1067)
Исправлено в AssetHub v2.1.0+ (таблица checkouts использует столбцы dateTime). Если у вас старая копия, обновите файл миграции или скачайте последний пакет с CodeCanyon.
"500 Internal Server Error" после загрузки
- Убедитесь, что корневой
.htaccessсуществует и PHP версии 8.2+. - Проверьте
storage/logs/laravel.logдля реальной ошибки. - Подтвердите, что
APP_KEYзадан в.env— пустой ключ вызывает ошибки 500.
Нет Terminal в cPanel
Это нормально для многих тарифов shared hosting. Используйте SSH Access (если включён), временный метод genkey.php из Шага 5 или сгенерируйте ключ на локальном ПК.
Камера QR-сканера не открывается
Включите SSL через SSL/TLS Status → AutoSSL и откройте сайт по https://.
Конфигурация
Файл .env
| Ключ | Описание | Пример |
|---|---|---|
APP_NAME | Имя приложения, отображаемое в заголовке | AssetHub |
APP_URL | Публичный URL вашей установки | https://assets.example.com |
APP_DEBUG | Установите false на production | false |
DB_* | Параметры подключения к БД | mysql, 127.0.0.1, 3306, ... |
MAIL_MAILER | Драйвер почты | smtp, log, mailgun |
MAIL_HOST | Хост SMTP-сервера | smtp.gmail.com |
MAIL_PORT | Порт SMTP | 587 |
MAIL_USERNAME | Имя пользователя SMTP | your@email.com |
MAIL_PASSWORD | Пароль SMTP или app token | ********** |
MAIL_FROM_ADDRESS | Адрес From по умолчанию | noreply@example.com |
Настройки в приложении
Большинство не чувствительных опций настраиваются из Админ → Настройки:
- Общие: имя/email/телефон компании, префикс asset tag
- Email: отправить тестовое письмо для проверки SMTP
- Уведомления: пороги предупреждения гарантии, окно напоминания об обслуживании
- Локализация: часовой пояс (поисковый список, вкл.
Europe/Skopje), формат даты, код валюты (вкл.MKD— македонский денар), символ и его позиция — применяется по всему приложению после сохранения - Общие → Public Asset Page: видимость QR (публично / вход / отключено) и пересоздание всех QR-кодов после смены URL
- Вкладка Локализация ведёт в Administration → Translations для полного Translation Editor (только admin)
- Branding: имя и логотип — обновляет логотип входа, footer, badge и заголовок вкладки браузера (v4.0+). Подзаголовок входа:
auth.login_subtitleв Administration → Translations - Appearance (v4.0+): настройка цветов бренда, статусов и текста для светлой и тёмной темы — см. руководство по ребрендингу в FAQ
Поддержка нескольких языков
AssetHub поставляется с 11 языками из коробки, включая RTL Arabic и Hindi. Пользователи переключают язык через выпадающий список флагов в правом верхнем углу.
Встроенные языки
| Код | Язык | Направление |
|---|---|---|
en | English (default) | LTR |
vi | Tiếng Việt | LTR |
es | Español | LTR |
fr | Français | LTR |
de | Deutsch | LTR |
zh | 简体中文 | LTR |
ja | 日本語 | LTR |
pt-BR | Português (Brasil) | LTR |
ru | Русский | LTR |
ar | العربية | RTL |
hi | हिन्दी | LTR |
Как переключить язык
- Нажмите на иконку флага в правом верхнем углу, чтобы открыть меню.
- Выберите ваш язык из списка.
- Страница перезагрузится; все метки UI, даты и форматы валют переключатся.
- Ваш выбор сохраняется как в вашей учётной записи, так и в cookie (1 год).
/locale/{code}, что работает только при запущенном PHP-сервере. Всегда заходите через ваш реальный домен (продакшен) или http://localhost:8000 (разработка с php artisan serve). А вот файлы документации, такие как этот, полностью автономны и могут быть открыты напрямую.
Добавление пользовательского языка (админ)
Перейдите в Administration → Translations (админы с правом manage translations):
- Нажмите «Add Locale» — укажите код (напр.
mkдля македонского), отображаемое имя, родное имя, имя SVG-файла флага, направление (LTR/RTL) и базовый locale для копирования переводов. - Новый locale появится в переключателе языка и в списке языка по умолчанию в Настройки → Локализация.
- Переводы в БД автоматически переопределяют файловые переводы в
lang/{code}/.
Translation Editor
Редактор перечисляет каждый ключ перевода по файлам (assets, nav, settings и т. д.). Для ключа показаны базовая линия файла и любое переопределение в БД.
- Фильтр по locale, группе переводов или тексту поиска.
- Нажмите значение для инлайн-редактирования; изменения сразу сохраняются в БД.
- Сбросьте ключ, чтобы вернуться к базовой линии файла.
- Встроенные locale (en, vi, es, …) можно редактировать; пользовательские locale полностью управляются из БД.
- Доступ к этой странице только у пользователей с правом manage translations.
CSV import / export
- Export — скачать все ключи locale в CSV (
group,key,value). - Import — загрузить CSV с теми же столбцами; существующие переопределения в БД обновляются, новые ключи добавляются.
Локаль по умолчанию для пользователя
У каждого пользователя есть колонка locale. Email-уведомления автоматически отправляются на предпочитаемом языке получателя благодаря контракту HasLocalePreference Laravel.
Язык сайта по умолчанию задаётся в Настройки → Локализация → Default Language. Отдельные пользователи переопределяют его через переключатель языка в заголовке.
Список функций
Управление активами
- Автогенерация asset tag
- Несколько изображений на актив
- Генерация QR-кода
- Отслеживание статуса и состояния
- Массовый импорт/экспорт
- Клонирование актива
- Учёт количества пакетов / лотов (v2)
Рабочие процессы
- Назначить / Вернуть / Передать
- Запросы с утверждением
- Бронирование Check-in / Check-out
- Обнаружение конфликтов
Обслуживание
- Планирование профилактики/корректирующего
- Календарный вид
- Автопланирование следующего
- Отслеживание затрат
- E-mail-напоминания
Документы
- Прикреплять счета, руководства
- Inline-просмотр
- Уведомления об окончании
- Различные типы документов
Амортизация
- 3 метода расчёта
- Автообновление стоимости
- График графика
- Годовой свод
Отчёты
- 12 типов отчётов
- Экспорт Excel + PDF
- Графики и дашборды
- Фильтры по дате
Операционные функции (v2)
- Пакетные / лотовые активы со сверкой в реальном времени
- Распределение сотрудникам, отделам, на склад
- Disposals с утверждением и разделением обязанностей
- Публичная QR-страница передачи /a/{tag}
Локализация и переводы (v3)
- 11 встроенных языков UI + пользовательские locale
- Translation Editor: поиск, фильтр по группам, инлайн-редактирование
- CSV import/export для массового обновления переводов
- Настройки часового пояса и валюты применяются по всему приложению
Брендинг и внешний вид (v4)
- Заголовок вкладки браузера обновляется через Настройки → Брендинг → Имя приложения
- Настройка цветов в Настройки → Внешний вид (светлая и тёмная тема)
Пользователи и роли
AssetHub поставляется с 5 предустановленными ролями:
| Роль | Возможности |
|---|---|
| Admin | Полный доступ к системе — пользователи, отделы, настройки, журнал аудита, webhook'и, переводы |
| IT-менеджер | Управление активами (одиночные + пакет/лот), категориями, обслуживанием, запросами; утверждение передач; просмотр отчётов и амортизации |
| Бухгалтер | Управление активами и амортизацией, инвентаризации, утверждение передач и Disposals, полный доступ к отчётам (финансовый фокус) |
| Супервайзер | Утверждение запросов отдела, управление checkout, участие в инвентаризациях, просмотр отчётов |
| Сотрудник | Просмотр назначенных активов, создание запросов, управление своими checkout |
Права хранятся как роли Spatie — администраторы могут тонко настраивать каждое право через БД.
Управление активами
Создание активов
- Перейдите в Активы → Новый актив.
- Заполните имя, категорию, бренд, модель, серийный номер.
- Добавьте дату покупки и цену (требуется для амортизации).
- Загрузите изображения (поддерживается несколько файлов, максимум 5 МБ каждый).
- Сохраните — asset tag и QR-код генерируются автоматически.
Формат Asset Tag
По умолчанию: {PREFIX}-{YEAR}-{NNNN}, напр. AS-2026-0001. Настраивается через Настройки → Общие → Префикс Asset Tag.
Массовый импорт
- Нажмите Импорт на странице Активов.
- Скачайте шаблон Excel.
- Заполните данные — обязательные колонки:
name,category_name. - Загрузите файл.
Пакетные / лотовые активы (v2)
Для одинаковых товаров в количестве (стулья, клавиатуры, форма) выберите Тип отслеживания → Batch / Lot в форме «Новый актив» вместо создания дублирующих записей.
- Введите количество и единицу (штука, комплект, коробка). При сохранении запас помещается в складской пул.
- Откройте актив → вкладка Allocations → Allocate единицы сотруднику или отделу.
- Используйте Return, Adjust (повреждённые/утерянные/на ремонте) или действия по утилизации — сводка в реальном времени должна сходиться с общим количеством.
- Пакетные активы поддерживают только цену за единицу; амортизация необязательна и по умолчанию отключена для быстрой настройки.
php artisan migrate — потери данных не будет.QR-коды
Каждый актив автоматически получает QR-код при создании. Сканирование открывает публичную или авторизованную страницу актива (см. ниже). Сканирование в приложении переходит на экран деталей актива.
Печать этикеток
- Одиночная этикетка: нажмите иконку принтера в любой строке актива.
- Формат PDF: A4, 2 этикетки в строке, включает asset tag, имя, бренд, серийный номер.
Сканирование
Нажмите Сканировать QR на странице Активов. Разрешите доступ к камере. Сканер использует html5-qrcode и работает в любом современном браузере. Примечание: доступ к камере требует HTTPS или localhost.
Публичная QR-страница передачи (v2)
У каждого актива также есть печатаемый публичный URL /a/{asset_tag} — удобно для физической передачи без входа в систему.
- Настройте в Настройки → Общие → Public Asset Page: Public, Login required или Disabled.
- Страница показывает фото, ключевые поля и (для пакетов) разбивку по количеству. Можно распечатать как акт передачи.
- После изменения
APP_URLнажмите Regenerate all QR codes в той же панели настроек.
Рабочие процессы
Назначение актива
- Откройте страницу деталей актива.
- Нажмите Назначить (видно, если актив доступен).
- Выберите пользователя, опциональную дату возврата, заметки.
- Отправьте — создаётся транзакция и отправляется e-mail-уведомление.
Запросы активов
Сотрудники могут отправлять запросы на нужные активы. У запросов 4 статуса: pending → approved → fulfilled или rejected. Письма утверждения отправляются автоматически.
Check-in / Check-out
Для общих активов (камеры, проекторы, транспорт). У бронирований есть диапазоны дат; система предотвращает пересекающиеся checkout. Календарный вид показывает все бронирования с одного взгляда.
Disposals — официальное списание (v2)
Изношенные или повреждённые позиции списываются документированными пакетами с разделением обязанностей (инициатор ≠ утверждающий). Требуются права manage disposals и approve disposals.
- Боковая панель → Disposals → New Disposal. Укажите заголовок и период (Q1–Q4, годовой или разовый).
- Откройте черновик → Add items — подходящие повреждённые единицы пакета или одиночные активы в состоянии Poor.
- Нажмите Submit for approval — пакет блокируется.
- Другой утверждающий нажимает Approve & execute — активы/единицы помечаются как disposed.
- Распечатайте disposal minutes (PDF) для учёта соответствия.
Амортизация
AssetHub рассчитывает амортизацию активов одним из трёх методов:
| Метод | Формула | Применение |
|---|---|---|
| Линейный | (Cost - Salvage) / Useful Life | Самый распространённый; равномерная годовая амортизация |
| Уменьшаемого остатка | 2 / Useful Life × Book Value | Ускоренный; для налоговых целей |
| Производственный | По использованию | Производственное оборудование |
Значения по умолчанию наследуются от категории актива. Записи графика генерируются ежемесячно. current_value актива автоматически обновляется 1-го числа каждого месяца.
Пользовательские поля
Админ → Пользовательские поля позволяет добавить неограниченное число пользовательских атрибутов к активам:
- Типы: текст, число, дата, выпадающий список, текстовая область, файл, чекбокс
- Область: применить ко всем категориям или к конкретной
- Перестановка: перетаскивание за ручку
- Обязательные поля проверяются при сохранении актива
Отчёты
Двенадцать встроенных отчётов, доступных из меню «Отчёты»:
- Сводка активов — итоги по статусу, состоянию, категории, отделу
- Амортизация — потеря стоимости по категории, наиболее амортизированные активы
- Транзакции — активность назначения, возврата, передачи во времени
- Стоимость обслуживания — расходы по месяцу, категории, типу
- Окончание гарантии — активы, требующие внимания через 30/60/180 дней
- Активы по отделам — распределение активов и использование бюджета по отделам
- Активы по источнику — распределение по закупке, проекту, пожертвованию, передаче
- Сводка инвентаризации — расхождения по периодическим циклам аудита
- Employee Assignments (v2) — кто что держит, включая пакетные распределения
- Department / Location (v2) — активы и количества по отделу или местоположению
- Inventory Reconciliation (v2) — запас vs распределено vs повреждено/утеряно/списано
- Damaged Assets (v2) — позиции, отмеченные для ремонта или списания
Все отчёты поддерживают экспорт в Excel и PDF через кнопки в заголовке страницы. Отчёты v2 учитывают количество (число активов + общее число единиц).
Webhook'и
AssetHub может уведомлять внешние сервисы о ключевых событиях.
Доступные события
asset.created,asset.updated,asset.deletedasset.assigned,asset.returned,asset.transferredrequest.created,request.approved,request.rejected,request.fulfilledmaintenance.scheduled,maintenance.started,maintenance.completedcheckout.created,checkout.returned
Формат Payload
{
"event": "asset.assigned",
"timestamp": "2026-05-05T08:00:00+00:00",
"data": {
"asset_id": 1,
"asset_tag": "AS-2026-0001",
"asset_name": "HP EliteDesk 800",
"to_user_id": 4,
"transaction_id": 12
}
}
Проверка подписи
Если настроен secret, запросы содержат заголовок X-AssetHub-Signature с HMAC-SHA256 тела. Проверяйте на вашей стороне:
$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-AssetHub-Signature'))) {
// валидно
}
Политика повторов
Неудачные доставки повторяются 3 раза с задержкой 200 мс. После 10 последовательных сбоев webhook автоматически отключается.
Запланированные задачи
AssetHub использует планировщик Laravel для фоновых задач. Вам нужна только одна запись cron — Laravel внутренне распределяет каждую задачу в нужное время.
Shared hosting (интерфейс Cron Jobs cPanel / Hostinger)
Смотрите раздел Настройка cPanel → Шаг 7 или Настройка Hostinger → Шаг 5 для инструкций со скриншотами. Кратко: Advanced → Cron Jobs, команда:
/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 от имени веб-пользователя (часто www-data) и добавьте:
* * * * * cd /path/to/AssetHub && php artisan schedule:run >> /dev/null 2>&1
Резервный вариант: внешний URL-пингер
Если у вашего хостинга вообще нет cron, используйте Cron URL в приложении (Настройки → вкладка Система) с cron-job.org (бесплатно, каждые 15 мин).
Задачи, выполняемые автоматически
| Время | Команда | Назначение |
|---|---|---|
| Ежедневно 08:00 | send-overdue-checkout-alerts | E-mail-напоминания о просроченных checkout |
| Ежедневно 08:30 | send-maintenance-reminders | Напоминания о предстоящем обслуживании |
| Ежедневно 09:00 | send-document-expiry-alerts | Документы, истекающие через 30/14/7/1 дней |
| Ежедневно 09:30 | send-warranty-alerts | Уведомления об окончании гарантии + страховки |
| Ежедневно 10:00 | assethub:send-depreciation-end-alerts | Уведомления, когда активы достигают конца срока службы |
| Ежедневно 10:30 | send-inventory-audit-reminders | Напоминания для активных инвентаризаций |
| Ежемесячно 1-го числа, 02:00 | update-asset-values | Обновить current_value актива из амортизации |
Upgrade Guides
Step-by-step guides for updating an existing installation. Open the guide that matches your current version.
- v3.1 → v4.0 — Full upgrade guide — Appearance settings, browser tab title from Branding. No migration required.
- v3.0 → v3.1 — Full upgrade guide — Visible languages checklist in navbar picker. No migration required.
- v2.x → v3.0 — Full upgrade guide — Translation Editor, custom locales, localization settings.
- v1.x → v2.0 — Full upgrade guide — Batch assets, disposals, public QR page, operational reports.
Устранение неполадок
"Permission denied" на storage
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
Сканер QR не открывает камеру
API камеры браузера требуют HTTPS. Установите SSL-сертификат или используйте localhost для тестирования.
Письма не приходят
Проверьте storage/logs/laravel.log на ошибки. Используйте Настройки → Email → Отправить тестовое письмо для проверки учётных данных SMTP. Убедитесь, что ваш SMTP-сервер разрешает отправляющий IP.
База данных "Access denied" (1045) на cPanel
Неверное имя пользователя/пароль, пользователь не назначен к базе данных или специальные символы в пароле нарушают разбор .env. Смотрите Настройка cPanel → Типичные проблемы.
Ошибка миграции 1067 (Invalid default value)
Строгий режим MySQL на shared hosting отвергает несколько столбцов timestamp NOT NULL. Исправлено в v2.1.0+. Обновите пакет или измените checkout_date / expected_return_date на dateTime в миграции checkouts.
Отсутствует APP_KEY / ошибка 500 до установки
Laravel требует APP_KEY в .env перед загрузкой приложения. Если в cPanel нет Terminal, смотрите Настройка cPanel → Шаг 5 для методов SSH, genkey.php или локальной генерации.
Сброс установки
Удалите storage/installed.lock и зайдите снова на /install. Существующие данные будут стёрты, если вы перезапустите миграции.
Производительность — медленный список активов
Запустите php artisan optimize для кэширования config, routes, views. Убедитесь, что у MySQL есть индексы на assets.asset_tag, assets.serial_number, assets.status (создаются автоматически миграциями).
Upgrading from v3.0.x to v3.1
Download the v3.1 package from CodeCanyon, replace application files (keep your .env and storage/ uploads). No new migrations are required. The new visible_locales setting is optional — if unset, all languages remain visible in the navbar picker.
v3.0 → v3.1 — Full upgrade guide
Обновление с v2.x до v3.0
Скачайте ZIP v3 с CodeCanyon, замените файлы приложения (сохраните .env и загрузки в storage/), затем выполните php artisan migrate. Новые таблицы для пользовательских locale и переопределений переводов добавляются автоматически. Существующие настройки и активы сохраняются.
v2.x → v3.0 — Full upgrade guide
Обновление с v1.x до v2.0
Скачайте ZIP v2 с CodeCanyon, замените файлы приложения (сохраните .env и загрузки в storage/), затем выполните php artisan migrate. Обновление не ломает данные — однопозиционные активы продолжают работать; таблицы пакетов/Disposals добавляются автоматически.
Журнал изменений
v3.1.0 — Visible Language Picker (2026-06)
- Settings → Localization: checklist to choose which languages appear in the navbar language dropdown (built-in + custom locales)
- Default language is always visible; picker auto-hides when only one language is selected
- Backend validates locale switches; users on a hidden locale fall back to the default language
- No database migration required — upgrade is file-replace only
- Брендинг login: footer и badge следуют Settings → Branding → App Name (без правки кода)
v3.0.0 — Локализация & Translation Editor (2026-06)
- UI Translation Editor в Administration → Translations (Add Locale, инлайн-редактирование, поиск/фильтр по группам)
- Пользовательские locale в БД — код, отображаемое имя, родное имя, SVG флага, направление, базовый locale
- CSV import/export для массового обновления переводов
- Настройки часового пояса и валюты применяются по всему приложению (config/localization.php вкл. Europe/Skopje, MKD)
- Настройки → Локализация: выпадающие списки часовых поясов/валют с поиском и поддержкой пользовательских значений
- Hindi (hi) добавлен как 11-й встроенный locale; date_format учитывается на страницах Vue
- Право manage translations; переопределения в БД объединяются с базовой линией файлов lang/
v2.0.0 — Операционный релиз (2026-06)
- Пакетные / лотовые активы — учёт количества, распределения, возвраты, сверка в реальном времени
- 4 операционных отчёта: Employee Assignments, Department/Location, Inventory Reconciliation, Damaged Assets
- Модуль Disposals — пакеты списания, утверждение с разделением обязанностей, печатаемый протокол PDF
- Публичная QR-страница актива
/a/{tag}с настраиваемой видимостью - Устаревшие отчёты обновлены: количество активов + общее число единиц
- QR-коды ведут на публичную страницу передачи; журнал транзакций фиксирует количество при перемещениях пакетов
- Обновлены демо-данные, руководство пользователя (поставляется отдельно в
documentation/) и строки i18n
v1.0.0 — Первоначальный релиз (2026-05)
- CRUD активов с автогенерацией QR-кода
- 5 пользовательских ролей (Admin, IT-менеджер, Бухгалтер, Супервайзер, Сотрудник) с детальными правами
- Отслеживание Источника актива (централизованная закупка, децентрализованная закупка, инвестиционный проект, пожертвование, внутренняя передача)
- Процессы назначения, возврата с e-mail-уведомлениями
- Процесс утверждения передач (pending → approved/rejected) с контролем прав
- Процесс утверждения запросов активов
- Check-in/check-out с календарным видом
- Планирование обслуживания с автообновлением
- Вложения документов с уведомлениями об окончании
- Амортизация с 3 методами расчёта + уведомления о конце срока службы
- Модуль инвентаризации — периодическая инвентаризация с отслеживанием расхождений
- Пользовательские поля с 7 типами ввода и drag-drop сортировкой
- 8 отчётов с графиками, экспорт в Excel и PDF (вкл. Активы по источнику, Сводка инвентаризации)
- Журнал аудита через Spatie Activitylog с просмотрщиком diff
- Webhook'и с HMAC-подписью и автоповтором
- Многоязычный UI: 10 локалей (en, vi, es, fr, de, zh, ja, pt-BR, ru, ar с RTL)
- UI настроек для компании, e-mail, уведомлений, локализации, переводов
- Веб-мастер установки
- Тёмный режим с палитрой emerald-teal
Благодарности
Используемые open-source библиотеки
- Laravel 11 — MIT
- Vue 3 — MIT
- Inertia.js — MIT
- Tailwind CSS — MIT
- Spatie Permission, Media Library, Activitylog — MIT
- Phosphor Icons — MIT (duotone weight)
- ApexCharts — MIT
- html5-qrcode — Apache 2.0
- Simple QrCode — MIT
- Laravel Excel — MIT
- Laravel DomPDF — MIT