Erste Schritte
Installieren Sie AssetHub auf cPanel, Hostinger oder Ihrem eigenen VPS in unter 10 Minuten.
Benutzer & Rollen
5 vorkonfigurierte Rollen mit Spatie-Berechtigungen, pro Benutzer feinabstimmbar.
Produktfunktionen
Assets, Workflows, Wartung, Abschreibung, Audit-Log und mehr.
Anpassung
Unbegrenzte benutzerdefinierte Felder, Branding, Sprachen und Themes ändern.
Hostinger-Einrichtung
Schritt-für-Schritt-Deployment auf dem günstigsten Single-Shared-Tarif.
cPanel-Einrichtung
Schritt-für-Schritt-Deployment auf Standard-cPanel-Shared-Hosting — kein Terminal erforderlich.
Sicherheit & QR
HTTPS, HMAC-signierte Webhooks, Audit-Log und QR-Scanner per Kamera.
Berichte & Export
8 integrierte Berichte mit Excel- und PDF-Export sowie Datumsfiltern.
E-Mail-Benachrichtigungen
Garantie-, Wartungs-, Dokumentablauf- und Überfällig-Checkout-Erinnerungen.
Häufig gestellte Fragen
Kann ich AssetHub auf dem günstigsten Hostinger Single-Tarif betreiben?
Ja — AssetHub ist vollständig kompatibel mit Hostinger Single (~$2,99/Monat). Single enthält PHP 8.3, MySQL, native Cron Jobs und kostenloses SSL — alles, was AssetHub benötigt. Kein SSH, kein Composer, keine Kommandozeile. Siehe Abschnitt Hostinger-Einrichtung für die Schritt-für-Schritt-Anleitung.
Brauche ich technische Kenntnisse für die Installation?
Nein. Der Web-Installer erledigt alles: Anforderungsprüfung, Datenbank-Setup, Migrationen und Erstellung des Admin-Kontos. Einfach Dateien hochladen, /install im Browser aufrufen und dem Assistenten folgen.
Wie funktionieren geplante E-Mails (Garantie-/Wartungs-Benachrichtigungen)?
AssetHub verwendet Laravels Scheduler. Sie konfigurieren nur einen Cron-Job, der jede Minute läuft, und Laravel verteilt intern jede Aufgabe zum richtigen Zeitpunkt (täglich 08:00, monatlich usw.). Für cPanel richten Sie es unter Advanced → Cron Jobs ein. Für Hostinger verwenden Sie hPanel → Advanced → Cron Jobs. Siehe cPanel-Einrichtung → Schritt 7 oder Hostinger-Einrichtung → Schritt 5. Falls Ihr Hoster kein Cron hat, verwenden Sie die In-App-Cron-URL mit dem kostenlosen Dienst cron-job.org.
Welche Abschreibungsmethoden werden unterstützt?
Drei Methoden: Linear (gleichmäßige jährliche Abschreibung), Degressiv (beschleunigt, häufig für Steuerzwecke) und Leistungsabschreibung (nutzungsbasiert, für Fertigungsausrüstung). Asset-Werte werden automatisch am 1. jedes Monats aktualisiert.
Funktioniert der QR-Scanner auf Handys?
Ja — es verwendet die Browser-Kamera über html5-qrcode und funktioniert in jedem modernen Handy-/Tablet-/Desktop-Browser. Die einzige Voraussetzung ist HTTPS. cPanel AutoSSL und Hostinger Let's Encrypt SSL funktionieren sofort.
Kann ich eigene Felder ohne Programmierung hinzufügen?
Ja. Admin → Benutzerdefinierte Felder erlaubt unbegrenzt Attribute (Text, Zahl, Datum, Auswahl, Textbereich, Datei, Checkbox), Eingrenzung auf bestimmte Kategorien, Pflichtmarkierung und Umsortierung per Drag-and-drop — alles über die UI.
Wie viele Sprachen unterstützt AssetHub?
11 Locales out of the box: Englisch, Vietnamesisch, Spanisch, Französisch, Deutsch, Chinesisch, Japanisch, Portugiesisch (BR), Russisch, Arabisch (mit voller RTL-Unterstützung) und Hindi (हिन्दी). Admins verwalten Übersetzungen unter Administration → Translations (erfordert die Berechtigung manage translations).
Kann ich AssetHub auf cPanel-Shared-Hosting installieren?
Ja — AssetHub läuft auf jedem Standard-cPanel-Shared-Hosting-Tarif mit PHP 8.2+, MySQL und Cron Jobs. Kein Composer oder Node.js auf dem Server erforderlich — das Paket wird vorkompiliert geliefert. Viele cPanel-Hoster bieten kein Web-Terminal; das ist kein Problem. Siehe den Abschnitt cPanel-Einrichtung für die vollständige Schritt-für-Schritt-Anleitung (einschließlich der Generierung von APP_KEY ohne Terminal).
Wie rebrande ich AssetHub (Login-Seite, Seitentitel & Farben)?
AssetHub kann vollständig über das Admin-Panel rebrandet werden — ohne Codeänderungen oder npm run build. Seit v3.1.0 folgen Login-Logo, Footer und Badge Settings → Branding → App Name. v4.0 ergänzt den Browser-Seitentitel zur Laufzeit und den Tab Appearance für app-weite Farben in Hell- und Dunkelmodus.
auth.login_subtitle pro Sprache bearbeiten → Farben unter Settings → Appearance anpassen.
Kurzreferenz:
| Element | Beispiel | Ändern über |
|---|---|---|
| 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.
Übersicht
AssetHub ist ein vollständiges Asset-Management-System auf Basis von Laravel 11, Vue 3 und Tailwind CSS. Version 3.0 ergänzt einen vollständigen Translation Editor, benutzerdefinierte Locales, CSV-Import/-Export und wirksame Zeitzone-/Währungslokalisierung — zusätzlich zu v2 Batch-/Lot-Tracking, Zuweisungen, Disposals und öffentlichen QR-Übergabeseiten.
QR-Code-Verfolgung
Automatische QR-Code-Generierung für jedes Asset. Mit jeder Browser-Kamera scannen.
Abschreibung
3 Methoden: linear, degressiv, leistungsbasiert.
Benutzerdefinierte Felder
Unbegrenzte Attribute hinzufügen — Text, Datum, Auswahl, Datei, Checkbox.
HTTP-Hooks
15 Event-Typen mit HMAC-Signierung und Auto-Retry.
Audit-Log
Jede Änderung protokolliert mit vollständigem Diff-Viewer.
Berichte
12 Berichte mit Diagrammen, Excel- und PDF-Export.
Server-Anforderungen
- PHP 8.2 oder höher
- MySQL 5.7+ oder MariaDB 10.3+
- Composer 2.x
- Node.js 18+ und npm 9+
- Webserver: Apache oder Nginx
Erforderliche PHP-Erweiterungen
- OpenSSL, PDO, PDO_MySQL, Mbstring, Tokenizer, XML, Ctype, JSON, GD, Fileinfo
Speicherplatz
Mindestens ~ 200 MB. Zusätzlicher Platz für Asset-Fotos und Dokumentanhänge einplanen.
Einrichtung
Option A — Web-Installer (Empfohlen)
- Projektdateien auf den Webserver hochladen.
- Document Root der Domain auf
public/verweisen. - Berechtigungen setzen:
storage/undbootstrap/cache/müssen schreibbar sein (chmod 775). - Kopieren Sie
.env.examplenach.envund setzen SieAPP_KEY(führen Siephp artisan key:generateaus, wenn Sie SSH/Terminal haben, oder siehe cPanel-Einrichtung → Schritt 5 für Dateimanager-Alternativen). https://yourdomain.com/installim Browser aufrufen.- Dem Assistenten folgen — Requirements → Database → Migrate → Admin Account → Done.
Option B — CLI-Installation
# 1. Abhängigkeiten installieren
composer install --no-dev --optimize-autoloader
npm install
npm run build
# 2. Umgebung konfigurieren
cp .env.example .env
php artisan key:generate
# 3. .env bearbeiten für DB-Zugangsdaten
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
# 4. Datenbanktabellen und Seed-Daten erstellen
php artisan migrate --seed
# 5. Storage-Symlink für Uploads erstellen
php artisan storage:link
# 6. Config für Produktion cachen
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 7. Als installiert markieren
echo "Installed" > storage/installed.lock
public/ verweisen. Bei Apache handhabt die mitgelieferte .htaccess das URL-Rewriting. Bei Nginx siehe Laravel-Deployment-Anleitung.
Assistent Schritt 2 — Datenbankkonfiguration
Wenn der Assistent Schritt 2 erreicht, müssen Sie die MySQL-Verbindungsdaten der in Ihrem Hosting-Panel erstellten Datenbank eingeben. Die Datenbank muss bereits existieren (sie kann leer sein — der nächste Assistentenschritt erstellt die Tabellen).
| Feld | Standard / Beispiel | Hinweise |
|---|---|---|
| Host | 127.0.0.1 | Funktioniert bei 99 % der Shared Hosts (Hostinger, cPanel, Plesk). Standard beibehalten, es sei denn, Ihr Hosting liefert einen benutzerdefinierten MySQL-Hostnamen (Managed DB wie AWS RDS, DigitalOcean Managed Database). |
| Port | 3306 | Standard-MySQL-Port. Nur ändern, wenn Ihr Anbieter einen abweichenden Port nutzt (selten). |
| Datenbankname | uXXXXXX_assethub | Der vollständige Name in Ihrem Hosting-Panel. Die meisten Shared Hosts prefixen ihn mit Ihrer Benutzer-ID (z. B. Hostinger: u287094729_assethub). |
| Benutzername | uXXXXXX_assethub | MySQL-Benutzer mit Berechtigungen auf der obigen Datenbank. Verwenden Sie nicht root — Shared Hosts erlauben das nicht. |
| Passwort | (Ihr DB-Passwort) | Das Passwort, das Sie beim Erstellen des MySQL-Benutzers gesetzt oder kopiert haben. Die meisten Hosts zeigen es nur einmal bei der Erstellung — "View / Reset" verwenden, wenn nicht gespeichert. |
Wo Sie diese Zugangsdaten je nach Hosting-Panel finden
- Hostinger: hPanel → Databases → Management → auf Ihre Datenbank klicken. Die Seite zeigt Name, Benutzername und einen "Show password"-Button.
- cPanel: cPanel → MySQL Databases. Die Datenbankliste zeigt Namen; Benutzer sind darunter aufgeführt. Bei Bedarf "Change Password" verwenden.
- Plesk: Plesk → Databases → auf den Datenbanknamen klicken. Die Detailseite zeigt Zugangsdaten und bietet Passwort-Reset.
- DirectAdmin: DirectAdmin → MySQL Management → auf die Datenbank klicken. Zugangsdaten und Passwort-Reset befinden sich auf der Detailseite.
- Externe / verwaltete DB: AWS RDS, DigitalOcean Managed Database usw. Verwenden Sie den benutzerdefinierten Hostnamen, Port (oft
3306, aber prüfen), DB-Name, Benutzer und Passwort aus Ihrer Cloud-Konsole. Stellen Sie sicher, dass die Server-IP in der DB-Firewall freigeschaltet ist.
Häufige Fehler und Behebung
| Fehlermeldung | Ursache und Lösung |
|---|---|
SQLSTATE[HY000] [1045] Access denied | Falscher Benutzername oder falsches Passwort, oder der Benutzer hat keinen Zugriff auf diese Datenbank. Schreibweise prüfen (einschließlich Benutzerpräfix auf Shared Hosting). Passwort im Hosting-Panel zurücksetzen, wenn unsicher. |
SQLSTATE[HY000] [1049] Unknown database | Der Datenbankname ist falsch, oder Sie haben die Datenbank im Hosting-Panel noch nicht erstellt. Zuerst erstellen, dann den exakten Namen erneut eingeben (einschließlich Präfix). |
SQLSTATE[HY000] [2002] Connection refused | Der MySQL-Server ist nicht erreichbar. Host und Port prüfen. Auf Shared Hosting localhost statt 127.0.0.1 versuchen oder umgekehrt. Bei Managed DBs sicherstellen, dass die Server-IP freigeschaltet ist. |
SQLSTATE[42S02] Base table not found: sessions | Tritt auf, wenn SESSION_DRIVER=database oder CACHE_STORE=database in .env gesetzt ist, bevor die Tabellen existieren. .env bearbeiten und beides auf file setzen, speichern, dann den Assistenten neu laden. Nach der Installation können Sie wieder auf database wechseln. |
could not find driver | Die PHP-Erweiterung pdo_mysql fehlt oder ist deaktiviert. Aktivieren Sie sie im Hosting-Panel (PHP-Konfiguration → Erweiterungen). Bei cPanel: MultiPHP INI Editor → Erweiterungen oder Select PHP Version → Erweiterungen. Bei Hostinger: hPanel → Advanced → PHP Configuration → Reiter PHP Extensions. |
127.0.0.1 und 3306) — auf Shared Hosting unverändert lassen. Sie müssen nur Datenbankname, Benutzername und Passwort eingeben. Klicken Sie auf Test & Save →, um die Verbindung zu prüfen und zu Schritt 3 zu wechseln.
Localhost (Lokale Entwicklung)
Schnellanleitung, um AssetHub zu Test- oder Entwicklungszwecken auf Ihrem Rechner laufen zu lassen, bevor Sie in die Produktion deployen. Wählen Sie die zu Ihrem Betriebssystem passende Umgebung.
Option 1 — Laravel Herd (Empfohlen, macOS & Windows)
Laravel Herd ist die offizielle lokale Umgebung vom Laravel-Team — kostenlos, nativ, kein Docker. Enthält PHP 8.2/8.3/8.4, Nginx und (in Herd Pro) MySQL/Redis.
- Laden Sie Laravel Herd von herd.laravel.com herunter und installieren Sie es.
- Legen Sie den AssetHub-Projektordner in
~/Herd/(macOS) bzw.%USERPROFILE%\Herd\(Windows). Herd erstellt automatisch eine.test-Domain — z. B.http://assethub.test. - Öffnen Sie Herd → Sites und bestätigen Sie PHP-Version 8.2 oder 8.3. Rechtsklick auf die Site → Secure, um HTTPS zu aktivieren (für QR-Scanner nötig).
- Erstellen Sie eine MySQL-Datenbank. Mit Herd Pro nutzen Sie Services → MySQL → Open in TablePlus. Andernfalls installieren Sie MySQL Community oder verwenden SQLite (
DB_CONNECTION=sqlite,touch database/database.sqlite). - Kopieren Sie
.env.examplezu.env, tragen Sie die DB-Zugangsdaten ein und führen Siephp artisan key:generateim Projekt-Root aus. - Öffnen Sie
http://assethub.test/installim Browser und folgen Sie dem Installer-Assistenten.
Variante 2 — XAMPP (Windows, macOS, Linux)
XAMPP bündelt Apache, MySQL/MariaDB und PHP. Kostenlos und plattformübergreifend. Achten Sie auf eine Version mit PHP 8.2 oder neuer.
- XAMPP 8.2+ von apachefriends.org herunterladen und installieren.
- Kopieren Sie das AssetHub-Projekt in
C:\xampp\htdocs\AssetHub\(Windows) bzw./Applications/XAMPP/htdocs/AssetHub/(macOS). - Öffnen Sie das XAMPP Control Panel und starten Sie Apache und MySQL. Falls Ports belegt sind, verwenden Sie Config → service.conf, um Apache auf 8080 umzustellen.
- Gehen Sie zu
http://localhost/phpmyadmin→ Neu → erstellen Sie eine Datenbankassethubmit utf8mb4-Kollation. - Im Projektordner:
.env.examplezu.envkopieren,DB_DATABASE=assethubsetzen,DB_USERNAME=root,DB_PASSWORDleer lassen (XAMPP-Standard). Führen Siephp artisan key:generateaus. - Besuchen Sie
http://localhost/AssetHub/public/install, um den Installer-Assistenten zu starten.
/public/: Erstellen Sie einen virtuellen Host in C:\xampp\apache\conf\extra\httpd-vhosts.conf, der DocumentRoot auf den public/-Ordner des Projekts zeigt, und tragen Sie 127.0.0.1 assethub.local in Ihre hosts-Datei ein.
Variante 3 — Laragon (Windows)
Laragon ist ein portabler Windows-Stack für Laravel — automatische vhosts, schöne URLs, MySQL/MariaDB und integriertes HeidiSQL.
- Laragon Full von laragon.org herunterladen und installieren.
- In Laragon: Menü → PHP → Version — auf PHP 8.2 oder 8.3 umschalten.
- Kopieren Sie das AssetHub-Projekt in
C:\laragon\www\AssetHub\. - Start All klicken. Laragon erstellt automatisch den vhost:
http://assethub.test(zeigt auf denpublic/-Ordner). - HeidiSQL (integriert) öffnen → Datenbank
assethuberstellen. Standard-Zugangsdaten: Benutzerroot, Passwort leer. .envmit den DB-Zugangsdaten bearbeiten,php artisan key:generateausführen und dannhttp://assethub.test/installbesuchen.
Option 4 — Eingebauter PHP-Server (kein Webserver nötig)
Die einfachste Option: Laravel liefert artisan serve mit, das einen Entwicklungs-PHP-Server startet. Kein Apache oder Nginx erforderlich. Ideal für schnelle Tests.
# Abhängigkeiten installieren und konfigurieren
cd /path/to/AssetHub
composer install
cp .env.example .env
php artisan key:generate
# Migrationen ausführen und Initialdaten seedern
php artisan migrate --seed
# Entwicklungsserver starten
php artisan serve
# Dann besuchen: http://127.0.0.1:8000/install
Häufige Localhost-Stolperfallen
QR-Scanner öffnet die Kamera nicht über http://
Browser-Kamera-APIs erfordern HTTPS, mit einer Ausnahme: http://localhost und http://127.0.0.1 gelten als sichere Kontexte. Wenn Sie AssetHub über Ihre LAN-IP aufrufen (z. B. http://192.168.1.10), verweigert die Kamera. Nutzen Sie localhost für Entwicklung oder aktivieren Sie HTTPS via Herd / mkcert.
Permission denied auf storage (macOS / Linux)
Bei Schreibfehlern wenn die App loggt oder cacht, Berechtigungen korrigieren: chmod -R 775 storage bootstrap/cache. Auf Windows in der Regel nicht nötig.
Port bereits belegt
Wenn Port 8000 von einer anderen App belegt ist, einen anderen Port verwenden:
php artisan serve --port=8001
E-Mails lokal testen
Echtes SMTP ist auf den meisten Localhost-Setups nicht verfügbar. Zwei sichere Optionen: (1) MAIL_MAILER=log in .env setzen — E-Mails werden in storage/logs/laravel.log geschrieben statt versendet; oder (2) Mailtrap / MailHog verwenden, um ausgehende Mails in einer Fake-Inbox abzufangen.
MAIL_MAILER=log
# Alle E-Mails werden in storage/logs/laravel.log geschrieben
Frontend-Assets (Vite / Tailwind)
Das Vue/Tailwind-Frontend von AssetHub ist im Paket vorgebaut. Wenn Sie Vue-Komponenten oder die Tailwind-Konfig bearbeiten, brauchen Sie Node.js 18+:
npm install
npm run dev # Hot-Reload während der Entwicklung
npm run build # Production-Build (vor dem Deployment ausführen)
Deployment auf Hostinger Single (Shared Hosting)
Dies ist der empfohlene Weg für Nutzer ohne VPS oder technische Erfahrung. AssetHub ist vollständig kompatibel mit dem günstigsten Hostinger Single Web Hosting-Tarif (~$2,99/Monat). Kein SSH, kein Composer, keine Kommandozeile — Single enthält native Cron Jobs, PHP 8.3 und kostenloses SSL.
Schritt 1 — Hosting vorbereiten
- Bei Hostinger hPanel anmelden.
- Zu Hosting → Verwalten für Ihre Domain gehen.
- PHP-Version auf 8.2 oder 8.3 setzen über Erweitert → PHP-Konfiguration.
- Sicherstellen, dass diese PHP-Erweiterungen aktiviert sind (üblicherweise Standard):
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
Schritt 2 — MySQL-Datenbank erstellen
- In hPanel zu Datenbanken → MySQL Databases gehen.
- Auf Neue Datenbank erstellen klicken.
- Diese 3 Werte notieren:
Datenbankname— z.B.u123_AssetHubBenutzername— z.B.u123_adminPasswort— automatisch generiert, gut aufbewahren
Schritt 3 — Dateien hochladen
- In hPanel zu Dateien → File Manager gehen.
- Zu
public_html/navigieren (das ist die Root Ihrer Domain). - Eventuelle Standard-
index.htmloderdefault.phpin diesem Ordner löschen. - Dateien hochladen klicken und die gesamte
source.zipaus dem Paket hochladen.
Oder bei Bedarf den Inhalt von/source/direkt per FTP hochladen. - Bei ZIP-Upload Rechtsklick → Entpacken. Nach dem Entpacken müssen alle Dateien im Root von
public_html/liegen. - Sicherstellen, dass
public_html/enthält:app/,public/,vendor/,.htaccess,index.php(inpublic/),.env, etc.
.htaccess im Root von public_html/ existiert. Sie enthält die URL-Rewrite-Regeln. Falls File Manager versteckte Dateien ausblendet, auf Einstellungen → Versteckte Dateien anzeigen klicken.
Schritt 4 — Installer ausführen
- Browser öffnen und zu
https://yourdomain.com/installnavigieren. - Der AssetHub Installer erscheint.
- Schritt 1: Requirements — Alle Prüfungen sollten grün sein. Bei Fehlern Hostinger-Support kontaktieren, um fehlende PHP-Erweiterungen zu aktivieren.
- Schritt 2: Database — Zugangsdaten aus Schritt 2 oben eingeben:
- Host:
localhost - Port:
3306 - Datenbank:
u123_AssetHub - Benutzername:
u123_admin - Passwort: (das von Hostinger generierte)
- Host:
- Schritt 3: Migrate — "Run Migrations & Seed" klicken. Dauert ~10 Sekunden. Nicht refreshen.
- Schritt 4: Admin — Admin-Konto erstellen. Starkes Passwort verwenden.
- Fertig! — Sie sehen die Cron-URL (speichern!) und einen Login-Button.
Schritt 5 — Automatische E-Mail-Benachrichtigungen via Hostinger Cron einrichten
AssetHub nutzt den Laravel-Scheduler für Hintergrundaufgaben: Garantie-Benachrichtigungen, Wartungs-Erinnerungen, Dokumentablauf, Abschreibungs-Refresh und überfällige Checkouts. Richten Sie einen Cron-Job in hPanel ein, Laravel entscheidet, welche Aufgabe wann läuft.
- In hPanel zu Erweitert → Cron Jobs gehen.
- Auf Cron-Job erstellen klicken.
- Typ wählen: Custom (nicht "PHP" — wir brauchen ein Argument).
- Für den Befehl eingeben (
uXXXXXXdurch Ihren Hostinger-Benutzernamen ersetzen):
Tipp: File Manager öffnen, die Datei/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:runartisan(Projekt-Root) suchen, Rechtsklick → Eigenschaften, um den vollständigen Pfad zu kopieren. - Zeitplan auf Jede Minute setzen — alle fünf Felder (Minute, Stunde, Tag, Monat, Wochentag) auf
*. - Auf Speichern klicken.
Das war's — AssetHub versendet jetzt automatisch Erinnerungen für überfällige Checkouts, Wartungs-Benachrichtigungen, Dokumentablauf-Alerts, Garantie-Alerts und aktualisiert die Asset-Abschreibungswerte. Laravel plant intern jeden Job in der korrekten Häufigkeit (täglich 08:00, monatlich, etc.).
public_html/public/ gesetzt? Kein Problem — Ihr Laravel-Code liegt weiterhin im Root public_html/, der Cron-Pfad bleibt also /home/uXXXX/public_html/artisan (kein /public/ anhängen).
- Als Admin anmelden → Einstellungen → Tab System → Cron-URL kopieren.
- Kostenlos bei cron-job.org registrieren.
- Cronjob erstellen, URL einfügen, auf Alle 15 Minuten setzen, speichern.
Schritt 6 — E-Mail konfigurieren (SMTP)
Hostinger stellt mit jedem Tarif E-Mail-Konten zur Verfügung. Um sie für AssetHub-Benachrichtigungen zu nutzen:
- In hPanel zu E-Mails → E-Mail-Konten gehen und eines anlegen (z.B.
noreply@yourdomain.com). .env-Datei inpublic_html/über File Manager bearbeiten: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"- Datei speichern.
- Bei AssetHub anmelden → Einstellungen → Tab Email → Test-E-Mail senden. Wenn Sie sie erhalten, ist alles fertig.
Häufige Probleme auf Hostinger Single
"500 Internal Server Error" nach Upload
- Prüfen, ob
.htaccessim Root vonpublic_html/existiert und die Rewrite-Regeln enthält. - Prüfen, ob die PHP-Version in hPanel auf 8.2 oder 8.3 gesetzt ist.
storage/logs/laravel.logüber File Manager prüfen für die echte Fehlermeldung.
"Permission denied" bei Uploads
Hostinger setzt normalerweise korrekte Berechtigungen, falls nicht:
- Rechtsklick auf
storage/in File Manager → Berechtigungen → rekursiv auf755setzen. - Dasselbe für
bootstrap/cache/.
QR-Scanner öffnet die Kamera nicht
Browser-Kamera-APIs erfordern HTTPS. Hostinger bietet kostenloses SSL via Let's Encrypt — in hPanel unter SSL → Verwalten aktivieren.
Geplante E-Mails werden nicht versendet
- In hPanel → Cron Jobs → Spalte Last run bei Ihrem Cron-Eintrag prüfen. Wenn leer, läuft der Cron nicht — Artisan-Pfad prüfen.
- Befehl manuell testen: Terminal in hPanel öffnen (falls verfügbar) und Cron-Befehl ausführen. Bei Fehler zeigt die Meldung das Problem (falsche PHP-Version, falscher Pfad, etc.).
- Prüfen, ob SMTP korrekt konfiguriert ist (Einstellungen → Email → Test senden).
storage/logs/laravel.logauf Scheduler-Fehler prüfen.
Langsame Performance
Hostinger Single hat geteilte CPU/RAM. Bei mehr als 20 Nutzern erwägen:
- Upgrade auf Premium (~$3,99/Monat) — schnellere Server, mehr Ressourcen, mehrere Datenbanken.
- Oder Business (~$5,99/Monat) — dedizierte Ressourcen, tägliche Backups, Staging-Umgebung.
Deployment auf cPanel (Shared Hosting)
Diese Anleitung behandelt Standard-cPanel-Shared-Hosting (Namecheap, Bluehost, GoDaddy und die meisten günstigen Hoster). AssetHub wird mit vendor/ und vorkompilierten Frontend-Assets geliefert — kein Composer, npm oder Web-Terminal erforderlich. Falls Ihr cPanel kein Terminal hat, verwenden Sie SSH Access oder die unten aufgeführten Dateimanager-Alternativen.
/home/CPANELUSER/ — prüfen Sie die Seitenleiste in cPanel unter Allgemeine Informationen.
Schritt 1 — PHP-Version und Erweiterungen einrichten
- Melden Sie sich bei cPanel an.
- Öffnen Sie MultiPHP Manager (oder Select PHP Version) und setzen Sie Ihre Domain auf PHP 8.2 oder 8.3.
- Öffnen Sie MultiPHP INI Editor oder PHP Extensions und bestätigen Sie, dass diese Erweiterungen aktiviert sind:
- OpenSSL, PDO, PDO_MySQL, Mbstring, GD, Tokenizer, XML, Ctype, JSON, Fileinfo
- Fehlt eine Erweiterung, aktivieren Sie sie in der Erweiterungsliste oder kontaktieren Sie den Support Ihres Hosters.
Schritt 2 — SSL (HTTPS) aktivieren
- Gehen Sie zu SSL/TLS Status (oder Let's Encrypt SSL / AutoSSL).
- Führen Sie AutoSSL aus oder installieren Sie ein kostenloses Zertifikat für Ihre Domain.
- HTTPS ist Pflicht, damit der QR-Scanner im Browser auf die Kamera zugreifen kann.
https://ihredomain.de auf, um zu bestätigen, dass das Schloss-Symbol erscheint.
Schritt 3 — MySQL-Datenbank und Benutzer erstellen
- Öffnen Sie Manage My Databases (unter Datenbanken).
- Geben Sie unter Neue Datenbank erstellen einen Namen ein (z.B.
assethub) und klicken Sie auf Erstellen. cPanel fügt automatisch Ihr Konto-Präfix hinzu — der vollständige Name sieht aus wiecpaneluser_assethub. - Erstellen Sie unter MySQL-Benutzer einen Benutzer mit einem sicheren Passwort. Kopieren Sie den vollständigen Benutzernamen mit Präfix.
- Wählen Sie unter Benutzer zur Datenbank hinzufügen den Benutzer und die Datenbank aus, klicken Sie auf Hinzufügen und erteilen Sie dann ALLE RECHTE. Dieser Schritt wird leicht vergessen — ohne ihn erhalten Sie
Access denied (1045)-Fehler. - Notieren Sie diese drei Werte genau so, wie sie in cPanel angezeigt werden:
Datenbankname— z.B.u123_AssetHubBenutzername— z.B.u123_adminPasswort— automatisch generiert, gut aufbewahren
Schritt 4 — Dateien hochladen
- Öffnen Sie den Dateimanager und navigieren Sie zu
public_html/(Document Root Ihrer Domain). - Aktivieren Sie Einstellungen → Versteckte Dateien anzeigen, damit Sie
.htaccessund.envsehen können. - Löschen Sie alle vorhandenen Standard-
index.html-Dateien inpublic_html/. - Laden Sie das Paket
source.ziphoch und entpacken Sie es, oder laden Sie den Inhalt des Ordners/source/per FTP hoch. - Nach dem Entpacken muss
public_html/app/,public/,vendor/, die Root-.htaccessundartisanauf derselben Ebene enthalten.
.htaccess leitet alle Anfragen an den Ordner public/ weiter — Sie müssen den Document Root auf den meisten Hostern nicht manuell ändern.
Schritt 5 — .env vor dem Installeur vorbereiten
Führen Sie diesen Schritt vor dem Aufruf von /install aus. Laravel benötigt einen gültigen APP_KEY und korrekte Datenbankeinstellungen in .env.
- Kopieren Sie im Dateimanager
.env.examplenach.env(gleicher Ordner wieartisan). - Bearbeiten Sie
.envund konfigurieren Sie mindestens: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 - Setzen Sie
DB_CONNECTION=mysql— die Standard-.env.exampleverwendet SQLite; Shared Hosting erfordert MySQL. - Setzen Sie
SESSION_DRIVER=fileundCACHE_STORE=filevor der ersten Migration (verhindert "sessions-Tabelle nicht gefunden"-Fehler). - Umschließen Sie
DB_PASSWORDmit doppelten Anführungszeichen, wenn es Sonderzeichen enthält (#,$,!usw.).
APP_KEY generieren (ohne Terminal)
Viele cPanel-Tarife enthalten kein Web-Terminal. Verwenden Sie eine dieser Methoden:
- SSH Access (cPanel → Sicherheit → SSH Access): Verbinden Sie sich mit PuTTY oder PowerShell und führen Sie dann
cd ~/public_html && php artisan key:generateaus. - Dateimanager-Hilfsskript — erstellen Sie temporär
public/genkey.php, rufen Sie es im Browser auf, kopieren Sie das Ergebnis inAPP_KEY=und löschen Sie die Datei sofort danach.<?php echo 'base64:' . base64_encode(random_bytes(32)); - Auf Ihrem PC — wenn PHP lokal installiert ist, führen Sie
php -r "echo 'base64:'.base64_encode(random_bytes(32));"aus und fügen Sie das Ergebnis in.envein.
genkey.php, sobald Sie den Schlüssel kopiert haben. Lassen Sie niemals Hilfsskripte auf einem Produktionsserver liegen.
- Setzen Sie die Berechtigungen für
storage/undbootstrap/cache/auf 755 (rekursiv), wenn der Installeur Schreibfehler meldet.
Schritt 6 — Web-Installeur ausführen
- Öffnen Sie
https://ihredomain.de/installin Ihrem Browser. - Schritt 1: Anforderungen — alle Prüfungen müssen bestanden sein (grün). Beheben Sie fehlende PHP-Erweiterungen aus Schritt 1 oben.
- Schritt 2: Datenbank — geben Sie die exakten Präfixnamen aus Schritt 3 ein:
- Host:
127.0.0.1orlocalhost - Port:
3306 - Datenbank:
cpaneluser_assethub - Benutzer:
cpaneluser_admin - Passwort: (your MySQL password)
- Host:
- Schritt 3: Migration — klicken Sie auf "Run Migrations & Seed". Dauert ca. 10 Sekunden. Seite nicht neu laden.
- Deaktivieren Sie Include demo data für eine saubere Produktionsinstallation.
- Schritt 4: Admin — erstellen Sie Ihr Administratorkonto.
- Fertig! — speichern Sie die Cron-URL, die auf dem letzten Bildschirm angezeigt wird.
Schritt 7 — Cron Jobs für E-Mail-Benachrichtigungen einrichten
AssetHub benötigt einen jede Minute laufenden Cron-Job, damit Laravel Garantie-Benachrichtigungen, Wartungserinnerungen und andere geplante E-Mails versenden kann.
- Gehen Sie in cPanel zu Advanced → Cron Jobs.
- Setzen Sie unter Neuen Cron-Job hinzufügen den Zeitplan auf Jede Minute (
* * * * *). - Geben Sie den Befehl ein (ersetzen Sie
CPANELUSERdurch Ihren cPanel-Benutzernamen aus den Allgemeinen Informationen):
Tipp: Der PHP-Pfad kann/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run/usr/local/bin/phpoder/usr/bin/phpsein — fragen Sie Ihren Hoster, wenn Sie unsicher sind. Der Artisan-Pfad ist der Ort, an den Sie das Projekt hochgeladen haben (normalerweise/home/CPANELUSER/public_html/artisan). - Klicken Sie auf Neuen Cron-Job hinzufügen, um zu speichern.
public_html/public/ gesetzt? Der Cron zeigt weiterhin auf /home/CPANELUSER/public_html/artisan — fügen Sie kein /public/ hinzu.
- Als Admin anmelden → Einstellungen → System → Cron-URL kopieren.
- Registrieren Sie sich bei cron-job.org (kostenlos).
- Erstellen Sie einen Job, der diese URL alle 15 Minuten aufruft.
Schritt 8 — E-Mail (SMTP) konfigurieren
Erstellen Sie ein cPanel-E-Mail-Konto für ausgehende Benachrichtigungen:
- Gehen Sie zu E-Mail-Konten → erstellen Sie z.B.
noreply@ihredomain.de. - Bearbeiten Sie
.envim Dateimanager: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" - Speichern Sie, dann in AssetHub: Einstellungen → E-Mail → Test-E-Mail senden.
Häufige Probleme bei cPanel
"Access denied for user" (SQLSTATE 1045)
- Kopieren Sie den Datenbank- und Benutzernamen exakt aus cPanel — einschließlich des Konto-Präfixes.
- Bestätigen Sie, dass Sie Benutzer zur Datenbank hinzufügen mit ALLEN RECHTEN abgeschlossen haben.
- Setzen Sie das MySQL-Passwort in cPanel zurück und aktualisieren Sie
.env— verwenden Sie Anführungszeichen umDB_PASSWORD, wenn es Sonderzeichen enthält.
Migration schlägt fehl, nachdem der Datenbank-Schritt bestanden wurde
- Der Installeur prüft die Formulardaten, aber Migrate liest aus
.env. Stellen Sie sicher, dass beide übereinstimmen. - Löschen Sie
bootstrap/cache/config.php, falls vorhanden, und versuchen Sie es erneut. - Stellen Sie sicher, dass
DB_CONNECTION=mysqlin.envgesetzt ist (nicht sqlite).
"Invalid default value" während der Migration (1067)
In AssetHub v2.1.0+ behoben (Tabelle checkouts verwendet dateTime-Spalten). Bei einer älteren Version aktualisieren Sie die Migrationsdatei oder laden Sie das neueste Paket von CodeCanyon herunter.
"500 Internal Server Error" nach dem Hochladen
- Bestätigen Sie, dass die Root-
.htaccess-Datei vorhanden ist und PHP 8.2+ verwendet wird. - Prüfen Sie
storage/logs/laravel.logauf den eigentlichen Fehler. - Bestätigen Sie, dass
APP_KEYin.envgesetzt ist — ein leerer Schlüssel verursacht 500-Fehler.
Kein Terminal in cPanel
Das ist bei vielen Shared-Tarifen normal. Verwenden Sie SSH Access (falls aktiviert), die temporäre genkey.php-Methode aus Schritt 5 oder generieren Sie den Schlüssel auf Ihrem lokalen PC.
QR-Scanner-Kamera öffnet sich nicht
Aktivieren Sie SSL über SSL/TLS Status → AutoSSL und greifen Sie auf die Website über https:// zu.
Konfiguration
.env-Datei
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
APP_NAME | App-Name, der im Titel angezeigt wird | AssetHub |
APP_URL | Öffentliche URL Ihrer Installation | https://assets.example.com |
APP_DEBUG | Auf false setzen in Produktion | false |
DB_* | Datenbank-Verbindungsdetails | mysql, 127.0.0.1, 3306, ... |
MAIL_MAILER | Mail-Driver | smtp, log, mailgun |
MAIL_HOST | SMTP-Server-Hostname | smtp.gmail.com |
MAIL_PORT | SMTP-Port | 587 |
MAIL_USERNAME | SMTP-Benutzername | your@email.com |
MAIL_PASSWORD | SMTP-Passwort oder App-Token | ********** |
MAIL_FROM_ADDRESS | Standard-From-Adresse | noreply@example.com |
In-App-Einstellungen
Die meisten nicht sensiblen Optionen sind konfigurierbar über Admin → Einstellungen:
- Allgemein: Firmenname/-E-Mail/-Telefon, Asset-Tag-Präfix
- Email: Test-E-Mail senden, um SMTP zu prüfen
- Benachrichtigungen: Garantie-Schwellen, Wartungs-Erinnerungsfenster
- Lokalisierung: Zeitzone (durchsuchbare Liste inkl.
Europe/Skopje), Datumsformat, Währungscode (inkl.MKD— Mazedonischer Denar), Symbol und Symbolposition — nach dem Speichern app-weit angewendet - Allgemein → Öffentliche Asset-Seite: QR-Sichtbarkeit (öffentlich / Login / deaktiviert) und alle QR-Codes nach URL-Änderungen neu generieren
- Der Tab Lokalisierung verlinkt zu Administration → Translations für den vollständigen Translation Editor (nur Admin)
- Branding: App-Name und Logo — aktualisiert Login-Logo, Footer, Badge und Browser-Seitentitel (v4.0+). Login-Untertitel:
auth.login_subtitleunter Administration → Translations bearbeiten - Appearance (v4.0+): Marken-, Status- und Textfarben für Hell- und Dunkelmodus anpassen — siehe Rebrand-Anleitung in der FAQ
Mehrsprachen-Unterstützung
AssetHub wird mit 11 Sprachen out of the box geliefert, einschließlich RTL-Arabisch und Hindi. Benutzer wechseln die Sprache über das Flaggen-Dropdown oben rechts.
Mitgelieferte Sprachen
| Kürzel | Sprache | Richtung |
|---|---|---|
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 |
Sprache wechseln
- Klicken Sie auf das Flaggen-Symbol oben rechts, um das Dropdown zu öffnen.
- Wählen Sie Ihre Sprache aus der Liste.
- Die Seite wird neu geladen; alle UI-Beschriftungen, Daten und Währungsformate wechseln.
- Ihre Wahl wird sowohl in Ihrem Benutzerkonto als auch in einem Cookie (1 Jahr) gespeichert.
/locale/{code}, was nur funktioniert, wenn ein PHP-Server läuft. Greifen Sie immer über Ihre echte Domain (Produktion) oder http://localhost:8000 (Dev mit php artisan serve) zu. Dokumentationsdateien wie diese sind dagegen vollständig eigenständig und können direkt geöffnet werden.
Benutzerdefinierte Sprache hinzufügen (Admin)
Gehen Sie zu Administration → Translations (Admin-Benutzer mit der Berechtigung manage translations):
- "Add Locale" klicken — Code angeben (z. B.
mkfür Mazedonisch), Anzeigename, nativer Name, Flaggen-SVG-Dateiname, Richtung (LTR/RTL) und Basis-Locale zum Kopieren der Übersetzungen. - Die neue Locale erscheint im Sprachumschalter und in der Standard-Sprachenliste unter Einstellungen → Lokalisierung.
- In der DB gespeicherte Übersetzungen überschreiben automatisch Dateiübersetzungen in
lang/{code}/.
Translation Editor
Der Editor listet jeden Übersetzungsschlüssel nach Datei gruppiert (z. B. assets, nav, settings). Schlüssel zeigen die Datei-Baseline und DB-Overrides.
- Nach Locale, Übersetzungsgruppe oder Suchtext filtern.
- Auf einen Wert klicken, um inline zu bearbeiten; Änderungen werden sofort in der DB gespeichert.
- Schlüssel zurücksetzen, um zur Datei-Baseline zurückzukehren.
- Integrierte Locales (en, vi, es, …) können bearbeitet werden; benutzerdefinierte Locales sind vollständig DB-gesteuert.
- Nur Benutzer mit der Berechtigung manage translations können diese Seite aufrufen.
CSV import / export
- Export — alle Schlüssel einer Locale als CSV herunterladen (
group,key,value). - Import — CSV mit denselben Spalten hochladen; bestehende DB-Overrides werden aktualisiert, neue Schlüssel eingefügt.
Standard-Locale pro Benutzer
Jeder Benutzer hat eine locale-Spalte. E-Mail-Benachrichtigungen werden automatisch in der bevorzugten Sprache des Empfängers gesendet dank Laravels HasLocalePreference-Contract.
Die Standard-Sprache der Site wird unter Einstellungen → Lokalisierung → Standard-Sprache festgelegt. Einzelne Benutzer überschreiben dies über den Sprachumschalter in der Kopfzeile.
Funktionsliste
Asset-Management
- Automatisch generierte Asset-Tags
- Mehrere Bilder pro Asset
- QR-Code-Generierung
- Status- und Zustandsverfolgung
- Massenimport/-export
- Asset klonen
- Batch-/Lot-Mengenverfolgung (v2)
Arbeitsabläufe
- Zuweisen / Rückgabe / Transfer
- Genehmigungsbasierte Anfragen
- Check-in / Check-out-Buchung
- Konflikterkennung
Wartung
- Präventiv/korrektiv planen
- Kalenderansicht
- Nächste automatisch planen
- Kostenverfolgung
- E-Mail-Erinnerungen
Dokumente
- Rechnungen, Handbücher anhängen
- Inline-Vorschau
- Ablauf-Benachrichtigungen
- Mehrere Dokumenttypen
Abschreibung
- 3 Berechnungsmethoden
- Wert automatisch aktualisieren
- Zeitplan-Diagramm
- Jahresübersicht
Berichte
- 12 Berichtstypen
- Excel- + PDF-Export
- Diagramme und Dashboards
- Datumsfilter
Operativ (v2)
- Batch-/Lot-Assets mit Live-Abgleich
- Zuweisungen an Mitarbeiter, Abteilungen, Lager
- Disposals mit Genehmigung nach Funktionstrennung
- Öffentliche QR-Übergabeseite unter /a/{tag}
Lokalisierung & Übersetzungen (v3)
- 11 integrierte UI-Sprachen + benutzerdefinierte Locales
- Translation Editor mit Suche, Gruppenfilter, Inline-Bearbeitung
- CSV-Import/-Export für Massenaktualisierungen von Übersetzungen
- Zeitzone- und Währungseinstellungen app-weit angewendet
Branding & Erscheinungsbild (v4)
- Browser-Tab-Titel wird über Einstellungen → Branding → App-Name aktualisiert
- App-Farben in Einstellungen → Erscheinungsbild anpassen (Hell- & Dunkelmodus)
Benutzer & Rollen
AssetHub wird mit 5 vorkonfigurierten Rollen ausgeliefert:
| Rolle | Berechtigungen |
|---|---|
| Admin | Voller Systemzugriff — Benutzer, Abteilungen, Einstellungen, Audit-Log, Webhooks, Übersetzungen |
| IT-Manager | Assets verwalten (Einzel + Batch/Lot), Kategorien, Wartung, Anfragen; Transfers genehmigen; Berichte und Abschreibung ansehen |
| Buchhalter | Assets und Abschreibung verwalten, Inventuren durchführen, Transfers und Disposals genehmigen, voller Berichtszugriff (Finanzfokus) |
| Supervisor | Abteilungsanfragen genehmigen, Checkouts verwalten, an Inventuren teilnehmen, Berichte ansehen |
| Mitarbeiter | Zugewiesene Assets ansehen, Anfragen erstellen, eigene Checkouts verwalten |
Berechtigungen werden als Spatie-Rollen gespeichert — Administratoren können pro Berechtigung über die Datenbank feinabstimmen.
Asset-Management
Assets erstellen
- Zu Assets → Neues Asset navigieren.
- Name, Kategorie, Marke, Modell, Seriennummer eintragen.
- Kaufdatum und Preis hinzufügen (erforderlich für Abschreibung).
- Bilder hochladen (mehrere Dateien möglich, max. 5 MB pro Datei).
- Speichern — Asset-Tag und QR-Code werden automatisch generiert.
Asset-Tag-Format
Standard: {PREFIX}-{YEAR}-{NNNN}, z.B. AS-2026-0001. Konfigurierbar über Einstellungen → Allgemein → Asset-Tag-Präfix.
Massenimport
- Auf Importieren auf der Assets-Seite klicken.
- Excel-Vorlage herunterladen.
- Daten eintragen — Pflichtspalten:
name,category_name. - Datei hochladen.
Batch-/Lot-Assets (v2)
Für identische Artikel in größerer Menge (Stühle, Tastaturen, Uniformen) wählen Sie im Formular Neues Asset Tracking-Typ → Batch / Lot statt doppelte Datensätze anzulegen.
- Geben Sie Menge und Einheit ein (Stück, Set, Karton). Beim Speichern wird der Bestand dem Lagerpool zugeordnet.
- Öffnen Sie das Asset → Register Allocations → Allocate, um Einheiten einem Mitarbeiter oder einer Abteilung zuzuweisen.
- Verwenden Sie Return, Adjust (beschädigt/verloren/Reparatur) oder Dispositionsaktionen — die Live-Zusammenfassung muss mit der Gesamtmenge übereinstimmen.
- Batch-Assets unterstützen nur Stückpreise; Abschreibung ist optional und standardmäßig deaktiviert für schnellere Einrichtung.
php artisan migrate aus — kein Datenverlust.QR-Codes
Jedes Asset erhält bei der Erstellung automatisch einen QR-Code. Beim Scannen öffnet sich die öffentliche oder authentifizierte Asset-Seite (siehe unten). In-App-Scan springt direkt zum Asset-Detailbildschirm.
Etiketten drucken
- Einzeletikett: Auf das Drucker-Symbol in einer Asset-Zeile klicken.
- PDF-Format: A4, 2 Etiketten pro Reihe, enthält Asset-Tag, Name, Marke, Seriennummer.
Scannen
Auf QR scannen auf der Assets-Seite klicken. Kameraberechtigung erlauben. Der Scanner nutzt html5-qrcode und funktioniert auf jedem modernen Browser. Hinweis: Kamerazugriff erfordert HTTPS oder localhost.
Öffentliche QR-Übergabeseite (v2)
Jedes Asset hat auch eine druckbare öffentliche URL unter /a/{asset_tag} — nützlich für physische Übergabe ohne Anmeldung.
- Konfigurieren unter Einstellungen → Allgemein → Öffentliche Asset-Seite: Öffentlich, Login erforderlich oder Deaktiviert.
- Die Seite zeigt Foto, Schlüsselfelder und (bei Batches) Mengenaufschlüsselung. Benutzer können sie als Übergabeblatt drucken.
- Nach Änderung von
APP_URLauf Regenerate all QR codes im selben Einstellungsbereich klicken.
Arbeitsabläufe
Asset-Zuweisung
- Asset-Detailseite öffnen.
- Auf Zuweisen klicken (sichtbar, wenn Asset verfügbar).
- Benutzer wählen, optionales Rückgabedatum, Notizen.
- Senden — Transaktion wird erstellt und E-Mail-Benachrichtigung versendet.
Asset-Anfragen
Mitarbeiter können Anfragen für benötigte Assets einreichen. Anfragen haben 4 Status: pending → approved → fulfilled, oder rejected. Genehmigungs-E-Mails werden automatisch versendet.
Check-in / Check-out
Für geteilte Assets (Kameras, Beamer, Fahrzeuge). Buchungen haben Datumsbereiche; das System verhindert überlappende Checkouts. Die Kalenderansicht zeigt alle Buchungen auf einen Blick.
Disposals — Formelle Abschreibung (v2)
Abgenutzte oder beschädigte Artikel werden in dokumentierten Batches mit Funktionstrennung abgeschrieben (Antragsteller ≠ Genehmiger). Erfordert die Berechtigungen manage disposals und approve disposals.
- Sidebar → Disposals → New Disposal. Titel und Zeitraum festlegen (Q1–Q4, jährlich oder ad hoc).
- Entwurf öffnen → Add items — berechtigte beschädigte Batch-Einheiten oder Einzelassets im Zustand Poor.
- Submit for approval klicken — der Batch wird gesperrt.
- Ein anderer Genehmiger klickt Approve & execute — Assets/Einheiten werden als disposed markiert.
- Abschreibungsprotokoll (PDF) für Compliance-Unterlagen drucken.
Abschreibung
AssetHub berechnet die Asset-Abschreibung mit einer von drei Methoden:
| Methode | Formel | Anwendungsfall |
|---|---|---|
| Linear | (Cost - Salvage) / Useful Life | Am häufigsten; gleiche jährliche Abschreibung |
| Degressiv | 2 / Useful Life × Book Value | Beschleunigt; für Steuerzwecke |
| Leistungsabschreibung | Nutzungsbasiert | Fertigungsausrüstung |
Standardwerte werden von der Asset-Kategorie geerbt. Zeitplan-Einträge werden monatlich generiert. Der current_value des Assets wird automatisch am 1. jedes Monats aktualisiert.
Benutzerdefinierte Felder
Admin → Benutzerdefinierte Felder erlaubt unbegrenzte benutzerdefinierte Attribute für Assets:
- Typen: Text, Zahl, Datum, Auswahl (Dropdown), Textbereich, Datei, Checkbox
- Geltungsbereich: für alle Kategorien oder eine bestimmte Kategorie
- Umsortieren: per Drag-and-drop am Griff
- Pflichtfelder werden beim Speichern validiert
Berichte
Zwölf integrierte Berichte, erreichbar über das Menü Berichte:
- Asset-Übersicht — Summen nach Status, Zustand, Kategorie, Abteilung
- Abschreibung — Wertverlust pro Kategorie, am stärksten abgeschriebene Assets
- Transaktionen — Zuweisung, Rückgabe, Transfer-Aktivität im Zeitverlauf
- Wartungskosten — Ausgaben nach Monat, Kategorie, Typ
- Garantieablauf — Assets, die in 30/60/180 Tagen Aufmerksamkeit benötigen
- Abteilungs-Assets — Asset-Verteilung und Budgetnutzung nach Abteilung
- Assets nach Quelle — Verteilung auf Beschaffung, Projekt, Spende, Transfer
- Inventurzusammenfassung — Abweichungen in periodischen Inventurzyklen
- Mitarbeiter-Zuweisungen (v2) — wer was hält, einschließlich Batch-Zuweisungen
- Abteilung / Standort (v2) — Assets und Mengen nach Abteilung oder Standort
- Bestandsabgleich (v2) — Bestand vs. zugewiesen vs. beschädigt/verloren/entsorgt
- Beschädigte Assets (v2) — Artikel für Reparatur oder Abschreibung markiert
Alle Berichte unterstützen Excel- und PDF-Export über Schaltflächen in der Seitenkopfzeile. v2-Berichte sind mengenbewusst (Asset-Anzahl + Gesamteinheiten).
HTTP-Hooks
AssetHub kann externe Dienste bei wichtigen Ereignissen benachrichtigen.
Verfügbare Ereignisse
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-Format
{
"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
}
}
Signaturverifizierung
Wenn ein Secret konfiguriert ist, enthalten Requests den Header X-AssetHub-Signature mit HMAC-SHA256 des Body. Auf Ihrer Seite verifizieren:
$expected = hash_hmac('sha256', $rawBody, $secret);
if (hash_equals($expected, $request->header('X-AssetHub-Signature'))) {
// gültig
}
Retry-Richtlinie
Fehlgeschlagene Lieferungen werden 3-mal mit 200 ms Verzögerung wiederholt. Nach 10 aufeinanderfolgenden Fehlschlägen wird der Webhook automatisch deaktiviert.
Geplante Aufgaben
AssetHub nutzt den Laravel-Scheduler für Hintergrund-Jobs. Sie brauchen nur einen Cron-Eintrag — Laravel verteilt intern jeden Job zur richtigen Zeit.
Shared Hosting (cPanel / Hostinger Cron-Jobs-Oberfläche)
Siehe Abschnitt cPanel-Einrichtung → Schritt 7 oder Hostinger-Einrichtung → Schritt 5 für Anleitungen mit Screenshots. Kurzfassung: Advanced → Cron Jobs, Befehl:
/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
Zeitplan: jede Minute (* in allen fünf Feldern).
cPanel-Cron-Befehl
Ersetzen Sie CPANELUSER durch Ihren cPanel-Benutzernamen:
/usr/local/bin/php /home/CPANELUSER/public_html/artisan schedule:run
VPS / Dedicated Server (crontab)
crontab -e als Web-Benutzer (oft www-data) ausführen und hinzufügen:
* * * * * cd /path/to/AssetHub && php artisan schedule:run >> /dev/null 2>&1
Fallback: Externer URL-Pinger
Falls Ihr Host gar keinen Cron hat, nutzen Sie die in-app Cron-URL (Einstellungen → Tab System) mit cron-job.org (kostenlos, alle 15 Min).
Jobs, die automatisch laufen
| Zeit | Befehl | Zweck |
|---|---|---|
| Täglich 08:00 | send-overdue-checkout-alerts | E-Mail-Erinnerungen für überfällige Checkouts |
| Täglich 08:30 | send-maintenance-reminders | Erinnerungen für anstehende Wartungen |
| Täglich 09:00 | send-document-expiry-alerts | Dokumente, die in 30/14/7/1 Tagen ablaufen |
| Täglich 09:30 | send-warranty-alerts | Garantie- und Versicherungs-Ablaufbenachrichtigungen |
| Täglich 10:00 | assethub:send-depreciation-end-alerts | Benachrichtigungen, wenn Assets das Ende der Nutzungsdauer erreichen |
| Täglich 10:30 | send-inventory-audit-reminders | Erinnerungen für aktive Inventuren |
| Monatlich am 1., 02:00 | update-asset-values | current_value des Assets aus der Abschreibung aktualisieren |
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.
Fehlerbehebung
"Permission denied" auf storage
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
QR-Scanner öffnet die Kamera nicht
Browser-Kamera-APIs erfordern HTTPS. Entweder ein SSL-Zertifikat installieren oder localhost zum Testen verwenden.
E-Mails kommen nicht an
storage/logs/laravel.log auf Fehler prüfen. Einstellungen → Email → Test-E-Mail senden verwenden, um SMTP-Zugangsdaten zu prüfen. Sicherstellen, dass der SMTP-Server die sendende IP erlaubt.
Datenbank "Access denied" (1045) bei cPanel
Falscher Benutzername/Passwort, fehlende Benutzerzuweisung zur Datenbank oder Sonderzeichen im Passwort, die das Parsen von .env beschädigen. Siehe cPanel-Einrichtung → Häufige Probleme.
Migrationsfehler 1067 (Invalid default value)
Der MySQL-Strict-Modus auf Shared Hosting lehnt mehrere timestamp NOT-NULL-Spalten ab. In v2.1.0+ behoben. Aktualisieren Sie Ihr Paket oder ändern Sie checkout_date / expected_return_date in dateTime in der Checkouts-Migration.
Fehlender APP_KEY / 500-Fehler vor der Installation
Laravel benötigt APP_KEY in .env, bevor die Anwendung lädt. Falls cPanel kein Terminal hat, siehe cPanel-Einrichtung → Schritt 5 für SSH-, genkey.php- oder lokale Generierungsmethoden.
Installation zurücksetzen
storage/installed.lock löschen und /install erneut aufrufen. Bestehende Daten werden gelöscht, wenn Migrations erneut laufen.
Performance — langsame Asset-Liste
php artisan optimize ausführen, um Config, Routes, Views zu cachen. Sicherstellen, dass MySQL Indizes auf assets.asset_tag, assets.serial_number, assets.status hat (werden automatisch durch Migrations erstellt).
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
Upgrade von v2.x auf v3.0
Laden Sie das v3-ZIP von CodeCanyon herunter, ersetzen Sie Anwendungsdateien (behalten Sie .env und Uploads in storage/), führen Sie dann php artisan migrate aus. Neue Tabellen für benutzerdefinierte Locales und Übersetzungs-Overrides werden automatisch hinzugefügt. Bestehende Einstellungen und Assets bleiben erhalten.
v2.x → v3.0 — Full upgrade guide
Upgrade von v1.x auf v2.0
Laden Sie das v2-ZIP von CodeCanyon herunter, ersetzen Sie Anwendungsdateien (behalten Sie .env und Uploads in storage/), führen Sie dann php artisan migrate aus. Das Upgrade ist nicht destruktiv — bestehende Einzelassets funktionieren weiter; neue Batch-/Disposal-Tabellen werden automatisch hinzugefügt.
Änderungsprotokoll
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-Branding: Footer-Copyright und Badge folgen Settings → Branding → App Name (kein Code-Edit nötig)
v3.0.0 — Lokalisierung & Translation Editor (2026-06)
- Translation Editor UI unter Administration → Translations (Locale hinzufügen, Inline-Bearbeitung, Suche/Filter nach Gruppe)
- Benutzerdefinierte Locales in der DB — Code, Anzeigename, nativer Name, Flaggen-SVG, Richtung, Basis-Locale
- CSV-Import/-Export für Massenaktualisierungen von Übersetzungen
- Zeitzone- und Währungseinstellungen jetzt app-weit angewendet (config/localization.php inkl. Europe/Skopje, MKD)
- Einstellungen → Lokalisierung: durchsuchbare Dropdowns für Zeitzone/Währung mit Unterstützung benutzerdefinierter Werte
- Hindi (hi) als 11. integrierte Locale hinzugefügt; date_format wird auf Vue-Seiten berücksichtigt
- Berechtigungsgesteuertes manage translations; DB-Overrides werden mit lang/-Datei-Baseline zusammengeführt
v2.0.0 — Operatives Release (2026-06)
- Batch-/Lot-Assets — Mengenverfolgung, Zuweisungen, Rückgaben, Live-Abgleich
- 4 operative Berichte: Employee Assignments, Department/Location, Inventory Reconciliation, Damaged Assets
- Disposals-Modul — Abschreibungs-Batches, Genehmigung mit Funktionstrennung, druckbares Protokoll (PDF)
- Öffentliche QR-Asset-Seite unter
/a/{tag}mit konfigurierbarer Sichtbarkeit - Bestehende Berichte zeigen jetzt Asset-Anzahl + Gesamteinheiten
- QR-Codes verlinken auf die öffentliche Übergabeseite; das Transaktionsprotokoll erfasst Mengen bei Batch-Bewegungen
- Aktualisierte Demo-Daten, Benutzerhandbuch (separat in
documentation/enthalten) und i18n-Strings
v1.0.0 — Initiale Veröffentlichung (2026-05)
- Asset-CRUD mit automatischer QR-Code-Generierung
- 5 Benutzerrollen (Admin, IT-Manager, Buchhalter, Supervisor, Mitarbeiter) mit granularen Berechtigungen
- Asset-Quellen-Tracking (zentrale Beschaffung, dezentrale Beschaffung, Investitionsprojekt, Spende, interner Transfer)
- Zuweisungs- und Rückgabe-Workflows mit E-Mail-Benachrichtigungen
- Transfer-Genehmigungs-Workflow (pending → approved/rejected) mit Berechtigungs-Gating
- Asset-Anfrage-Genehmigungs-Flow
- Check-in/Check-out mit Kalenderansicht
- Wartungsplanung mit automatischer Erneuerung
- Dokumentanhänge mit Ablauf-Benachrichtigungen
- Abschreibung mit 3 Berechnungsmethoden + End-of-Life-Benachrichtigungen
- Inventur-Modul — periodische Bestandsaufnahme mit Abweichungsverfolgung
- Benutzerdefinierte Felder mit 7 Eingabetypen und Drag-and-drop-Sortierung
- 8 Berichte mit Diagrammen, Excel- und PDF-Export (inkl. Assets nach Quelle, Inventur-Zusammenfassung)
- Audit-Log via Spatie Activitylog mit Diff-Viewer
- Webhooks mit HMAC-Signierung und Auto-Retry
- Mehrsprachige UI: 10 Sprachen (en, vi, es, fr, de, zh, ja, pt-BR, ru, ar mit RTL)
- Einstellungs-UI für Firma, E-Mail, Benachrichtigungen, Lokalisierung, Übersetzungen
- Web-basierter Installations-Assistent
- Dark Mode mit Emerald-Teal-Palette
Danksagungen
Verwendete Open-Source-Bibliotheken
- 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