Dashboard Übersicht
{{-- SSL-Banner --}} @if(!$sslConfigured)
SSL noch nicht eingerichtet Domains laufen ohne HTTPS — Zertifikate in den Einstellungen beantragen.
Jetzt einrichten →
@endif {{-- Hero Banner --}}
Mail Server
{{ $domainCount }}
Domains
{{ $mailboxCount }}
Postfächer
{{ $servicesActive }}/{{ $servicesTotal }}
Dienste
{{ $alertCount }}
Warnungen
{{ $mailHostname }}
{{-- System-Ressourcen --}}
System-Ressourcen
@php $cpuClass = $cpu > 80 ? 'mw-bar-high' : ($cpu > 50 ? 'mw-bar-mid' : 'mw-bar-low'); @endphp
CPU
{{ $cpu }}%
{{ $cpuCores }} Cores · {{ $cpuMhz }} GHz
@php $ramClass = $ramPercent > 80 ? 'mw-bar-high' : ($ramPercent > 50 ? 'mw-bar-mid' : 'mw-bar-low'); @endphp
RAM
{{ $ramPercent }}%
{{ $ramUsed }} GB / {{ $ramTotal }} GB
@php $loadVal = floatval($load1); $loadMax = max(1, $cpuCores); $loadPct = min(100, round($loadVal / $loadMax * 100)); $loadClass = $loadPct > 80 ? 'mw-bar-high' : ($loadPct > 50 ? 'mw-bar-mid' : 'mw-bar-low'); @endphp
Load
{{ $load1 }}
{{ $load5 }} · {{ $load15 }} (1/5/15m)
Uptime
{{ $uptimeDays }}d {{ $uptimeHours }}h
Stabil · kein Neustart
{{-- Dienste & Schutz --}}
Dienste & Schutz
WoltGuard
System-Wächter
alle Dienste OK
{{ $servicesActive }}/{{ $servicesTotal }} Dienste aktiv
Updates
{{ config('app.version', 'vdev') }}
aktuell
System ist auf dem neuesten Stand.
Backup
@if($backup['last_at']) Zuletzt {{ $backup['last_at'] }} @elseif($backup['status'] === 'unconfigured') Nicht konfiguriert @elseif($backup['status'] === 'running') Läuft gerade… @else Noch nicht ausgeführt @endif
@php $bStatus = $backup['status'] ?? 'unknown'; $bBadge = match($bStatus) { 'ok' => ['class' => 'mw-badge-ok', 'label' => 'OK'], 'failed' => ['class' => 'mw-badge-fail', 'label' => 'Fehler'], 'running' => ['class' => 'mw-badge-info', 'label' => 'Läuft'], 'queued' => ['class' => 'mw-badge-info', 'label' => 'Warteschlange'], 'unconfigured' => ['class' => 'mw-badge-mute', 'label' => 'Nicht konfiguriert'], 'pending' => ['class' => 'mw-badge-warn', 'label' => 'Ausstehend'], default => ['class' => 'mw-badge-warn', 'label' => 'Unbekannt'], }; @endphp {{ $bBadge['label'] }}
@if($backup['size']) Größe: {{ $backup['size'] }} @else Größe: — @endif @if($backup['duration'])  ·  {{ $backup['duration'] }} @endif @if($backup['next_at'])
Nächstes: {{ $backup['next_at'] }} @elseif($backup['status'] !== 'unconfigured' && !$backup['enabled'])
Zeitplan deaktiviert @endif
@if($backup['status'] === 'unconfigured') Konfigurieren @endif
Alerts
System-Warnungen
{{ $alertCount }} offen
{{ $alertCount === 0 ? 'Keine Warnungen.' : ($alertCount . ' aktive Warnungen.') }}
{{-- Infrastruktur --}}
Infrastruktur
Dienste & Ports
@php $svcHalf = (int) ceil(count($services) / 2); @endphp
@foreach($services as $svc) @if($loop->index < $svcHalf) @php $st = $svc['status']; @endphp
{{ $svc['name'] }} {{ $svc['type'] }}
{{ $st === 'online' ? 'Online' : ($st === 'offline' ? 'Offline' : 'N/A') }}
@endif @endforeach
@foreach($services as $svc) @if($loop->index >= $svcHalf) @php $st = $svc['status']; @endphp
{{ $svc['name'] }} {{ $svc['type'] }}
{{ $st === 'online' ? 'Online' : ($st === 'offline' ? 'Offline' : 'N/A') }}
@endif @endforeach
@foreach([25, 465, 587, 110, 143, 993, 995, 80, 443] as $port) @php $isActive = $ports[$port] ?? false; @endphp :{{ $port }} @endforeach
Storage
{{ $diskUsedPercent }}%
Belegt
{{ $diskUsedGb }} GB
Frei
{{ $diskFreeGb }} GB
Gesamt
{{ $diskTotalGb }} GB
Mail & Sicherheit
{{ $spamBlocked }}
Spam geblockt
{{ $spamTagged }}
Tagged
{{ $hamCount }}
Ham erkannt
Queue: {{ $queueTotal }} {{ $queueDeferred > 0 ? "({$queueDeferred} def.)" : '' }} | Rspamd: {{ $spamRejected }} reject | {{ $clamVer }}