はじめに
cPanel、Hostinger、または独自の VPS に AssetHub を 10 分以内でインストール。
ユーザーと役割
Spatie 権限を備えた 5 つの事前構成済み役割。ユーザー単位で細かく調整可能。
製品機能
資産、ワークフロー、メンテナンス、減価償却、監査ログなど。
カスタマイズ
無制限のカスタムフィールド、ブランディング、言語、テーマの変更。
Hostinger セットアップ
最安の Single 共有ホスティングへのステップバイステップデプロイ。
cPanel セットアップ
標準の cPanel 共有ホスティングでのステップバイステップデプロイ — ターミナル不要。
セキュリティと QR
HTTPS、HMAC 署名 Webhook、監査ログ、カメラ経由の QR スキャン。
レポートとエクスポート
Excel + PDF エクスポート、日付フィルタ付きの 8 種類の組み込みレポート。
メールアラート
保証、メンテナンス、ドキュメント期限切れ、超過チェックアウトのリマインダー。
よくある質問
最安の Hostinger Single プランで AssetHub を実行できますか?
はい — AssetHub は Hostinger Single (~$2.99/月) と完全互換です。Single には PHP 8.3、MySQL、ネイティブ Cron Jobs、無料 SSL が含まれており、AssetHub に必要なものはすべて揃っています。SSH、Composer、コマンドラインは不要です。ステップバイステップガイドは Hostinger セットアップ セクションをご覧ください。
インストールに技術スキルは必要ですか?
いいえ。Web ベースのインストーラーがすべてを処理します:要件チェック、データベース設定、マイグレーション、管理者アカウント作成。ファイルをアップロードし、ブラウザで /install にアクセスして、ウィザードに従うだけです。
予約メール (保証/メンテナンスアラート) はどのように動作しますか?
AssetHub は Laravel のスケジューラを使用します。毎分実行する cron job を 1 つ設定するだけで、Laravel が内部で各タスクを正しい時刻 (毎日 08:00、毎月など) にディスパッチします。cPanel の場合は Advanced → Cron Jobs で設定します。Hostinger の場合は hPanel → Advanced → Cron Jobs を使用します。cPanel セットアップ → ステップ 7 または Hostinger セットアップ → ステップ 5 をご覧ください。ホストに cron がない場合は、無料の cron-job.org サービスとアプリ内の Cron URL を使用してください。
どの減価償却方法がサポートされていますか?
3 つの方法:定額法 (年次均等償却)、定率法 (加速、税務目的で一般的)、生産高比例法 (使用量ベース、製造機器向け)。資産価値は毎月 1 日に自動更新されます。
QR スキャナーは携帯電話で動作しますか?
はい — html5-qrcode 経由でブラウザカメラを使用し、あらゆる最新スマートフォン/タブレット/デスクトップブラウザで動作します。唯一の要件は HTTPS です。cPanel AutoSSL と Hostinger Let's Encrypt SSL はどちらも即座に動作します。
コーディングなしで独自のフィールドを追加できますか?
はい。管理者 → カスタムフィールド で無制限の属性 (テキスト、数値、日付、選択、テキストエリア、ファイル、チェックボックス) を追加でき、特定のカテゴリに限定し、必須としてマークし、ドラッグ&ドロップで並べ替えることが可能です — すべて UI から。
AssetHub はいくつの言語をサポートしていますか?
11 の locale が標準搭載: English、Vietnamese、Spanish、French、German、Chinese、Japanese、Portuguese (BR)、Russian、Arabic(完全 RTL 対応)、Hindi(हिन्दी)。管理者は Administration → Translations から翻訳を管理(manage translations 権限が必要)。
AssetHub を cPanel 共有ホスティングにインストールできますか?
はい — AssetHub は PHP 8.2+、MySQL、Cron Jobs を備えた標準的な cPanel 共有ホスティングプランであれば動作します。サーバーに Composer や Node.js は不要です — パッケージはビルド済みです。多くの cPanel ホストは Web ターミナルを含みません;それで問題ありません。完全なステップバイステップガイド (ターミナルなしで APP_KEY を生成する方法を含む) については cPanel セットアップセクションをご覧ください。
AssetHub のブランディングを変更するには(ログインページ、ページタイトル、色)?
AssetHub は管理パネルから完全にリブランドできます — コード編集や npm run build は不要です。v3.1.0 以降、ログインロゴ・フッター・バッジは Settings → Branding → App Name に従います。v4.0 では同じ App Name からブラウザのページタイトルがリアルタイムで反映され、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 は、v2 のバッチ/ロット追跡、割り当て、Disposals、公開 QR 引き渡しページに加え、完全な Translation Editor、カスタム locale、CSV インポート/エクスポート、効果的なタイムゾーン/通貨ローカライゼーションを追加しました。
QR コード追跡
すべての資産に QR コードを自動生成。ブラウザのカメラでスキャン。
減価償却
3 つの方法:定額法、定率法、生産高比例法。
カスタムフィールド
無制限のカスタム属性 — テキスト、日付、選択、ファイル、チェックボックス。
Webhook
HMAC 署名と自動再試行を備えた 15 種類のイベントタイプ。
監査ログ
すべての変更を完全な diff ビューア付きで記録。
レポート
チャート、Excel、PDF エクスポート付きの 12 レポート。
サーバー要件
- PHP 8.2 以上
- MySQL 5.7+ または MariaDB 10.3+
- Composer 2.x
- Node.js 18+ と npm 9+
- Web サーバー:Apache または Nginx
必須の PHP 拡張
- OpenSSL, PDO, PDO_MySQL, Mbstring, Tokenizer, XML, Ctype, JSON, GD, Fileinfo
ディスク容量
最低 ~ 200 MB。資産写真とドキュメント添付用に追加スペースを確保してください。
インストール
オプション A — Web インストーラー (推奨)
- プロジェクトファイルを Web サーバーにアップロードします。
- ドメインの document root を
public/に向けます。 - 権限を設定:
storage/とbootstrap/cache/は書き込み可能でなければなりません (chmod 775)。 .env.exampleを.envにコピーしてAPP_KEYを設定します (SSH/ターミナルがある場合はphp artisan key:generateを実行、またはファイルマネージャーの代替手段は cPanel セットアップ → ステップ 5 をご覧ください)。- ブラウザで
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 認証情報を設定
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
# 4. データベーステーブルを作成し、初期データを seed
php artisan migrate --seed
# 5. アップロード用 storage シンボリックリンクを作成
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 が URL リライトを処理します。Nginx の場合は Laravel デプロイガイド を参照してください。
ウィザード ステップ 2 — データベース設定
ウィザードがステップ 2 に到達したら、ホスティングパネルで作成したデータベースの MySQL 接続情報を入力する必要があります。データベースは既に存在している必要があります(空でも可 — 次のウィザードステップでテーブルが作成されます)。
| フィールド | デフォルト / 例 | 備考 |
|---|---|---|
| Host | 127.0.0.1 | 99% の共有ホスト(Hostinger、cPanel、Plesk)で動作します。ホスティングがカスタム MySQL ホスト名を提供しない限り(AWS RDS、DigitalOcean Managed Database などのマネージド DB サービス)、このデフォルトを維持してください。 |
| Port | 3306 | 標準の MySQL ポート。プロバイダーが非標準ポートを使用する場合のみ変更してください(まれ)。 |
| データベース名 | uXXXXXX_assethub | ホスティングパネルに表示される完全な名前。ほとんどの共有ホストはユーザー ID をプレフィックスとして付与します(例: Hostinger: u287094729_assethub)。 |
| ユーザー名 | uXXXXXX_assethub | 上記データベースに対する権限を持つ MySQL ユーザー。root は使用しないでください — 共有ホストでは許可されていません。 |
| パスワード | (DB パスワード) | MySQL ユーザー作成時に設定またはコピーしたパスワード。多くのホストは作成時に一度だけ表示します — 保存していない場合は "View / Reset" を使用してください。 |
ホスティングパネル別の認証情報の確認場所
- Hostinger: hPanel → Databases → Management → データベースをクリック。ページに名前、ユーザー名、「Show password」ボタンが表示されます。
- cPanel: cPanel → MySQL Databases。データベース一覧に名前が表示され、ユーザーは下に一覧表示されます。必要に応じて "Change Password" を使用してください。
- Plesk: Plesk → Databases → データベース名をクリック。詳細ページに認証情報とパスワードリセットがあります。
- DirectAdmin: DirectAdmin → MySQL Management → データベースをクリック。詳細ページに認証情報とパスワードリセットがあります。
- 外部 / マネージド DB: AWS RDS、DigitalOcean Managed Database など。クラウドコンソールのカスタムホスト名、ポート(多くは
3306ですが要確認)、DB 名、ユーザー、パスワードを使用してください。サーバー IP が DB ファイアウォールでホワイトリストに登録されていることを確認してください。
よくあるエラーと対処法
| エラーメッセージ | 原因と対処法 |
|---|---|
SQLSTATE[HY000] [1045] Access denied | ユーザー名またはパスワードが間違っているか、ユーザーがこのデータベースにアクセスできません。スペル(共有ホストのユーザープレフィックスを含む)を再確認してください。不明な場合はホスティングパネルでパスワードをリセットしてください。 |
SQLSTATE[HY000] [1049] Unknown database | データベース名が間違っているか、ホスティングパネルでまだデータベースを作成していません。先に作成し、正確な名前(プレフィックスを含む)を再入力してください。 |
SQLSTATE[HY000] [2002] Connection refused | MySQL サーバーに到達できません。Host と Port を確認してください。共有ホストでは localhost と 127.0.0.1 を入れ替えて試してください。マネージド DB では、サーバー IP がホワイトリストに登録されていることを確認してください。 |
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 → 高度な設定 → PHP 設定 → PHP 拡張タブ。 |
127.0.0.1 と 3306)で事前入力されています — 共有ホスティングではそのままにしてください。入力が必要なのは Database name、Username、Password のみです。Test & Save → をクリックして接続を確認し、ステップ 3 に進みます。
ローカルホスト (ローカル開発)
本番環境にデプロイする前のテストや開発のために、AssetHub をご自身のコンピュータで動かすためのクイックガイドです。お使いの OS に合った環境を選択してください。
オプション 1 — Laravel Herd (推奨、macOS & Windows)
Laravel Herd は Laravel チームによる公式ローカル環境です — 無料、ネイティブ、Docker 不要。PHP 8.2/8.3/8.4、Nginx、(Herd Pro では) MySQL/Redis を同梱。
- herd.laravel.com から Laravel Herd をダウンロードしてインストールします。
- 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にコピーし、DB 認証情報を入力し、プロジェクトルートでphp artisan key:generateを実行します。- ブラウザで
http://assethub.test/installを開き、インストーラーウィザードに従います。
オプション 2 — XAMPP (Windows、macOS、Linux)
XAMPP は Apache、MySQL/MariaDB、PHP をバンドルしています。無料でクロスプラットフォーム。PHP 8.2 以上のバージョンを選択してください。
- apachefriends.org から XAMPP 8.2+ をダウンロードしてインストール。
- 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/ なしの綺麗な URL:C:\xampp\apache\conf\extra\httpd-vhosts.conf でバーチャルホストを作成し、DocumentRoot をプロジェクトの public/ フォルダに指定。続けて hosts ファイルに 127.0.0.1 assethub.local を追加します。
オプション 3 — Laragon (Windows)
Laragon は Laravel 向けに設計されたポータブル Windows スタック — 自動 vhost、綺麗な URL、MySQL/MariaDB、同梱の HeidiSQL。
- laragon.org から Laragon Full をダウンロードしてインストール。
- 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に DB 認証情報を編集、php artisan key:generateを実行、続けてhttp://assethub.test/installにアクセス。
オプション 4 — 組み込み PHP サーバー (Web サーバー不要)
最もシンプルなオプション:Laravel には artisan serve が同梱され、開発用 PHP サーバーを起動します。Apache や Nginx は不要。クイックテストに最適。
# 依存関係をインストールして設定
cd /path/to/AssetHub
composer install
cp .env.example .env
php artisan key:generate
# マイグレーションを実行して初期データをシード
php artisan migrate --seed
# 開発サーバーを起動
php artisan serve
# アクセス先: http://127.0.0.1:8000/install
ローカルホスト共通の落とし穴
http:// では QR スキャナーがカメラを開けない
ブラウザのカメラ API は HTTPS を要求しますが、例外があります:http://localhost と http://127.0.0.1 はセキュアコンテキストとして扱われます。LAN IP (例:http://192.168.1.10) 経由で AssetHub にアクセスすると、カメラは拒否されます。開発には localhost を使用するか、Herd / mkcert で HTTPS を有効化してください。
storage の Permission denied (macOS / Linux)
アプリがログやキャッシュを書き込もうとしてエラーが出る場合、権限を修正:chmod -R 775 storage bootstrap/cache。Windows では通常不要です。
ポートが既に使用中
ポート 8000 が他のアプリに使われている場合、別のポートを使用:
php artisan serve --port=8001
ローカルでメールをテスト
ほとんどのローカルホスト構成では実 SMTP は利用できません。安全な 2 つのオプション:(1) .env で MAIL_MAILER=log を設定 — メールは送信される代わりに storage/logs/laravel.log にダンプされます。または (2) Mailtrap / MailHog を使用して送信メールを偽の受信箱でキャプチャ。
MAIL_MAILER=log
# すべてのメールは storage/logs/laravel.log に書き込まれます
フロントエンドアセット (Vite / Tailwind)
AssetHub の Vue/Tailwind フロントエンドはパッケージにビルド済みで含まれています。Vue コンポーネントや Tailwind 構成を編集する場合は Node.js 18+ が必要です:
npm install
npm run dev # 開発中のホットリロード
npm run build # 本番ビルド (デプロイ前に実行)
Hostinger Single (共有ホスティング) へのデプロイ
VPS や技術経験のないユーザーにとって、これが推奨パスです。AssetHub は最安の Hostinger Single Web Hosting プラン (~$2.99/月) と完全に互換性があります。SSH、Composer、コマンドラインは不要 — Single にはネイティブ cron jobs、PHP 8.3、無料 SSL が標準で含まれています。
ステップ 1 — ホスティングの準備
- Hostinger hPanel にログインします。
- ドメインの ホスティング → 管理 に移動します。
- 高度な設定 → PHP 構成 で PHP バージョンを 8.2 または 8.3 に設定します。
- 次の PHP 拡張が有効になっていることを確認してください (通常はデフォルトで有効):
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
ステップ 2 — MySQL データベースの作成
- hPanel で データベース → MySQL Databases に移動します。
- 新規データベース作成 をクリックします。
- 次の 3 つの値をメモします:
データベース名— 例u123_AssetHubユーザー名— 例u123_adminパスワード— 自動生成、大切に保管
ステップ 3 — ファイルのアップロード
- hPanel で ファイル → File Manager に移動します。
public_html/に移動します (これはドメインのルートです)。- そのフォルダ内のデフォルトの
index.htmlやdefault.phpを削除します。 - ファイルアップロード をクリックし、パッケージ内の
source.zip全体をアップロードします。
または、お好みであれば FTP 経由で/source/フォルダの内容を直接アップロードしてもかまいません。 - 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 — Hostinger Cron で自動メールアラートを設定
AssetHub は Laravel のスケジューラをバックグラウンドタスクに使用します:保証アラート、メンテナンスリマインダー、ドキュメント期限切れ、減価償却リフレッシュ、超過チェックアウト。hPanel で 1 つ の cron job を設定すると、Laravel がどのタスクをいつ実行するかを決定します。
- hPanel で 高度な設定 → Cron Jobs に移動します。
- Cron job 作成 をクリックします。
- タイプを選択:Custom ("PHP" ではなく — 引数を渡す必要があります)。
- コマンドに次を入力します (
uXXXXXXを Hostinger アカウントのユーザー名に置き換えます):
ヒント:File Manager を開き、/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:runartisanファイル (プロジェクトのルート) を見つけ、右クリック → プロパティでフルパスをコピーします。 - スケジュールを 毎分 に設定 — 5 つのフィールドすべて (分、時、日、月、曜日) を
*に設定。 - 保存 をクリックします。
これで完了 — AssetHub は超過チェックアウトのリマインダー、メンテナンスアラート、ドキュメント期限切れアラート、保証アラートを自動送信し、資産の減価償却値を自動更新します。Laravel が内部で各 job を正しい頻度 (毎日 08:00、毎月など) でスケジュールします。
public_html/public/ に設定?問題ありません — Laravel コードは依然として public_html/ のルートにあるため、cron パスは /home/uXXXX/public_html/artisan のままです (/public/ を追加しないでください)。
- 管理者としてログイン → 設定 → システムタブ → Cron URL をコピーします。
- cron-job.org に無料で登録します。
- cronjob を作成し、URL を貼り付け、15 分ごと に設定して保存します。
ステップ 6 — メール (SMTP) の設定
Hostinger は各プランにメールアカウントを提供します。AssetHub の通知に使用するには:
- hPanel で メール → メールアカウント に移動し、1 つ作成します (例
noreply@yourdomain.com)。 - File Manager 経由で
public_html/の.envファイルを編集します: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 にログイン → 設定 → メールタブ → テストメール送信。受信すれば完了です。
Hostinger Single でのよくある問題
アップロード後の "500 Internal Server Error"
.htaccessがpublic_html/のルートに存在し、リライトルールが含まれていることを確認します。- hPanel で PHP バージョンが 8.2 または 8.3 に設定されていることを確認します。
- 実際のエラーは File Manager 経由で
storage/logs/laravel.logを確認します。
アップロード時の "Permission denied"
通常、Hostinger は正しい権限を設定しますが、そうでない場合:
- File Manager で
storage/を右クリック → 権限 → 再帰的に755に設定します。 bootstrap/cache/も同様に。
QR コードスキャナーがカメラを開かない
ブラウザのカメラ API には HTTPS が必要です。Hostinger は Let's Encrypt 経由で無料 SSL を提供しています — hPanel の SSL → 管理 で有効化します。
予約メールが送信されない
- hPanel → Cron Jobs → cron エントリの Last run 列をチェックします。空の場合、cron が発火していません — artisan パスが正しいか確認します。
- コマンドを手動でテスト:hPanel の ターミナル (利用可能な場合) を開き、cron コマンドを実行します。エラーが発生した場合、エラーメッセージが問題を特定します (PHP バージョン違い、パス違いなど)。
- SMTP が正しく構成されていることを確認します (設定 → メール → テスト送信)。
- スケジューラのエラーについて
storage/logs/laravel.logをチェックします。
パフォーマンスが遅い
Hostinger Single は CPU/RAM が共有です。チームが 20 ユーザーを超える場合は、次を検討します:
- Premium (~$3.99/月) へのアップグレード — より高速なサーバー、より多くのリソース、複数のデータベース。
- または Business (~$5.99/月) — 専用リソース、毎日のバックアップ、ステージング環境。
cPanel へのデプロイ (共有ホスティング)
このガイドは標準的な cPanel 共有ホスティング (Namecheap、Bluehost、GoDaddy、およびほとんどの格安ホスト) を対象としています。AssetHub はビルド済みの vendor/ とフロントエンドアセットを同梱 — Composer、npm、または Web ターミナルは不要です。cPanel にターミナルがない場合は、SSH Access または以下のファイルマネージャーの回避策を使用してください。
/home/CPANELUSER/ です — cPanel のサイドバーの General Information で確認してください。
ステップ 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 を実行するか、ドメインに無料証明書をインストールします。
- ブラウザ内の QR スキャナーがカメラにアクセスするには HTTPS が必須です。
https://yourdomain.com にアクセスして鍵アイコンが表示されることを確認します。
ステップ 3 — MySQL データベースとユーザーの作成
- Manage My Databases を開きます (データベースの下)。
- Create New Database でデータベース名 (例:
assethub) を入力して作成をクリックします。cPanel がアカウントプレフィックスを自動追加 — 完全な名前はcpaneluser_assethubのようになります。 - MySQL Users で、強力なパスワードでユーザーを作成します。プレフィックス付きの完全なユーザー名をコピーします。
- Add User To Database で、ユーザーとデータベースを選択して追加をクリックし、ALL PRIVILEGES を付与します。このステップは見逃しやすい — これをしないと
Access denied (1045)エラーが発生します。 - cPanel に表示された通りに、次の 3 つの値を正確にメモします:
データベース名— 例u123_AssetHubユーザー名— 例u123_adminパスワード— 自動生成、大切に保管
ステップ 4 — ファイルのアップロード
- File Manager を開き、
public_html/(ドメインのドキュメントルート) に移動します。 - Settings → Show Hidden Files を有効化して
.htaccessと.envを表示します。 public_html/にデフォルトのindex.htmlがあれば削除します。source.zipパッケージをアップロードして展開するか、FTP 経由で/source/フォルダの内容をアップロードします。- 展開後、
public_html/にapp/、public/、vendor/、ルート.htaccess、同じ階層のartisanが含まれている必要があります。
.htaccess がすべてのリクエストを public/ フォルダにリダイレクトします — ほとんどのホストでドキュメントルートを手動で変更する必要はありません。
ステップ 5 — インストーラー実行前の .env 準備
/install にアクセスする前にこのステップを完了してください。Laravel は .env に有効な APP_KEY と正しいデータベース設定が必要です。
- ファイルマネージャーで
.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=fileDB_CONNECTION=mysqlを設定 — デフォルトの.env.exampleは SQLite を使用;共有ホスティングは MySQL が必要。- 最初のマイグレーション前に
SESSION_DRIVER=fileとCACHE_STORE=fileを設定 ("sessions テーブルが見つかりません" エラーを回避)。 DB_PASSWORDに特殊文字 (#、$、!など) が含まれる場合はダブルクォートで囲みます。
APP_KEY の生成 (ターミナル不要)
多くの cPanel プランには Web ターミナルが含まれていません。次のいずれかの方法を使用してください:
- SSH Access (cPanel → セキュリティ → SSH Access): PuTTY または PowerShell で接続し、
cd ~/public_html && php artisan key:generateを実行します。 - ファイルマネージャーヘルパー —
public/genkey.phpを一時的に作成し、ブラウザでアクセスし、出力をAPP_KEY=にコピーして、すぐにファイルを削除します。<?php echo 'base64:' . base64_encode(random_bytes(32)); - PC 上で — PHP がローカルにインストールされている場合は
php -r "echo 'base64:'.base64_encode(random_bytes(32));"を実行し、結果を.envに貼り付けます。
genkey.php を削除します。本番サーバーにヘルパースクリプトを残さないでください。
- インストーラーが書き込みエラーを報告する場合、
storage/とbootstrap/cache/の権限を 755 (再帰) に設定します。
ステップ 6 — Web インストーラーの実行
- ブラウザで
https://yourdomain.com/installにアクセスします。 - ステップ 1: Requirements — すべてのチェックが通過 (緑) する必要があります。上記ステップ 1 で不足している PHP 拡張を修正します。
- ステップ 2: Database — ステップ 3 のプレフィックス付き正確な名前を入力します:
- ホスト:
127.0.0.1orlocalhost - ポート:
3306 - データベース:
cpaneluser_assethub - ユーザー名:
cpaneluser_admin - パスワード: (your MySQL password)
- ホスト:
- ステップ 3: Migrate — "Run Migrations & Seed" をクリックします。約 10 秒かかります。ページをリフレッシュしないでください。
- クリーンな本番インストールには Include demo data のチェックを外します。
- ステップ 4: Admin — 管理者アカウントを作成します。
- 完了! — 最終画面に表示される Cron URL を保存します。
ステップ 7 — メールアラート用 Cron Jobs の設定
AssetHub が保証アラート、メンテナンスリマインダー、その他の予約メールを送信できるよう、毎分 1 つの cron job が必要です。
- cPanel で Advanced → Cron Jobs に移動します。
- Add New Cron Job でスケジュールを毎分 (
* * * * *) に設定します。 - コマンドを入力します (
CPANELUSERを General Information の 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/ を追加しないでください。
- 管理者としてログイン → 設定 → システム → Cron URL をコピーします。
- cron-job.org に無料で登録します。
- その URL を 15 分ごとに呼び出すジョブを作成します。
ステップ 8 — メール (SMTP) の設定
送信通知用に cPanel メールアカウントを作成します:
- Email Accounts に移動 → 例:
noreply@yourdomain.comを作成します。 - ファイルマネージャーで
.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" - 保存後、AssetHub で: 設定 → メール → テストメール送信。
cPanel でのよくある問題
"Access denied for user" (SQLSTATE 1045)
- cPanel からデータベース名とユーザー名を正確にコピーします — アカウントプレフィックスを含めて。
- Add User To Database を ALL PRIVILEGES で完了したことを確認します。
- cPanel で MySQL パスワードをリセットして
.envを更新 —DB_PASSWORDに特殊文字が含まれる場合はクォートで囲みます。
データベースステップ通過後にマイグレーションが失敗
- ウィザードはフォームの認証情報をテストしますが、Migrate は
.envから読み込みます。両方が一致することを確認してください。 bootstrap/cache/config.phpが存在する場合は削除し、再試行します。.envでDB_CONNECTION=mysqlが設定されていることを確認します (sqlite ではなく)。
マイグレーション中の "Invalid default value" (1067)
AssetHub v2.1.0+ で修正済み (checkouts テーブルは dateTime 列を使用)。古いコピーをお持ちの場合は、マイグレーションファイルを更新するか、CodeCanyon から最新パッケージをダウンロードしてください。
アップロード後の "500 Internal Server Error"
- ルート
.htaccessが存在し、PHP が 8.2+ であることを確認します。 - 実際のエラーは
storage/logs/laravel.logを確認します。 .envでAPP_KEYが設定されていることを確認します — 空のキーは 500 エラーを引き起こします。
cPanel にターミナルがない
これは多くの共有プランで正常です。SSH Access (有効な場合) を使用するか、ステップ 5 の一時的な genkey.php 方法を使用するか、ローカル PC で鍵を生成してください。
QR スキャナーのカメラが開かない
SSL/TLS Status → AutoSSL で SSL を有効化し、https:// 経由でサイトにアクセスします。
設定
.env ファイル
| キー | 説明 | 例 |
|---|---|---|
APP_NAME | タイトルバーに表示されるアプリ名 | AssetHub |
APP_URL | インストールの公開 URL | https://assets.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 | SMTP ポート | 587 |
MAIL_USERNAME | SMTP ユーザー名 | your@email.com |
MAIL_PASSWORD | SMTP パスワードまたはアプリトークン | ********** |
MAIL_FROM_ADDRESS | デフォルトの From アドレス | noreply@example.com |
アプリ内設定
ほとんどの機密でないオプションは 管理者 → 設定 から構成できます:
- 一般:会社名/メール/電話、asset tag プレフィックス
- メール:SMTP を確認するためのテストメール送信
- 通知:保証アラートのしきい値、メンテナンスリマインダーウィンドウ
- ローカライゼーション: タイムゾーン(
Europe/Skopjeなど検索可能なリスト)、日付形式、通貨コード(MKD— マケドニア・デナール含む)、記号と記号位置 — 保存後アプリ全体に適用 - 一般 → Public Asset Page: QR の表示(公開 / ログイン / 無効)および URL 変更後の全 QR コード再生成
- ローカライゼーション タブから Administration → Translations へのリンク(完全な Translation Editor、管理者のみ)
- Branding:アプリ名とロゴ — ログインロゴ、フッター、バッジ、ブラウザのページタイトルを更新(v4.0+)。ログインサブタイトル:Administration → Translations で
auth.login_subtitleを編集 - Appearance(v4.0+):ライト/ダークモードのブランド・ステータス・テキスト色をカスタマイズ — FAQ のリブランドガイドを参照
多言語サポート
AssetHub には RTL 対応の Arabic と Hindi を含む 11 言語が標準搭載されています。ユーザーは右上の旗ドロップダウンで言語を切り替えます。
搭載言語
| コード | 言語 | 方向 |
|---|---|---|
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} に POST し、PHP サーバーが動いているときだけ機能します。常に本番ドメイン(本番)または http://localhost:8000(php artisan serve で開発)からアクセスしてください。一方、このようなドキュメントファイルは完全にスタンドアロンで直接開くことができます。
カスタム言語の追加(管理者)
Administration → Translations に移動(manage translations 権限を持つ管理者):
- "Add Locale" をクリック — コード(例: マケドニア語
mk)、表示名、ネイティブ名、旗 SVG ファイル名、方向(LTR/RTL)、翻訳をコピーするベース locale を指定します。 - 新しい locale が言語切り替えと 設定 → ローカライゼーション のデフォルト言語リストに表示されます。
- DB に保存された翻訳は
lang/{code}/のファイル翻訳を自動的に上書きします。
Translation Editor
エディターはファイル(assets、nav、settings など)ごとにすべての翻訳キーを一覧表示します。キーにはファイルのベースラインと DB オーバーライドが表示されます。
- locale、翻訳グループ、または検索テキストでフィルタ。
- 値をクリックしてインライン編集。変更は即座にデータベースに保存されます。
- キーをリセットしてファイルのベースラインに戻す。
- 組み込み locale(en、vi、es など)は編集可能。カスタム locale は完全に DB 駆動。
- manage translations 権限を持つユーザーのみがこのページにアクセスできます。
CSV import / export
- Export — locale のすべてのキーを CSV(
group,key,value)としてダウンロード。 - Import — 同じ列の CSV をアップロード。既存の DB オーバーライドは更新され、新しいキーは挿入されます。
ユーザーごとのデフォルトロケール
各ユーザーには locale 列があります。Laravel の HasLocalePreference 契約のおかげで、メール通知は受信者の希望言語で自動送信されます。
サイトのデフォルト言語は 設定 → ローカライゼーション → デフォルト言語 で設定します。個々のユーザーはヘッダーの言語切り替えで上書きできます。
機能一覧
資産管理
- 自動生成 asset tag
- 資産ごとに複数の画像
- QR コード生成
- ステータスと状態の追跡
- 一括インポート/エクスポート
- 資産の複製
- バッチ / ロット数量追跡 (v2)
ワークフロー
- 割り当て / 返却 / 移転
- 承認ベースのリクエスト
- Check-in / Check-out 予約
- 競合検出
メンテナンス
- 予防/是正のスケジュール
- カレンダー表示
- 次回を自動スケジュール
- コスト追跡
- メールリマインダー
ドキュメント
- 請求書、マニュアルを添付
- インラインプレビュー
- 期限切れアラート
- 複数のドキュメントタイプ
減価償却
- 3 つの計算方法
- 値の自動更新
- スケジュールチャート
- 年次サマリー
レポート
- 12 種類のレポート
- Excel + PDF エクスポート
- チャートとダッシュボード
- 日付フィルタ
運用機能 (v2)
- ライブ照合付きバッチ / ロット資産
- 従業員、部門、倉庫への割り当て
- 職務分離承認による Disposals
- 公開 QR 引き渡しページ /a/{tag}
ローカライゼーション & 翻訳 (v3)
- 11 の組み込み UI 言語 + カスタム locale
- Translation Editor: 検索、グループフィルタ、インライン編集
- 一括翻訳更新用の CSV インポート/エクスポート
- タイムゾーンと通貨設定をアプリ全体に適用
ブランディングと外観 (v4)
- ブラウザのタブタイトルは 設定 → ブランディング → アプリ名 から更新
- 設定 → 外観 でアプリの色をカスタマイズ(ライト & ダークモード)
ユーザーと役割
AssetHub には 5 つの事前構成済み役割が付属しています:
| 役割 | 権限 |
|---|---|
| Admin | システム完全アクセス — ユーザー、部門、設定、監査ログ、Webhook、翻訳 |
| IT マネージャー | 資産(単品 + バッチ/ロット)、カテゴリ、メンテナンス、リクエストの管理。移転の承認。レポートと減価償却の閲覧 |
| 会計担当 | 資産と減価償却の管理、在庫監査の実施、移転と Disposals の承認、レポートへの完全アクセス(財務重視) |
| スーパーバイザー | 部門リクエストを承認、チェックアウトを管理、在庫監査に参加、レポートを表示 |
| 従業員 | 割り当てられた資産を表示、リクエストを作成、自身のチェックアウトを管理 |
権限は Spatie 役割として保存されます — 管理者はデータベース経由で権限ごとに微調整できます。
資産管理
資産の作成
- 資産 → 新規資産 に移動します。
- 名前、カテゴリ、ブランド、モデル、シリアル番号を入力します。
- 購入日と価格を追加します (減価償却に必要)。
- 画像をアップロードします (複数ファイル対応、各 5 MB まで)。
- 保存 — 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、1 行あたり 2 ラベル、asset tag、名前、ブランド、シリアルを含む。
スキャン
資産ページで QR スキャン をクリックします。カメラ権限を許可します。スキャナーは html5-qrcode を使用し、あらゆる最新ブラウザで動作します。注意:カメラアクセスには HTTPS または localhost が必要です。
公開 QR 引き渡しページ (v2)
各資産には /a/{asset_tag} の印刷可能な公開 URL もあります — ログインなしで物理的な引き渡しに便利です。
- 設定 → 一般 → Public Asset Page で設定: Public、Login required、または Disabled。
- ページには写真、主要フィールド、(バッチの場合)数量内訳が表示されます。引き渡しシートとして印刷できます。
APP_URLを変更した後、同じ設定パネルで Regenerate all QR codes をクリックしてください。
ワークフロー
資産の割り当て
- 資産詳細ページを開きます。
- 割り当て をクリック (資産が利用可能な場合に表示)。
- ユーザー、任意の返却日、メモを選択します。
- 送信 — トランザクションが作成され、メール通知が送信されます。
資産リクエスト
従業員は必要な資産のリクエストを送信できます。リクエストには 4 つのステータスがあります:pending → approved → fulfilled、または rejected。承認メールは自動的に送信されます。
Check-in / Check-out
共有資産 (カメラ、プロジェクター、車両) 向け。予約には日付範囲があり、システムが重複するチェックアウトを防ぎます。カレンダー表示ですべての予約を一目で確認できます。
Disposals — 正式な償却 (v2)
摩耗または破損した品目は、文書化されたバッチで職務分離(提案者 ≠ 承認者)により償却されます。manage disposals と approve disposals 権限が必要です。
- サイドバー → Disposals → New Disposal。タイトルと期間(Q1–Q4、年次、または随時)を設定。
- ドラフトを開く → Add items — 対象となる破損バッチ単位または Poor 状態の単品資産。
- Submit for approval をクリック — バッチがロックされます。
- 別の承認者が Approve & execute をクリック — 資産/単位が disposed としてマークされます。
- コンプライアンス記録用に disposal minutes (PDF) を印刷。
減価償却
AssetHub は次の 3 つの方法のいずれかを使用して資産の減価償却を計算します:
| 方法 | 公式 | 使用例 |
|---|---|---|
| 定額法 | (Cost - Salvage) / Useful Life | 最も一般的;年次均等償却 |
| 定率法 | 2 / Useful Life × Book Value | 加速;税務目的 |
| 生産高比例法 | 使用量ベース | 製造機器 |
デフォルトは資産のカテゴリから継承されます。スケジュールエントリは毎月生成されます。資産の current_value は毎月 1 日に自動的に更新されます。
カスタムフィールド
管理者 → カスタムフィールドで、資産に無制限のカスタム属性を追加できます:
- タイプ:テキスト、数値、日付、選択 (ドロップダウン)、テキストエリア、ファイル、チェックボックス
- 範囲:すべてのカテゴリまたは特定のカテゴリに適用
- 並べ替え:グリップハンドルをドラッグ&ドロップ
- 必須フィールドは資産保存時に検証されます
レポート
レポートメニューからアクセスできる 12 の組み込みレポート:
- 資産サマリー — ステータス、状態、カテゴリ、部門別の合計
- 減価償却 — カテゴリ別の価値減少、最も減価償却された資産
- トランザクション — 時系列での割り当て、返却、移転活動
- メンテナンスコスト — 月、カテゴリ、タイプ別の支出
- 保証期限 — 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 が設定されている場合、リクエストには Payload body の HMAC-SHA256 を含むヘッダー X-AssetHub-Signature が含まれます。あなたの側で検証します:
$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-AssetHub-Signature'))) {
// 有効
}
再試行ポリシー
失敗した配信は 200 ms 遅延で 3 回再試行されます。連続 10 回失敗すると、webhook は自動的に無効化されます。
スケジュールタスク
AssetHub はバックグラウンドジョブに Laravel のスケジューラを使用します。必要なのは 1 つ の cron エントリだけ — Laravel が内部で各 job を適切な時刻にディスパッチします。
共有ホスティング (cPanel / Hostinger Cron Jobs UI)
スクリーンショット付きの手順は cPanel セットアップ → ステップ 7 または Hostinger セットアップ → ステップ 5 をご覧ください。要約: Advanced → Cron Jobs、コマンド:
/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
スケジュール:毎分 (5 つのフィールドすべてに *)。
cPanel cron コマンド
CPANELUSER をお使いの cPanel ユーザー名に置き換えてください:
/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
VPS / 専用サーバー (crontab)
Web ユーザー (多くは www-data) として crontab -e を実行し、次を追加します:
* * * * * cd /path/to/AssetHub && php artisan schedule:run >> /dev/null 2>&1
フォールバック:外部 URL ピンガー
ホストに cron がまったくない場合、アプリ内の Cron URL (設定 → システムタブ) と cron-job.org (無料、15 分ごと) を使用します。
自動的に実行される job
| 時刻 | コマンド | 目的 |
|---|---|---|
| 毎日 08:00 | send-overdue-checkout-alerts | 超過チェックアウトのメールリマインダー |
| 毎日 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.
トラブルシューティング
storage 上の "Permission denied"
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 を許可していることを確認してください。
cPanel でのデータベース "Access denied" (1045)
ユーザー名/パスワードの誤り、ユーザーからデータベースへの割り当て不足、またはパスワードの特殊文字が .env の解析を壊しています。cPanel セットアップ → よくある問題 をご覧ください。
マイグレーションエラー 1067 (Invalid default value)
共有ホスティングの MySQL 厳格モードが複数の NOT NULL timestamp 列を拒否します。v2.1.0+ で修正済み。パッケージを更新するか、checkouts マイグレーションで checkout_date / expected_return_date を dateTime に変更してください。
APP_KEY が見つからない / インストール前の 500 エラー
Laravel はアプリが読み込まれる前に .env に APP_KEY が必要です。cPanel にターミナルがない場合は、SSH、genkey.php、またはローカル生成方法については cPanel セットアップ → ステップ 5 をご覧ください。
インストールのリセット
storage/installed.lock を削除し、再度 /install にアクセスします。マイグレーションを再実行すると、既存のデータが消去されます。
パフォーマンス — 資産リストが遅い
php artisan optimize を実行して config、route、view をキャッシュします。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 へのアップグレード
CodeCanyon から v3 ZIP をダウンロードし、アプリケーションファイルを置き換え(.env と storage/ のアップロードは保持)、php artisan migrate を実行してください。カスタム locale と翻訳オーバーライド用の新しいテーブルが自動追加されます。既存の設定と資産は保持されます。
v2.x → v3.0 — Full upgrade guide
v1.x から v2.0 へのアップグレード
CodeCanyon から v2 ZIP をダウンロードし、アプリケーションファイルを置き換え(.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
- ログインブランディング:フッターとバッジは Settings → Branding → App Name に連動(コード編集不要)
v3.0.0 — ローカライゼーション & Translation Editor (2026-06)
- Administration → Translations の Translation Editor UI(Add Locale、インライン編集、グループ別検索/フィルタ)
- カスタム locale を DB に保存 — コード、表示名、ネイティブ名、旗 SVG、方向、ベース locale
- 一括翻訳更新用の CSV インポート/エクスポート
- タイムゾーンと通貨設定がアプリ全体に適用(config/localization.php に Europe/Skopje、MKD を含む)
- 設定 → ローカライゼーション: 検索可能なタイムゾーン/通貨ドロップダウン、カスタム値対応
- Hindi (hi) を 11 番目の組み込み locale として追加。Vue ページ全体で date_format を尊重
- 権限制御の manage translations。DB オーバーライドは 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)
- QR コード自動生成付き資産 CRUD
- 詳細な権限を持つ 5 つのユーザー役割 (Admin、IT マネージャー、会計担当、スーパーバイザー、従業員)
- 資産ソース追跡 (集中調達、分散調達、投資プロジェクト、寄付、内部移転)
- メール通知付きの割り当て、返却ワークフロー
- 権限ゲーティング付きの移転承認ワークフロー (pending → approved/rejected)
- 資産リクエスト承認フロー
- カレンダー表示付き Check-in/check-out
- 自動更新付きのメンテナンススケジュール
- 期限切れアラート付きのドキュメント添付
- 3 つの計算方法 + 耐用年数終了アラート付き減価償却
- 在庫監査モジュール — 不一致追跡付き定期棚卸し
- 7 種類の入力タイプとドラッグ&ドロップソート付きカスタムフィールド
- チャート、Excel および PDF エクスポート付き 8 つのレポート (ソース別資産、在庫監査サマリーを含む)
- diff ビューア付き Spatie Activitylog 経由の監査ログ
- HMAC 署名と自動再試行付き Webhook
- 多言語 UI:10 ロケール (en、vi、es、fr、de、zh、ja、pt-BR、ru、RTL 対応 ar)
- 会社、メール、通知、ローカライゼーション、翻訳の設定 UI
- Web ベースのインストールウィザード
- Emerald-Teal ブランドパレットのダークモード
クレジット
使用されているオープンソースライブラリ
- 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