Artisan Commands¶
Alle Artisan-Commands werden innerhalb des Docker-Containers ausgefuehrt:
App-spezifische Commands¶
Eigene Commands, die fuer HostAdmin entwickelt wurden.
Kunden¶
| Command | Beschreibung |
|---|---|
customer:link-stripe {customer_id} {stripe_id} |
Verknuepft einen bestehenden Kunden mit einer Stripe Customer ID |
customers:fix-country [--dry-run] [--sync] |
Setzt Land auf DE fuer Kunden ohne Laenderangabe |
Stripe - Import¶
| Command | Beschreibung |
|---|---|
stripe:import-customers [--dry-run] [--update-existing] |
Importiert Kunden aus Stripe, die lokal noch nicht existieren |
stripe:import-subscriptions [--dry-run] [--update-existing] |
Importiert Subscriptions aus Stripe |
stripe:import-subscription-items [--subscription=] [--dry-run] [--create-services] |
Importiert fehlende Subscription-Items aus Stripe |
stripe:import-invoices [--from=] [--to=] [--status=] [--dry-run] [--download-pdfs] |
Importiert Rechnungen aus Stripe (filterbar nach Datum und Status) |
Stripe - Sync¶
| Command | Beschreibung |
|---|---|
stripe:sync-customers [--force] [--id=*] [--no-search] |
Synchronisiert lokale Kunden zu Stripe |
stripe:sync-products [--id=*] [--force] |
Synchronisiert Service-Definitionen als Stripe Products/Prices |
stripe:sync-invoice-status [--invoice=] [--limit=] [--queue] |
Synchronisiert Rechnungsstatus von Stripe fuer offene Rechnungen |
stripe:update-invoice-numbers [--dry-run] |
Aktualisiert lokale Rechnungsnummern anhand der Stripe-Nummern |
subscriptions:update-descriptions [--dry-run] [--id=*] |
Aktualisiert Subscription-Beschreibungen in Stripe |
Daten-Export¶
| Command | Beschreibung |
|---|---|
export:data {model} [--format=json] [--year=] |
Exportiert Model-Daten als JSON Lines oder XLSX auf S3 (export/) |
Verfuegbare Models: customer, contact, customer-service, invoice, payment, server, service-definition
Optionen:
| Option | Beschreibung | Standard |
|---|---|---|
--format=json |
Exportformat: json (JSON Lines) oder xlsx (Excel) |
json |
--year= |
Filtert nach Jahr (nur fuer invoice) |
alle |
Beispiele:
# Alle Kunden als JSON Lines exportieren
php artisan export:data customer
# Rechnungen 2025 als Excel exportieren
php artisan export:data invoice --format=xlsx --year=2025
# Service-Definitionen als Excel exportieren
php artisan export:data service-definition --format=xlsx
# Alle Rechnungen (alle Jahre) als JSON Lines
php artisan export:data invoice
Dateiname-Format: YYYYMMDD_HHMMSS_model.jsonl bzw. .xlsx
Ablage auf S3: export/
Der Export ist auch ueber die UI verfuegbar unter Admin > System > Tools > Export.
Services¶
| Command | Beschreibung |
|---|---|
services:inherit-domain-servers [--dry-run] |
Setzt bei Domain-Services den Server des uebergeordneten Services (z.B. Hosting-Paket) |
Optionen:
| Option | Beschreibung |
|---|---|
--dry-run |
Zeigt nur an, welche Domains aktualisiert wuerden (keine Aenderung) |
Beispiele:
# Vorschau: welche Domains wuerden einen Server erben
php artisan services:inherit-domain-servers --dry-run
# Server auf Domains uebertragen
php artisan services:inherit-domain-servers
Verarbeitet werden nur Domain-Services (service_type = domain), deren uebergeordneter Service (parent_service_id) einen Server gesetzt hat. Der Parent-Server wird dabei erzwungen und ueberschreibt einen abweichend gesetzten Server. Hat der Parent keinen Server, bleibt die Domain unveraendert. Der Command ist idempotent (bereits korrekte Domains werden uebersprungen).
Dieselbe Zuordnung erfolgt automatisch beim Speichern eines Domain-Services.
Rechnungen¶
| Command | Beschreibung |
|---|---|
invoice:sync-numbers |
Gleicht die Rechnungsnummer-Einstellung mit der hoechsten vorhandenen Nummer ab |
Mahnungen¶
| Command | Beschreibung |
|---|---|
reminders:send [--dry-run] [--invoice=] [--level=] |
Versendet Mahnungen fuer ueberfaellige Rechnungen |
Optionen:
| Option | Beschreibung |
|---|---|
--dry-run |
Zeigt nur an, welche Mahnungen gesendet wuerden (kein Versand) |
--invoice= |
Verarbeitet nur eine bestimmte Rechnungs-ID |
--level= |
Filtert auf eine bestimmte Mahnstufe (1-5) |
Beispiele:
# Alle faelligen Mahnungen anzeigen (Testlauf)
php artisan reminders:send --dry-run
# Alle faelligen Mahnungen versenden
php artisan reminders:send
# Nur eine bestimmte Rechnung mahnen
php artisan reminders:send --invoice=5434
# Nur 1. Mahnungen versenden
php artisan reminders:send --level=1
# Kombiniert: Testlauf fuer eine Rechnung
php artisan reminders:send --invoice=5434 --dry-run
Die Validierung entspricht der UI-Logik (Seite "Offene Rechnungen"):
- Rechnungsstatus muss
openodersentsein - Faelligkeitsdatum muss ueberschritten sein
- Erste Mahnung: mindestens X Tage nach Faelligkeit (Einstellung
reminder_1_days, Standard: 7) - Folge-Mahnungen: mindestens X Tage nach letzter Mahnung (Einstellung
reminder_subsequent_days, Standard: 14) - Maximale Anzahl Mahnungen nicht ueberschritten (Einstellung
reminder_max_count, Standard: 5) - Kunde muss eine E-Mail-Adresse haben
- E-Mail-Template fuer die jeweilige Stufe muss vorhanden und aktiv sein
E-Mail¶
| Command | Beschreibung |
|---|---|
emails:process-pending |
Verarbeitet ausstehende E-Mails und uebergibt sie an die Queue |
email-template:seed [key] |
Seeded ein bestimmtes E-Mail-Template (ohne Key werden alle verfuegbaren aufgelistet) |
Housekeeping¶
| Command | Beschreibung |
|---|---|
housekeeping:run [--dry-run] |
Fuehrt alle aktiven Housekeeping-Jobs aus. Mit --dry-run wird nur angezeigt, was geloescht wuerde |
Housekeeping-Jobs (konfigurierbar unter Einstellungen):
| Job | Einstellungen-Tab | Beschreibung |
|---|---|---|
| Exports bereinigen | System | Loescht alte Export-Dateien vom S3-Bucket (export/) nach konfigurierbarer Anzahl Tage |
| Rechnungen bereinigen | Rechnungen | Loescht Rechnungen (DB + PDF/XML auf S3) aelter als X Jahre (Minimum: 10 Jahre) |
| Zahlungen bereinigen | Zahlungen | Loescht Zahlungen aelter als X Jahre (nur wenn zugehoerige Rechnung bereits geloescht, Minimum: 10 Jahre) |
| E-Mails bereinigen | Loescht E-Mails aelter als X Tage (E-Mails mit Status "error" bleiben erhalten) | |
| Beendete Services | System | Soft-Delete von Services mit Status "Beendet" nach konfigurierbarer Frist. Child-Services nur wenn ebenfalls beendet; Parent-Services mit aktiven Children werden uebersprungen |
System¶
| Command | Beschreibung |
|---|---|
app:version [--full] |
Zeigt die Anwendungsversion an (--full fuer Details wie Build-Datum, VCS Ref, Environment) |
Geplante Ausfuehrung (Scheduler)¶
Diese Commands werden automatisch vom Scheduler-Container ausgefuehrt:
| Command | Zeitplan |
|---|---|
stripe:import-customers |
Taeglich 03:00 |
stripe:import-subscriptions |
Taeglich 03:10 |
stripe:import-subscription-items |
Taeglich 03:20 |
stripe:import-invoices |
Taeglich 03:30 |
stripe:sync-invoice-status |
Taeglich 03:40 |
housekeeping:run |
Konfigurierbar (Standard: Taeglich 04:00) |
Laravel Standard-Commands¶
Die wichtigsten Laravel-eigenen Commands fuer den taeglichen Betrieb.
Migrations & Datenbank¶
# Migrations ausfuehren
php artisan migrate
# Migrations-Status anzeigen
php artisan migrate:status
# Letzte Migration zurueckrollen
php artisan migrate:rollback
# Datenbank seeden
php artisan db:seed
php artisan db:seed --class=SomeSeeder
Cache & Konfiguration¶
# Alle Caches leeren
php artisan optimize:clear
# Konfiguration cachen (Produktion)
php artisan config:cache
# Konfiguration-Cache leeren
php artisan config:clear
# Route-Cache leeren
php artisan route:clear
# View-Cache leeren
php artisan view:clear
# Application-Cache leeren
php artisan cache:clear
Queue & Jobs¶
# Queue-Worker starten (laeuft im Queue-Container)
php artisan queue:work
# Queue-Worker mit Optionen
php artisan queue:work --tries=3 --timeout=90
# Fehlgeschlagene Jobs anzeigen
php artisan queue:failed
# Fehlgeschlagenen Job wiederholen
php artisan queue:retry {id}
php artisan queue:retry all
# Fehlgeschlagene Jobs loeschen
php artisan queue:flush
Scheduler¶
# Geplante Tasks einmalig ausfuehren (laeuft im Scheduler-Container)
php artisan schedule:run
# Geplante Tasks auflisten
php artisan schedule:list
Debugging & Entwicklung¶
# Interaktive REPL (Tinker)
php artisan tinker
# Routen auflisten
php artisan route:list
# Echtzeit-Log (Pail)
php artisan pail
Wartung¶
Filament¶
# Filament-Resource erstellen (Admin)
php artisan make:filament-resource ModelName --generate --panel=admin
# Filament-Resource erstellen (Panel)
php artisan make:filament-resource ModelName --view --panel=panel
# Filament-Assets publishen
php artisan filament:assets