- Fixed database relationships: LlmRequest now properly uses gateway_user_id instead of user_id - Updated Models: GatewayUser and LlmRequest relationships corrected - Removed User->llmRequests relationship (admin users don't have LLM requests) - Simplified Dashboard: Now shows Gateway User statistics instead of admin users - Removed obsolete Budgets management pages (budgets handled directly in gateway_users) - Removed User Budgets admin section (redundant with gateway_users management) - Fixed view errors: Added null-checks for user_id in keys views - Updated navigation: Removed Budget and User Budget links - Updated routes: Cleaned up unused BudgetController and UserManagementController routes - Simplified StatisticsService: Focus on gateway_users and basic metrics only
Laravel LLM Gateway
Ein umfassendes Laravel-basiertes LLM Gateway System mit Multi-Provider-Support, Kosten-Tracking, Budget-Management und Admin-Interface.
🎯 Hauptfeatures
- Multi-Provider Support: OpenAI, Anthropic, DeepSeek, Google Gemini, Mistral AI
- Per-User API Keys: Verschlüsselte Speicherung von Provider-Credentials pro Benutzer
- Kosten-Tracking: Detaillierte Verfolgung von Token-Nutzung und Kosten
- Budget-Management: Flexible Budget-Limits und Benachrichtigungen
- Rate Limiting: Schutz vor Überlastung
- Admin-Interface: Umfassende Verwaltungsoberfläche mit Laravel/Livewire
- OpenAI-kompatible API: Standard-konforme Endpoints
🚀 Quick Start
Voraussetzungen
- Docker & Docker Compose installiert
- Port 80 und 8081 verfügbar
Installation
cd /opt/laravel-llm
docker compose up -d
Das System startet automatisch:
- Laravel Anwendung auf Port 80
- MariaDB 11.4 Datenbank
- phpMyAdmin auf Port 8081
🌐 URLs & Zugangsdaten
Services
| Service | URL | Beschreibung |
|---|---|---|
| Laravel Admin | http://localhost:80 | Admin-Interface |
| phpMyAdmin | http://localhost:8081 | Datenbank-Management |
Login-Daten
Laravel Admin
Email: admin@laravel-llm.local
Password: [Dein Admin-Passwort]
phpMyAdmin (MariaDB)
Server: mariadb
Username: root
Password: rootpass
Database: gateway
📁 Projekt-Struktur
/opt/laravel-llm/
├── docker-compose.yml # Docker Services Definition
├── backup_*.sql # Datenbank-Backups
│
├── laravel/ # Laravel Docker Config
│ ├── Dockerfile # PHP 8.3 + Nginx
│ ├── nginx.conf # Webserver Config
│ ├── supervisord.conf # Process Manager
│ └── php.ini # PHP Einstellungen
│
└── laravel-app/ # Laravel Anwendung
├── app/
│ ├── Http/Controllers/ # Admin Controllers
│ ├── Models/ # Eloquent Models
│ ├── Services/LLM/ # Provider Services
│ └── ...
├── database/
│ └── migrations/ # Datenbank Schema
├── resources/
│ └── views/ # Blade Templates
└── routes/
└── web.php # Admin Routes
🗄️ Datenbank-Schema
Haupttabellen
| Tabelle | Beschreibung |
|---|---|
admins |
Admin-Benutzer für das Interface |
users |
Gateway-Benutzer (API-Nutzer) |
user_provider_keys |
Verschlüsselte Provider API-Keys |
usage_logs |
Request-Tracking und Kosten |
budgets |
Budget-Definitionen |
budget_reset_logs |
Budget-Historie |
model_pricing |
Modell-Kosten-Konfiguration |
Datenbank-Zugriff
Via phpMyAdmin:
http://localhost:8081
Server: mariadb
User: root
Password: rootpass
Via CLI:
docker compose exec mariadb mysql -u gateway -pgateway gateway
# Beispiel-Queries
SELECT * FROM users;
SELECT * FROM usage_logs ORDER BY created_at DESC LIMIT 10;
🔧 Docker Commands
Container Management
# Container starten
docker compose up -d
# Container stoppen
docker compose down
# Logs anzeigen
docker compose logs -f laravel
# Container neu bauen
docker compose up -d --build
# In Laravel Container einloggen
docker compose exec laravel bash
Laravel Artisan Commands
# Migrationen
docker compose exec laravel php artisan migrate
# Cache leeren
docker compose exec laravel php artisan cache:clear
docker compose exec laravel php artisan config:clear
# Queue Worker starten
docker compose exec laravel php artisan queue:work
# Tinker (Laravel REPL)
docker compose exec laravel php artisan tinker
Asset Compilation
# Development (mit Hot Reload)
docker compose exec laravel npm run dev
# Production Build
docker compose exec laravel npm run build
🛠️ Entwicklung
Admin-Interface Features
Das Admin-Interface unter http://localhost:80 bietet:
-
Dashboard
- Übersicht über Nutzungsstatistiken
- Kosten-Trends (Chart.js)
- Provider-Verteilung
- Aktive Benutzer
-
Gateway Users
- Benutzerverwaltung
- API-Key Management
- Pro-User Provider-Credentials
-
API Keys
- Virtual Keys erstellen/löschen
- Key-Testing
- Nutzungsstatistiken
-
Budgets
- Budget-Limits definieren
- Reset-Zeiträume (täglich/wöchentlich/monatlich)
- Benachrichtigungen
-
Usage Logs
- Request-Historie
- Filter & Export (CSV)
- Kosten-Analyse
-
Model Pricing
- Preis-Konfiguration
- Dynamische Model-Liste
- Kosten-Rechner
LLM Provider Services
Das System unterstützt folgende Provider mit dynamischer Model-Discovery:
- OpenAI: GPT-3.5, GPT-4, GPT-4 Turbo
- Anthropic: Claude 3 (Haiku, Sonnet, Opus)
- DeepSeek: DeepSeek Chat Modelle
- Google Gemini: Gemini Pro, Flash
- Mistral AI: Mistral Large, Medium, Small
Alle Provider-Services befinden sich in app/Services/LLM/.
🔐 Sicherheit
Production Checklist
Vor dem Production-Einsatz:
-
✅
.envKonfiguration:APP_ENV=production APP_DEBUG=false APP_KEY=... (sicher generieren!) -
✅ Admin-Passwort ändern
-
✅ MariaDB Root-Passwort ändern
-
✅ phpMyAdmin deaktivieren oder absichern
-
✅ SSL/TLS einrichten
-
✅ Laravel Caches aktivieren:
php artisan config:cache php artisan route:cache php artisan view:cache php artisan optimize
API-Key Verschlüsselung
Provider API-Keys werden verschlüsselt in der Datenbank gespeichert:
- Verwendung von Laravel's Encryption
- Basiert auf APP_KEY
- Automatische Ver-/Entschlüsselung
📊 Monitoring & Analytics
Dashboard Metriken
- Gesamte Requests
- Token-Nutzung (Input/Output)
- Gesamtkosten
- Requests pro Provider
- Top-Nutzer
- Kosten-Trends (Chart.js Visualisierung)
Export Funktionen
Usage Logs können als CSV exportiert werden mit:
- Zeitraum-Filter
- Provider-Filter
- Benutzer-Filter
- Kosten-Zusammenfassung
🐛 Troubleshooting
Container startet nicht
# Logs prüfen
docker compose logs laravel
docker compose logs mariadb
# Container neu bauen
docker compose down
docker compose up -d --build
Datenbank Connection Fehler
# MariaDB Status prüfen
docker compose ps mariadb
# Connection testen
docker compose exec laravel php artisan migrate:status
Permissions Fehler
# Storage Permissions setzen
docker compose exec laravel chmod -R 777 storage bootstrap/cache
Assets werden nicht geladen
# Assets neu kompilieren
docker compose exec laravel npm run build
# Storage Link neu erstellen
docker compose exec laravel php artisan storage:link
📚 Technologie-Stack
- Framework: Laravel 11.x
- Frontend: Livewire 3.x + Tailwind CSS 3.x
- Datenbank: MariaDB 11.4
- Webserver: Nginx + PHP-FPM 8.3
- Charts: Chart.js
- Container: Docker + Docker Compose
🔗 Nützliche Links
- Laravel Docs: https://laravel.com/docs
- Livewire Docs: https://livewire.laravel.com
- Tailwind CSS: https://tailwindcss.com
- Chart.js: https://www.chartjs.org
📝 System-Status
✅ Implementiert
- Docker-Setup (Laravel + MariaDB + phpMyAdmin)
- Admin-Authentifizierung
- Gateway User Management
- API Key Management mit Testing
- Budget-System mit Limits
- Usage Logs mit CSV Export
- Model Pricing Management
- Dashboard mit Statistiken
- Multi-Provider Support (5 Provider)
- Verschlüsselte Credential-Speicherung
- Dynamische Model-Discovery
🚧 Geplant
- API Gateway Endpoints (OpenAI-kompatibel)
- Rate Limiting Implementation
- Email-Benachrichtigungen
- Erweiterte Analytics
- API-Dokumentation
Entwickelt von Wilfried Trinkl | Laravel LLM Gateway 🚀