Erste Schritte
Installieren Sie AssetHub auf 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.
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 nutzt den Laravel-Scheduler. Sie konfigurieren nur einen Cron-Job, der jede Minute läuft, und Laravel verteilt intern jede Aufgabe zur richtigen Zeit (täglich 08:00, monatlich, etc.). Bei Hostinger richten Sie ihn in hPanel → Erweitert → Cron Jobs ein. Wenn Ihr Host keinen Cron hat, nutzen 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 — er nutzt die Browser-Kamera über html5-qrcode und funktioniert auf jedem modernen Browser auf Handy/Tablet/Desktop. Einzige Voraussetzung: HTTPS. Hostinger bietet kostenloses SSL über Let's Encrypt, sodass alles sofort funktioniert.
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?
10 Sprachen out of the box: Englisch, Vietnamesisch, Spanisch, Französisch, Deutsch, Chinesisch, Japanisch, Portugiesisch (BR), Russisch und Arabisch (mit voller RTL-Unterstützung). Übersetzungen sind über Admin → Translations bearbeitbar.
Übersicht
AssetHub ist ein vollständiges IT-Asset-Management-System, gebaut mit Laravel 11, Vue 3 und Tailwind CSS. Es hilft Organisationen, den Lebenszyklus von Equipment zu verfolgen, Zuweisungen zu verwalten, Wartungen zu planen, Abschreibung zu berechnen und detaillierte Berichte zu erstellen.
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.
Webhooks
15 Event-Typen mit HMAC-Signierung und Auto-Retry.
Audit-Log
Jede Änderung protokolliert mit vollständigem Diff-Viewer.
Berichte
8 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.
Installation
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). .env.examplezu.envkopieren undphp artisan key:generateausführen.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.
Wizard Step 2 — Database Configuration
When the wizard reaches Step 2, you must enter the MySQL connection details for the database you created in your hosting panel. The database must already exist (it can be empty — the next wizard step will create the tables).
| Field | Default / Example | Notes |
|---|---|---|
| Host | 127.0.0.1 | Works on 99% of shared hosts (Hostinger, cPanel, Plesk). Keep this default unless your hosting provides a custom MySQL hostname (managed DB services like AWS RDS, DigitalOcean Managed Database). |
| Port | 3306 | Standard MySQL port. Only change if your provider uses a non-standard port (rare). |
| Database name | uXXXXXX_assethub | The full name shown in your hosting panel. Most shared hosts prefix it with your user ID (e.g. Hostinger: u287094729_assethub). |
| Username | uXXXXXX_assethub | MySQL user with permissions on the database above. Do not use root — shared hosts don't allow it. |
| Password | (your DB password) | The password you set or copied when creating the MySQL user. Most hosts show it once on creation — use "View / Reset" if you didn't save it. |
Where to find these credentials by hosting panel
- Hostinger: hPanel → Databases → Management → click your database. The page shows name, username, and a "Show password" button.
- cPanel: cPanel → MySQL Databases. The database list shows names; users are listed below. Use "Change Password" if needed.
- Plesk: Plesk → Databases → click the database name. The detail page shows credentials and offers a password reset.
- DirectAdmin: DirectAdmin → MySQL Management → click the database. Credentials and password reset are on the database detail page.
- External / managed DB: AWS RDS, DigitalOcean Managed Database, etc. Use the custom hostname, port (often
3306but verify), DB name, user, and password from your cloud console. Make sure the server's IP is whitelisted in the DB firewall.
Common errors and how to fix them
| Error message | Cause and fix |
|---|---|
SQLSTATE[HY000] [1045] Access denied | Wrong username or password, or the user doesn't have access to this database. Double-check spelling (including the user prefix on shared hosts). Reset the password in the hosting panel if unsure. |
SQLSTATE[HY000] [1049] Unknown database | The database name is wrong, or you haven't created the database yet in your hosting panel. Create it first, then re-enter the exact name (including any prefix). |
SQLSTATE[HY000] [2002] Connection refused | The MySQL server can't be reached. Verify Host and Port. On shared hosts try localhost instead of 127.0.0.1 or vice versa. For managed DBs, make sure your server IP is whitelisted. |
SQLSTATE[42S02] Base table not found: sessions | Happens when SESSION_DRIVER=database or CACHE_STORE=database is set in .env before the tables exist. Edit .env and change both to file, save, then reload the wizard. You can switch back to database after install if you prefer. |
could not find driver | PHP pdo_mysql extension is missing or disabled. Enable it in your hosting panel (PHP Configuration → Extensions). On Hostinger: hPanel → Advanced → PHP Configuration → PHP Extensions tab. |
127.0.0.1 and 3306) — leave them as-is on shared hosting. You only need to type Database name, Username, and Password. Click Test & Save → to verify the connection and move to Step 3.
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.
Option 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.
Option 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.
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, Datumsformat, Währung
Mehrsprachen-Unterstützung
AssetHub wird mit 10 sofort einsatzbereiten Sprachen ausgeliefert, einschließlich RTL-Arabisch. Benutzer wechseln die Sprache über das Flaggen-Dropdown oben rechts.
Mitgelieferte Sprachen
| Code | 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 |
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)
Admin → Einstellungen → Übersetzungen:
- Klicken Sie auf "Locale hinzufügen" — geben Sie Code (z.B.
thfür Thai), Anzeigename, nativen Namen, Flagge, Richtung und eine Basis-Locale zum Kopieren der Übersetzungen an. - Bearbeiten Sie Übersetzungen inline im Übersetzungs-Editor oder per CSV-Import/Export.
- In der DB gespeicherte Übersetzungen überschreiben automatisch die Datei-Übersetzungen.
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.
Funktionsliste
Asset-Management
- Automatisch generierte Asset-Tags
- Mehrere Bilder pro Asset
- QR-Code-Generierung
- Status- und Zustandsverfolgung
- Massenimport/-export
- Asset klonen
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
- 8 Berichtstypen
- Excel- + PDF-Export
- Diagramme und Dashboards
- Datumsfilter
Benutzer & Rollen
AssetHub wird mit 5 vorkonfigurierten Rollen ausgeliefert:
| Rolle | Berechtigungen |
|---|---|
| Admin | Voller Systemzugriff — Benutzer, Abteilungen, Einstellungen, Audit-Log, Webhooks, Übersetzungen |
| IT-Manager | Assets, Kategorien, Wartung, Anfragen verwalten; Transfers genehmigen; Berichte und Abschreibung ansehen |
| Buchhalter | Assets und Abschreibung verwalten, Inventuren durchführen, Transfers genehmigen, voller Berichtszugriff (finanzieller Fokus) |
| 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.
QR-Codes
Jedes Asset erhält bei der Erstellung automatisch einen QR-Code. Der QR kodiert die URL des Assets, das Scannen führt direkt zur Detailseite.
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.
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.
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
Acht integrierte Berichte, zugänglich über das Berichte-Menü:
- 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
Alle Berichte unterstützen Excel- und PDF-Export über Buttons im Seitenkopf.
Webhooks
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.
Hostinger / Shared Hosting (hPanel Cron Jobs UI)
Siehe Abschnitt Hostinger-Einrichtung → Schritt 5 für screenshot-ähnliche Anweisungen. Kurz: Erweitert → Cron Jobs → Custom, Befehl:
/usr/bin/php /home/uXXXXXX/public_html/artisan schedule:run
Zeitplan: jede Minute (* in allen fünf Feldern).
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 |
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.
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).
Changelog
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
Credits
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