@if(!$status) {{-- Error state when status cannot be loaded --}} Unable to Load Server Status

Could not retrieve status from hypervisor:

Retry
@else <<<<<<< HEAD =======

Cloud-init Configuration Notice

Hostname, password, and networking settings are configured automatically via cloud-init. This applies to standard operating system installations that support cloud-init. However, if you are:

  • Installing from an ISO image
  • Configuring the operating system manually during installation
  • Using Windows (which does not support cloud-init)

You will need to manually configure networking, security settings, and hostname within the operating system, as cloud-init will not be available in these scenarios.

Complete overview of your virtual machine including real-time resource usage, server status, network configuration, and DNS information.

Status

Power state with real-time updates every 2-30 seconds.

Resources

CPU, memory usage, and uptime statistics from the hypervisor.

Network

IPv4/IPv6 addresses and DNS configuration for your VM.

>>>>>>> c5530e923149080e7d739823785456eb3267393f @php // Calculate resource metrics $cpuCores = max(1, (int)($status->cpus ?? 1)); $cpuUsagePercent = round(max(0, ($status->cpu ?? 0) * 100), 1); $memoryTotal = (int)($status->maxmem ?? 0); $memoryUsed = (int)($status->mem ?? 0); $memoryPercent = $memoryTotal > 0 ? round(($memoryUsed / $memoryTotal) * 100, 1) : 0; <<<<<<< HEAD ======= $manualSnapshotLimit = 5; $manualSnapshotUsed = $server->statistics()->where('is_automatic', false)->count(); $manualSnapshotPercent = $manualSnapshotLimit > 0 ? round(($manualSnapshotUsed / $manualSnapshotLimit) * 100, 1) : 0; $badgeForPercent = function (float $value) { if ($value >= 100) { return ['label' => 'Over entitlement', 'class' => 'text-red-600 bg-red-100 dark:text-red-400 dark:bg-red-900']; } if ($value >= 85) { return ['label' => 'Watchlist', 'class' => 'text-amber-600 bg-amber-100 dark:text-amber-400 dark:bg-amber-900']; } return ['label' => 'Healthy', 'class' => 'text-emerald-600 bg-emerald-100 dark:text-emerald-400 dark:bg-emerald-900']; }; $cpuBadge = $badgeForPercent($cpuUsagePercent); $memoryBadge = $badgeForPercent($memoryPercent); $reportedUptime = $this->status && isset($this->status->uptime) ? $this->formatSeconds($this->status->uptime) : 'N/A'; $powerStats = $this->powerEventStats ?? [ 'starts' => 0, 'shutdowns' => 0, 'reboots' => 0, 'uptime_percent' => 0, 'samples' => 0, ]; $resourceAllocations = [ [ 'label' => 'CPU Allocation', 'used_percent' => $cpuUsagePercent, 'usage_summary' => number_format(($status->cpu ?? 0) * $cpuCores, 2) . ' / ' . $cpuCores . ' vCPU', 'entitlement_label' => $cpuCores . ' vCPU entitlement', 'description' => 'Live hypervisor usage sampled directly from the cluster.', 'gradient' => 'linear-gradient(90deg, #38bdf8 0%, #6366f1 100%)', 'badge' => $cpuBadge, ], [ 'label' => 'Memory Allocation', 'used_percent' => $memoryPercent, 'usage_summary' => ($memoryTotal > 0 ? \Illuminate\Support\Number::fileSize(bytes: $memoryUsed) . ' / ' . \Illuminate\Support\Number::fileSize(bytes: $memoryTotal) : \Illuminate\Support\Number::fileSize(bytes: $memoryUsed) . ' / N/A'), 'entitlement_label' => $memoryTotal > 0 ? \Illuminate\Support\Number::fileSize(bytes: $memoryTotal) . ' entitlement' : 'Entitlement unavailable', 'description' => 'Calculated from the VPS\'s provisioned RAM.', 'gradient' => 'linear-gradient(90deg, #34d399 0%, #10b981 100%)', 'badge' => $memoryBadge, ], [ 'label' => 'Hypervisor Uptime', 'used_percent' => null, 'usage_summary' => $reportedUptime, 'entitlement_label' => ($powerStats['starts'] ?? 0) . ' starts • ' . ($powerStats['shutdowns'] ?? 0) . ' shutdowns • ' . ($powerStats['reboots'] ?? 0) . ' reboots', 'description' => 'Shows the live uptime reported by the hypervisor plus counts from the task history.', 'gradient' => 'linear-gradient(90deg, #a855f7 0%, #ec4899 100%)', 'badge' => ['label' => 'Live', 'class' => 'text-blue-600 bg-blue-100 dark:text-blue-400 dark:bg-blue-900'], ], ]; $networkRates = $this->networkRateStats ?? ['in_rate' => 0, 'out_rate' => 0]; $formatRate = function ($bytesPerSecond) { if ($bytesPerSecond >= 1073741824) { return number_format($bytesPerSecond / 1073741824, 2) . ' GiB/s'; } if ($bytesPerSecond >= 1048576) { return number_format($bytesPerSecond / 1048576, 2) . ' MiB/s'; } if ($bytesPerSecond >= 1024) { return number_format($bytesPerSecond / 1024, 2) . ' KiB/s'; } return number_format($bytesPerSecond, 0) . ' B/s'; }; $rateScale = 5 * 1024 * 1024; // 5 MiB/s caps the bar width $aggregateRate = ($networkRates['in_rate'] ?? 0) + ($networkRates['out_rate'] ?? 0); $totalNetworkBytes = (int) (($status->netin ?? 0) + ($status->netout ?? 0)); $totalNetworkFormatted = number_format($totalNetworkBytes / 1024 / 1024, 2); $lastSampleTimestamp = now()->toIso8601String(); @endphp
@foreach($resourceAllocations as $index => $resource)

{{ $resource['label'] }}

@if(isset($resource['badge'])) {{ $resource['badge']['label'] }} @endif
{{ $resource['usage_summary'] }}

{{ $resource['entitlement_label'] }}

@if($resource['used_percent'] !== null)
{{ number_format($resource['used_percent'], 1) }}% @if($resource['used_percent'] > 100) Over entitlement @endif
@endif
@endforeach

Server Information

Status
@if ($status && $status->status === 'running') Running @else Stopped @endif
Operating System
{{ $server->os->name }}
Hostname
{{ $server->hostname ?? $status->name ?? 'N/A' }}
@if($server->primaryIpv4)
IPv4 Address
{{ $server->primaryIpv4->ip }}
@endif @if($server->primaryIpv6)
IPv6 Address
{{ $server->primaryIpv6->ip }}
@endif
Root Password
@if(isset($server->password) && $server->password) •••••••• @else Emailed @endif @if(isset($server->password) && $server->password) @endif
Cancel Save Save & Apply
Reinstall Server

Data permanently deleted. Irreversible.

DNS Configuration

Primary IPv6: {{ $server->primaryIpv6->ip }}
Virtnet Internal {{ str_replace(':', '-', $server->primaryIpv6->ip) . '.virtnet.host' }}
nip.io (Public) {{ str_replace(':', '-', $server->primaryIpv6->ip) . '.nip.io' }}
sslip.io (Public) {{ str_replace(':', '-', $server->primaryIpv6->ip) . '.sslip.io' }}
backname.io (Public) {{ str_replace(':', '-', $server->primaryIpv6->ip) . '.backname.io' }}

DNS Resolution

@ = root domain → {{ $server->primaryIpv6->ip }} | *.@ = wildcard subdomains → same IP

rDNS PTR: No PTR records via RIR systems except direct contract customers.

@if(stripos($server->os->name, 'Windows') !== false)

Windows Server

IPv4/IPv6 Setup

Configure addresses manually within Windows Network Configuration.

Licensing Compliance

You're responsible for maintaining valid Windows licensing for your installation.

Audit Risks

Non-compliant installations may be suspended after verification audits.

@endif

Notes

(Markdown • Cleared on reinstall)
@if($isEditingNotes)
@if($notesError)
{{ $notesError }}
@endif
@else
@if($notes) {!! \Illuminate\Support\Str::markdown(e($notes), [ 'allow_unsafe_links' => false, 'renderer' => ['soft_break' => "
"] ]) !!} @else

No notes yet. Click Edit to add some.

@endif
@endif
@php // Gather comprehensive server information >>>>>>> c5530e923149080e7d739823785456eb3267393f $diskTotal = (int)($status->maxdisk ?? 0); $diskUsed = (int)($status->disk ?? 0); $diskPercent = $diskTotal > 0 ? round(($diskUsed / $diskTotal) * 100, 1) : 0; // Uptime $reportedUptime = $this->status && isset($this->status->uptime) ? $this->formatSeconds($this->status->uptime) : 'N/A'; // Power stats $powerStats = $this->powerEventStats ?? [ 'starts' => 0, 'shutdowns' => 0, 'reboots' => 0, ]; // Network $totalNetIn = (int)($status->netin ?? 0); $totalNetOut = (int)($status->netout ?? 0); // Product/Service info $productSettings = $server->service?->product?->settings ?? collect(); $allocatedCores = $productSettings->where('key', 'cores')->first()?->value ?? $cpuCores; $allocatedMemoryMiB = $productSettings->where('key', 'memory')->first()?->value ?? 0; $allocatedDiskGiB = $productSettings->where('key', 'disk')->first()?->value ?? 0; $allocatedBackups = $productSettings->where('key', 'backups')->first()?->value ?? 0; $servicePlan = $server->service?->plan; $serviceExpires = $server->service?->expires_at; $serviceStatus = $server->service?->status ?? 'unknown'; $productName = $server->service?->product?->name ?? 'Unknown Product'; $locationName = $server->node?->location?->name ?? 'Unknown'; $nodeName = $server->node?->name ?? 'Unknown'; // Badge helper $badgeForPercent = function (float $value) { if ($value >= 100) return ['label' => 'Critical', 'class' => 'bg-error/15 text-error']; if ($value >= 85) return ['label' => 'Warning', 'class' => 'bg-warning/15 text-warning']; return ['label' => 'Healthy', 'class' => 'bg-success/15 text-success']; }; $cpuBadge = $badgeForPercent($cpuUsagePercent); $memoryBadge = $badgeForPercent($memoryPercent); @endphp

The Server Overview provides a comprehensive real-time dashboard of your virtual machine's status, resource utilization, and configuration details.

Resource Metrics: Live CPU, memory, and storage utilization with health indicators.

Server Details: Operating system, hostname, IP addresses, and credentials.

DNS Configuration: Available hostname resolution options for your server.

Infrastructure: Datacenter location, billing cycle, and service information.

Resource Metrics

@if($status && $status->status === 'running') Running @else Stopped @endif
CPU
{{ $cpuBadge['label'] }}
{{ $cpuUsagePercent }}%

{{ number_format(($status->cpu ?? 0) * $cpuCores, 2) }} / {{ $cpuCores }} vCPU

Memory
{{ $memoryBadge['label'] }}
{{ $memoryPercent }}%

{{ \Illuminate\Support\Number::fileSize(bytes: $memoryUsed) }} / {{ \Illuminate\Support\Number::fileSize(bytes: $memoryTotal) }}

Uptime
Live
{{ $reportedUptime }}

{{ $powerStats['starts'] }} starts • {{ $powerStats['shutdowns'] }} shutdowns • {{ $powerStats['reboots'] }} reboots

Server Details

Status @if($status && $status->status === 'running') Running @else Stopped @endif
Operating System {{ $server->os->name }}
Hostname
{{ $server->hostname ?? $status->name ?? 'N/A' }}
@if($server->primaryIpv4)
IPv4 Address
{{ $server->primaryIpv4->ip }}
@endif @if($server->primaryIpv6)
IPv6 Address
{{ $server->primaryIpv6->ip }}
@endif
Root Password
@if(isset($server->password) && $server->password) •••••••• @else Emailed @endif
Reinstall Server

Data permanently deleted. Irreversible.

DNS Configuration

DNS hostnames that automatically resolve to your server's IP address. These work without any configuration.

Note: DNS is configured via cloud-init. For Windows or manual configuration, configure DNS directly within the guest OS.

@if($server->primaryIpv6) @php $ipv6Dashed = str_replace(':', '-', $server->primaryIpv6->ip); $dnsProviders = [ ['name' => 'Virtnet Internal', 'domain' => $ipv6Dashed . '.virtnet.host', 'badge' => 'Internal'], ['name' => 'nip.io', 'domain' => $ipv6Dashed . '.nip.io', 'badge' => 'Public'], ['name' => 'sslip.io', 'domain' => $ipv6Dashed . '.sslip.io', 'badge' => 'Public'], ['name' => 'backname.io', 'domain' => $ipv6Dashed . '.backname.io', 'badge' => 'Public'], ]; @endphp @foreach($dnsProviders as $provider)
{{ $provider['name'] }} {{ $provider['badge'] }}
{{ $provider['domain'] }}
@endforeach @else

No IPv6 address assigned

@endif

@ = root domain • *.@ = wildcard subdomains

Notes

(Markdown supported)
@if($isEditingNotes)
@if($notesError)

{{ $notesError }}

@endif
@else
@if($notes) {!! \Illuminate\Support\Str::markdown(e($notes), ['allow_unsafe_links' => false, 'renderer' => ['soft_break' => "
"]]) !!} @else

No notes yet. Click Edit to add some.

@endif
@endif

Export Error

No notes available to export. Add some notes first.

@if(stripos($server->os->name, 'Windows') !== false)

Windows Configuration

Windows doesn't support cloud-init for automated configuration. You'll need to manually configure networking, hostname, and system settings.

Network Setup

Configure IP addresses manually in Windows Network Settings.

Licensing

You must maintain valid Windows licensing.

Compliance

Non-compliant installations may be suspended.

@endif

Server Information

Specifications

vCPU Cores {{ $allocatedCores }} cores
Memory @if($allocatedMemoryMiB > 0) {{ number_format($allocatedMemoryMiB / 1024, 1) }} GiB @else {{ \Illuminate\Support\Number::fileSize(bytes: $memoryTotal) }} @endif
Storage @if($allocatedDiskGiB > 0) {{ $allocatedDiskGiB }} GiB @elseif($diskTotal > 0) {{ number_format($diskTotal / 1024 / 1024 / 1024, 0) }} GiB @else N/A @endif
Backups {{ $allocatedBackups > 0 ? $allocatedBackups . ' slots' : 'Disabled' }}

Network Transfer

Inbound {{ \Illuminate\Support\Number::fileSize(bytes: $totalNetIn) }}
Outbound {{ \Illuminate\Support\Number::fileSize(bytes: $totalNetOut) }}
Total {{ \Illuminate\Support\Number::fileSize(bytes: $totalNetIn + $totalNetOut) }}

Billing

Product {{ $productName }}
Status {{ ucfirst($serviceStatus) }}
Renewal {{ $serviceExpires ? $serviceExpires->format('M d, Y') : 'N/A' }}

Infrastructure

Datacenter {{ $locationName }}
Node {{ $nodeName }}
VM ID {{ $server->vm_id ?? 'N/A' }}

Identifiers

Server ID {{ $server->id }}
Service ID {{ $server->service_id ?? 'N/A' }}
Created {{ $server->created_at?->format('M d, Y') ?? 'N/A' }}

Live Usage

CPU
{{ $cpuUsagePercent }}%
Memory
{{ $memoryPercent }}%
@if($diskTotal > 0)
Disk
{{ $diskPercent }}%
@endif
<<<<<<< HEAD
=======
>>>>>>> c5530e923149080e7d739823785456eb3267393f @once @endonce @endif