@props([ 'server', 'view', 'status' => null, 'statusPolling' => false, 'statusPollingInterval' => '30s', ]) @php $vmStatus = optional($status)->status; $pollSuffix = $statusPollingInterval ? '.' . $statusPollingInterval : ''; $pollAttribute = $statusPolling ? 'wire:poll' . $pollSuffix . '="loadVmStatus"' : ''; @endphp
@if($server->status === 'active')
@php $advancedOnlyViews = ['boot-order', 'cloud-init', 'display', 'system', 'subdomain', 'statistics', 'help', 'firewall']; $isAdvancedOnlyView = in_array($view, $advancedOnlyViews); @endphp
user_set_icon . "'" : 'null' }}, initialColor: {{ $server->user_set_icon_color ? "'" . $server->user_set_icon_color . "'" : 'null' }}, initialPrefix: {{ $server->user_set_icon_prefix ? "'" . $server->user_set_icon_prefix . "'" : "'ri'" }} })">

Customize Server Icon

@php $iconList = [ // Remix Icons ['icon' => 'server-line', 'prefix' => 'ri'], ['icon' => 'database-2-line', 'prefix' => 'ri'], ['icon' => 'computer-line', 'prefix' => 'ri'], ['icon' => 'cpu-line', 'prefix' => 'ri'], ['icon' => 'hard-drive-2-line', 'prefix' => 'ri'], ['icon' => 'cloud-line', 'prefix' => 'ri'], ['icon' => 'terminal-box-line', 'prefix' => 'ri'], ['icon' => 'code-s-slash-line', 'prefix' => 'ri'], ['icon' => 'braces-line', 'prefix' => 'ri'], ['icon' => 'global-line', 'prefix' => 'ri'], ['icon' => 'earth-line', 'prefix' => 'ri'], ['icon' => 'wifi-line', 'prefix' => 'ri'], ['icon' => 'signal-tower-line', 'prefix' => 'ri'], ['icon' => 'shield-check-line', 'prefix' => 'ri'], ['icon' => 'shield-keyhole-line', 'prefix' => 'ri'], ['icon' => 'lock-line', 'prefix' => 'ri'], ['icon' => 'lock-unlock-line', 'prefix' => 'ri'], ['icon' => 'key-2-line', 'prefix' => 'ri'], ['icon' => 'rocket-line', 'prefix' => 'ri'], ['icon' => 'rocket-2-line', 'prefix' => 'ri'], ['icon' => 'send-plane-line', 'prefix' => 'ri'], ['icon' => 'flashlight-line', 'prefix' => 'ri'], ['icon' => 'fire-line', 'prefix' => 'ri'], ['icon' => 'sparkling-line', 'prefix' => 'ri'], ['icon' => 'star-line', 'prefix' => 'ri'], ['icon' => 'heart-line', 'prefix' => 'ri'], ['icon' => 'home-line', 'prefix' => 'ri'], ['icon' => 'home-2-line', 'prefix' => 'ri'], ['icon' => 'building-line', 'prefix' => 'ri'], ['icon' => 'building-2-line', 'prefix' => 'ri'], ['icon' => 'store-line', 'prefix' => 'ri'], ['icon' => 'box-3-line', 'prefix' => 'ri'], ['icon' => 'archive-line', 'prefix' => 'ri'], ['icon' => 'inbox-line', 'prefix' => 'ri'], ['icon' => 'inbox-2-line', 'prefix' => 'ri'], ['icon' => 'folder-line', 'prefix' => 'ri'], ['icon' => 'folder-open-line', 'prefix' => 'ri'], ['icon' => 'settings-3-line', 'prefix' => 'ri'], ['icon' => 'settings-4-line', 'prefix' => 'ri'], ['icon' => 'tools-line', 'prefix' => 'ri'], ['icon' => 'hammer-line', 'prefix' => 'ri'], ['icon' => 'flask-line', 'prefix' => 'ri'], ['icon' => 'bug-line', 'prefix' => 'ri'], ['icon' => 'puzzle-line', 'prefix' => 'ri'], ['icon' => 'bar-chart-box-line', 'prefix' => 'ri'], ['icon' => 'pie-chart-line', 'prefix' => 'ri'], ['icon' => 'line-chart-line', 'prefix' => 'ri'], ['icon' => 'money-dollar-circle-line', 'prefix' => 'ri'], ['icon' => 'money-euro-circle-line', 'prefix' => 'ri'], ['icon' => 'bank-card-line', 'prefix' => 'ri'], ['icon' => 'wallet-line', 'prefix' => 'ri'], ['icon' => 'user-line', 'prefix' => 'ri'], ['icon' => 'user-3-line', 'prefix' => 'ri'], ['icon' => 'group-line', 'prefix' => 'ri'], ['icon' => 'team-line', 'prefix' => 'ri'], ['icon' => 'mail-line', 'prefix' => 'ri'], ['icon' => 'mail-open-line', 'prefix' => 'ri'], ['icon' => 'chat-3-line', 'prefix' => 'ri'], ['icon' => 'discuss-line', 'prefix' => 'ri'], ['icon' => 'camera-line', 'prefix' => 'ri'], ['icon' => 'vidicon-line', 'prefix' => 'ri'], ['icon' => 'film-line', 'prefix' => 'ri'], ['icon' => 'music-line', 'prefix' => 'ri'], ['icon' => 'book-open-line', 'prefix' => 'ri'], ['icon' => 'file-text-line', 'prefix' => 'ri'], ['icon' => 'sun-line', 'prefix' => 'ri'], ['icon' => 'moon-line', 'prefix' => 'ri'], ['icon' => 'palette-line', 'prefix' => 'ri'], ['icon' => 'brush-line', 'prefix' => 'ri'], ['icon' => 'trophy-line', 'prefix' => 'ri'], ['icon' => 'graduation-cap-line', 'prefix' => 'ri'], ['icon' => 'lightbulb-line', 'prefix' => 'ri'], ['icon' => 'fingerprint-line', 'prefix' => 'ri'], ['icon' => 'eye-line', 'prefix' => 'ri'], ['icon' => 'map-2-line', 'prefix' => 'ri'], ['icon' => 'map-pin-line', 'prefix' => 'ri'], ['icon' => 'time-line', 'prefix' => 'ri'], ['icon' => 'calendar-line', 'prefix' => 'ri'], ['icon' => 'gift-line', 'prefix' => 'ri'], ['icon' => 'cake-2-line', 'prefix' => 'ri'], ['icon' => 'gamepad-line', 'prefix' => 'ri'], ['icon' => 'ghost-line', 'prefix' => 'ri'], ['icon' => 'aliens-line', 'prefix' => 'ri'], ['icon' => 'space-ship-line', 'prefix' => 'ri'], ['icon' => 'android-line', 'prefix' => 'ri'], ['icon' => 'apple-line', 'prefix' => 'ri'], ['icon' => 'windows-line', 'prefix' => 'ri'], ['icon' => 'ubuntu-line', 'prefix' => 'ri'], ['icon' => 'github-line', 'prefix' => 'ri'], ['icon' => 'gitlab-line', 'prefix' => 'ri'], ['icon' => 'discord-line', 'prefix' => 'ri'], ['icon' => 'slack-line', 'prefix' => 'ri'], ['icon' => 'desktop', 'prefix' => 'vaadin'], ['icon' => 'laptop', 'prefix' => 'vaadin'], ['icon' => 'cluster', 'prefix' => 'vaadin'], ['icon' => 'cloud', 'prefix' => 'vaadin'], ['icon' => 'cloud-o', 'prefix' => 'vaadin'], ['icon' => 'cloud-upload', 'prefix' => 'vaadin'], ['icon' => 'cloud-download', 'prefix' => 'vaadin'], ['icon' => 'storage', 'prefix' => 'vaadin'], ['icon' => 'harddrive', 'prefix' => 'vaadin'], ['icon' => 'compile', 'prefix' => 'vaadin'], ['icon' => 'code', 'prefix' => 'vaadin'], ['icon' => 'terminal', 'prefix' => 'vaadin'], ['icon' => 'globe', 'prefix' => 'vaadin'], ['icon' => 'globe-wire', 'prefix' => 'vaadin'], ['icon' => 'connect', 'prefix' => 'vaadin'], ['icon' => 'sitemap', 'prefix' => 'vaadin'], ['icon' => 'automation', 'prefix' => 'vaadin'], ['icon' => 'cogs', 'prefix' => 'vaadin'], ['icon' => 'cog', 'prefix' => 'vaadin'], ['icon' => 'wrench', 'prefix' => 'vaadin'], ['icon' => 'tools', 'prefix' => 'vaadin'], ['icon' => 'hammer', 'prefix' => 'vaadin'], ['icon' => 'shield', 'prefix' => 'vaadin'], ['icon' => 'lock', 'prefix' => 'vaadin'], ['icon' => 'unlock', 'prefix' => 'vaadin'], ['icon' => 'key', 'prefix' => 'vaadin'], ['icon' => 'key-o', 'prefix' => 'vaadin'], ['icon' => 'rocket', 'prefix' => 'vaadin'], ['icon' => 'flash', 'prefix' => 'vaadin'], ['icon' => 'bolt', 'prefix' => 'vaadin'], ['icon' => 'fire', 'prefix' => 'vaadin'], ['icon' => 'star', 'prefix' => 'vaadin'], ['icon' => 'star-o', 'prefix' => 'vaadin'], ['icon' => 'heart', 'prefix' => 'vaadin'], ['icon' => 'heart-o', 'prefix' => 'vaadin'], ['icon' => 'home', 'prefix' => 'vaadin'], ['icon' => 'home-o', 'prefix' => 'vaadin'], ['icon' => 'building', 'prefix' => 'vaadin'], ['icon' => 'building-o', 'prefix' => 'vaadin'], ['icon' => 'office', 'prefix' => 'vaadin'], ['icon' => 'server', 'prefix' => 'vaadin'], ['icon' => 'database', 'prefix' => 'vaadin'], ['icon' => 'cloud', 'prefix' => 'vaadin'], ['icon' => 'cloud-o', 'prefix' => 'vaadin'], ['icon' => 'storage', 'prefix' => 'vaadin'], ['icon' => 'harddrive', 'prefix' => 'vaadin'], ['icon' => 'package', 'prefix' => 'vaadin'], ['icon' => 'archive', 'prefix' => 'vaadin'], ['icon' => 'inbox', 'prefix' => 'vaadin'], ['icon' => 'folder', 'prefix' => 'vaadin'], ['icon' => 'folder-o', 'prefix' => 'vaadin'], ['icon' => 'folder-open', 'prefix' => 'vaadin'], ['icon' => 'folder-open-o', 'prefix' => 'vaadin'], ['icon' => 'bug', 'prefix' => 'vaadin'], ['icon' => 'chart', 'prefix' => 'vaadin'], ['icon' => 'bar-chart', 'prefix' => 'vaadin'], ['icon' => 'line-chart', 'prefix' => 'vaadin'], ['icon' => 'pie-chart', 'prefix' => 'vaadin'], ['icon' => 'dashboard', 'prefix' => 'vaadin'], ['icon' => 'progressbar', 'prefix' => 'vaadin'], ['icon' => 'money', 'prefix' => 'vaadin'], ['icon' => 'dollar', 'prefix' => 'vaadin'], ['icon' => 'euro', 'prefix' => 'vaadin'], ['icon' => 'credit-card', 'prefix' => 'vaadin'], ['icon' => 'wallet', 'prefix' => 'vaadin'], ['icon' => 'user', 'prefix' => 'vaadin'], ['icon' => 'users', 'prefix' => 'vaadin'], ['icon' => 'group', 'prefix' => 'vaadin'], ['icon' => 'user-card', 'prefix' => 'vaadin'], ['icon' => 'male', 'prefix' => 'vaadin'], ['icon' => 'female', 'prefix' => 'vaadin'], ['icon' => 'envelope', 'prefix' => 'vaadin'], ['icon' => 'envelope-o', 'prefix' => 'vaadin'], ['icon' => 'envelope-open', 'prefix' => 'vaadin'], ['icon' => 'mailbox', 'prefix' => 'vaadin'], ['icon' => 'comment', 'prefix' => 'vaadin'], ['icon' => 'comments', 'prefix' => 'vaadin'], ['icon' => 'comments-o', 'prefix' => 'vaadin'], ['icon' => 'camera', 'prefix' => 'vaadin'], ['icon' => 'film', 'prefix' => 'vaadin'], ['icon' => 'music', 'prefix' => 'vaadin'], ['icon' => 'book', 'prefix' => 'vaadin'], ['icon' => 'file-text', 'prefix' => 'vaadin'], ['icon' => 'file-text-o', 'prefix' => 'vaadin'], ['icon' => 'sun-o', 'prefix' => 'vaadin'], ['icon' => 'moon-o', 'prefix' => 'vaadin'], ['icon' => 'palete', 'prefix' => 'vaadin'], ['icon' => 'paintbrush', 'prefix' => 'vaadin'], ['icon' => 'trophy', 'prefix' => 'vaadin'], ['icon' => 'academy-cap', 'prefix' => 'vaadin'], ['icon' => 'lightbulb', 'prefix' => 'vaadin'], ['icon' => 'eye', 'prefix' => 'vaadin'], ['icon' => 'eye-slash', 'prefix' => 'vaadin'], ['icon' => 'map-marker', 'prefix' => 'vaadin'], ['icon' => 'location-arrow', 'prefix' => 'vaadin'], ['icon' => 'clock', 'prefix' => 'vaadin'], ['icon' => 'calendar', 'prefix' => 'vaadin'], ['icon' => 'calendar-o', 'prefix' => 'vaadin'], ['icon' => 'gift', 'prefix' => 'vaadin'], ['icon' => 'gamepad', 'prefix' => 'vaadin'], ['icon' => 'controller', 'prefix' => 'vaadin'], // File Icons (codeat3/blade-file-icons) ['icon' => 'docker', 'prefix' => 'fileicon'], ['icon' => 'kubernetes', 'prefix' => 'fileicon'], ['icon' => 'nginx', 'prefix' => 'fileicon'], ['icon' => 'alpine-linux', 'prefix' => 'fileicon'], ['icon' => 'arch-linux', 'prefix' => 'fileicon'], ['icon' => 'xubuntu', 'prefix' => 'fileicon'], ['icon' => 'virtualbox', 'prefix' => 'fileicon'], ['icon' => 'virtualbox-alt', 'prefix' => 'fileicon'], ['icon' => 'vmware', 'prefix' => 'fileicon'], ['icon' => 'terminal', 'prefix' => 'fileicon'], ['icon' => 'powershell', 'prefix' => 'fileicon'], ['icon' => 'serverless', 'prefix' => 'fileicon'], ['icon' => 'devcontainer', 'prefix' => 'fileicon'], ['icon' => 'config', 'prefix' => 'fileicon'], ['icon' => 'editorconfig', 'prefix' => 'fileicon'], ['icon' => 'php', 'prefix' => 'fileicon'], ['icon' => 'go', 'prefix' => 'fileicon'], ['icon' => 'kotlin', 'prefix' => 'fileicon'], ['icon' => 'c', 'prefix' => 'fileicon'], ['icon' => 'npm', 'prefix' => 'fileicon'], ['icon' => 'yarn', 'prefix' => 'fileicon'], ['icon' => 'vscode', 'prefix' => 'fileicon'], ['icon' => 'nano', 'prefix' => 'fileicon'], ['icon' => 'gitlab', 'prefix' => 'fileicon'], ['icon' => 'sqlite', 'prefix' => 'fileicon'], ['icon' => 'json-1', 'prefix' => 'fileicon'], ['icon' => 'json-2', 'prefix' => 'fileicon'], ['icon' => 'yaml', 'prefix' => 'fileicon'], ['icon' => 'typescript', 'prefix' => 'fileicon'], ['icon' => 'vue', 'prefix' => 'fileicon'], ['icon' => 'svelte', 'prefix' => 'fileicon'], ['icon' => 'laravel', 'prefix' => 'fileicon'], ['icon' => 'flask', 'prefix' => 'fileicon'], ['icon' => 'terraform', 'prefix' => 'fileicon'], ['icon' => 'ansible', 'prefix' => 'fileicon'], ['icon' => 'ansible-alt', 'prefix' => 'fileicon'], ['icon' => 'puppet', 'prefix' => 'fileicon'], ['icon' => 'jenkins', 'prefix' => 'fileicon'], ['icon' => 'jsx', 'prefix' => 'fileicon'], ['icon' => 'tsx', 'prefix' => 'fileicon'], ['icon' => 'perl6', 'prefix' => 'fileicon'], ['icon' => 'rubygems', 'prefix' => 'fileicon'], ['icon' => 'toml', 'prefix' => 'fileicon'], ['icon' => 'tailwind', 'prefix' => 'fileicon'], ['icon' => 'webpack', 'prefix' => 'fileicon'], ['icon' => 'vite', 'prefix' => 'fileicon'], ['icon' => 'nextjs', 'prefix' => 'fileicon'], ['icon' => 'nestjs', 'prefix' => 'fileicon'], ['icon' => 'nodemon', 'prefix' => 'fileicon'], ['icon' => 'vagrant', 'prefix' => 'fileicon'], ['icon' => 'saltstack', 'prefix' => 'fileicon'], ['icon' => 'chef', 'prefix' => 'fileicon'], ['icon' => 'circleci', 'prefix' => 'fileicon'], ['icon' => 'r', 'prefix' => 'fileicon'], ['icon' => 'apple', 'prefix' => 'fileicon'], ['icon' => 'arduino', 'prefix' => 'fileicon'], ['icon' => 'babel', 'prefix' => 'fileicon'], ['icon' => 'composer', 'prefix' => 'fileicon'], ['icon' => 'snyk', 'prefix' => 'fileicon'], ['icon' => 'storybook', 'prefix' => 'fileicon'], // Dev Icons (codeat3/blade-devicons) - Technology logos ['icon' => 'docker', 'prefix' => 'devicon'], ['icon' => 'kubernetes', 'prefix' => 'devicon'], ['icon' => 'linux', 'prefix' => 'devicon'], ['icon' => 'ubuntu', 'prefix' => 'devicon'], ['icon' => 'debian', 'prefix' => 'devicon'], ['icon' => 'centos', 'prefix' => 'devicon'], ['icon' => 'redhat', 'prefix' => 'devicon'], ['icon' => 'fedora', 'prefix' => 'devicon'], ['icon' => 'opensuse', 'prefix' => 'devicon'], ['icon' => 'nixos', 'prefix' => 'devicon'], ['icon' => 'gentoo', 'prefix' => 'devicon'], ['icon' => 'android', 'prefix' => 'devicon'], ['icon' => 'apache', 'prefix' => 'devicon'], ['icon' => 'mysql', 'prefix' => 'devicon'], ['icon' => 'postgresql', 'prefix' => 'devicon'], ['icon' => 'mongodb', 'prefix' => 'devicon'], ['icon' => 'redis', 'prefix' => 'devicon'], ['icon' => 'sqlite', 'prefix' => 'devicon'], ['icon' => 'neo4j', 'prefix' => 'devicon'], ['icon' => 'couchdb', 'prefix' => 'devicon'], ['icon' => 'microsoftsqlserver', 'prefix' => 'devicon'], ['icon' => 'python', 'prefix' => 'devicon'], ['icon' => 'php', 'prefix' => 'devicon'], ['icon' => 'java', 'prefix' => 'devicon'], ['icon' => 'javascript', 'prefix' => 'devicon'], ['icon' => 'typescript', 'prefix' => 'devicon'], ['icon' => 'nodejs', 'prefix' => 'devicon'], ['icon' => 'go', 'prefix' => 'devicon'], ['icon' => 'rust', 'prefix' => 'devicon'], ['icon' => 'c', 'prefix' => 'devicon'], ['icon' => 'cplusplus', 'prefix' => 'devicon'], ['icon' => 'csharp', 'prefix' => 'devicon'], ['icon' => 'ruby', 'prefix' => 'devicon'], ['icon' => 'perl', 'prefix' => 'devicon'], ['icon' => 'swift', 'prefix' => 'devicon'], ['icon' => 'kotlin', 'prefix' => 'devicon'], ['icon' => 'scala', 'prefix' => 'devicon'], ['icon' => 'r', 'prefix' => 'devicon'], ['icon' => 'lua', 'prefix' => 'devicon'], ['icon' => 'dart', 'prefix' => 'devicon'], ['icon' => 'elixir', 'prefix' => 'devicon'], ['icon' => 'erlang', 'prefix' => 'devicon'], ['icon' => 'haskell', 'prefix' => 'devicon'], ['icon' => 'julia', 'prefix' => 'devicon'], ['icon' => 'bash', 'prefix' => 'devicon'], ['icon' => 'html5', 'prefix' => 'devicon'], ['icon' => 'css3', 'prefix' => 'devicon'], ['icon' => 'laravel', 'prefix' => 'devicon'], ['icon' => 'django', 'prefix' => 'devicon'], ['icon' => 'rails', 'prefix' => 'devicon'], ['icon' => 'spring', 'prefix' => 'devicon'], ['icon' => 'fastapi', 'prefix' => 'devicon'], ['icon' => 'nestjs', 'prefix' => 'devicon'], ['icon' => 'vuejs', 'prefix' => 'devicon'], ['icon' => 'angularjs', 'prefix' => 'devicon'], ['icon' => 'svelte', 'prefix' => 'devicon'], ['icon' => 'nuxtjs', 'prefix' => 'devicon'], ['icon' => 'gatsby', 'prefix' => 'devicon'], ['icon' => 'bootstrap', 'prefix' => 'devicon'], ['icon' => 'tailwindcss', 'prefix' => 'devicon'], ['icon' => 'materialui', 'prefix' => 'devicon'], ['icon' => 'git', 'prefix' => 'devicon'], ['icon' => 'gitlab', 'prefix' => 'devicon'], ['icon' => 'azure', 'prefix' => 'devicon'], ['icon' => 'googlecloud', 'prefix' => 'devicon'], ['icon' => 'digitalocean', 'prefix' => 'devicon'], ['icon' => 'heroku', 'prefix' => 'devicon'], ['icon' => 'firebase', 'prefix' => 'devicon'], ['icon' => 'terraform', 'prefix' => 'devicon'], ['icon' => 'ansible', 'prefix' => 'devicon'], ['icon' => 'jenkins', 'prefix' => 'devicon'], ['icon' => 'circleci', 'prefix' => 'devicon'], ['icon' => 'travis', 'prefix' => 'devicon'], ['icon' => 'argocd', 'prefix' => 'devicon'], ['icon' => 'vagrant', 'prefix' => 'devicon'], ['icon' => 'podman', 'prefix' => 'devicon'], ['icon' => 'webpack', 'prefix' => 'devicon'], ['icon' => 'babel', 'prefix' => 'devicon'], ['icon' => 'gradle', 'prefix' => 'devicon'], ['icon' => 'vscode', 'prefix' => 'devicon'], ['icon' => 'visualstudio', 'prefix' => 'devicon'], ['icon' => 'intellij', 'prefix' => 'devicon'], ['icon' => 'pycharm', 'prefix' => 'devicon'], ['icon' => 'phpstorm', 'prefix' => 'devicon'], ['icon' => 'webstorm', 'prefix' => 'devicon'], ['icon' => 'vim', 'prefix' => 'devicon'], ['icon' => 'xcode', 'prefix' => 'devicon'], ['icon' => 'androidstudio', 'prefix' => 'devicon'], ['icon' => 'jupyter', 'prefix' => 'devicon'], ['icon' => 'chrome', 'prefix' => 'devicon'], ['icon' => 'firefox', 'prefix' => 'devicon'], ['icon' => 'safari', 'prefix' => 'devicon'], ['icon' => 'opera', 'prefix' => 'devicon'], ['icon' => 'wordpress', 'prefix' => 'devicon'], ['icon' => 'drupal', 'prefix' => 'devicon'], ['icon' => 'woocommerce', 'prefix' => 'devicon'], ['icon' => 'graphql', 'prefix' => 'devicon'], ['icon' => 'arduino', 'prefix' => 'devicon'], ['icon' => 'flutter', 'prefix' => 'devicon'], ['icon' => 'figma', 'prefix' => 'devicon'], ['icon' => 'photoshop', 'prefix' => 'devicon'], ['icon' => 'illustrator', 'prefix' => 'devicon'], ['icon' => 'premierepro', 'prefix' => 'devicon'], ['icon' => 'aftereffects', 'prefix' => 'devicon'], ['icon' => 'slack', 'prefix' => 'devicon'], ['icon' => 'trello', 'prefix' => 'devicon'], ['icon' => 'jira', 'prefix' => 'devicon'], ['icon' => 'putty', 'prefix' => 'devicon'], ['icon' => 'solidity', 'prefix' => 'devicon'], ]; @endphp @foreach($iconList as $iconData) @endforeach
Start
Stop (ACPI)
Reboot (ACPI)
Power Off
@if ($view !== 'statistics') @endif @php $tabs = [ ['label' => 'Overview', 'view' => 'overview', 'route' => route('proxmox.server.overview', ['server' => $server->id])], ['label' => 'Statistics', 'view' => 'statistics', 'route' => route('proxmox.server.statistics', ['server' => $server->id]), 'advanced' => true], [ 'label' => 'Hardware', 'dropdown' => true, 'items' => [ ['label' => 'Boot Settings', 'view' => 'boot-order', 'route' => route('proxmox.server.boot-order', ['server' => $server->id]), 'advanced' => true], ['label' => 'Display', 'view' => 'display', 'route' => route('proxmox.server.display', ['server' => $server->id]), 'advanced' => true], ['label' => 'Storage', 'view' => 'storage', 'route' => route('proxmox.server.storage', ['server' => $server->id]), 'advanced' => true], ['label' => 'System', 'view' => 'system', 'route' => route('proxmox.server.system', ['server' => $server->id]), 'advanced' => true], ] ], [ 'label' => 'Networking', 'dropdown' => true, 'items' => [ ['label' => 'Configuration', 'view' => 'network', 'route' => route('proxmox.server.network', ['server' => $server->id])], ['label' => 'Firewall', 'view' => 'firewall', 'route' => route('proxmox.server.firewall', ['server' => $server->id]), 'advanced' => true], ['label' => 'Subdomain', 'view' => 'subdomain', 'route' => route('proxmox.server.subdomain', ['server' => $server->id]), 'advanced' => true], ] ], ['label' => 'Cloud-init', 'view' => 'cloud-init', 'route' => route('proxmox.server.cloud-init', ['server' => $server->id]), 'advanced' => true], ]; if($server->service->product->settings()->where('key', 'backups')->first()?->value > 0) { $tabs[] = ['label' => 'Backups', 'view' => 'backups', 'route' => route('proxmox.server.backups', ['server' => $server->id])]; } if($server->node->vnc_enabled) { $tabs[] = [ 'label' => 'Console', 'dropdown' => true, 'items' => [ ['label' => 'NoVNC', 'view' => 'vnc', 'route' => route('proxmox.server.vnc', ['server' => $server->id])], ['label' => 'Xterm.js', 'view' => 'xterm', 'route' => route('proxmox.server.xterm', ['server' => $server->id])], ] ]; } $tabs[] = ['label' => 'Help', 'view' => 'help', 'route' => route('proxmox.server.help', ['server' => $server->id]), 'advanced' => true]; @endphp
@php // Find the current tab label, checking both regular tabs and dropdown items $currentLabel = 'Menu'; foreach ($tabs as $tab) { if (isset($tab['view']) && $tab['view'] === $view) { $currentLabel = $tab['label']; break; } if (isset($tab['dropdown']) && $tab['dropdown'] && isset($tab['items'])) { foreach ($tab['items'] as $item) { if ($item['view'] === $view) { $currentLabel = $item['label']; break 2; } } } } @endphp
Std
Adv
@foreach($tabs as $tab) @php $isAdvancedTab = $tab['advanced'] ?? false; $isDropdown = $tab['dropdown'] ?? false; @endphp @if($isDropdown) {{-- Render dropdown items as individual menu items for mobile --}}
{{ $tab['label'] }}
@foreach($tab['items'] as $item) @php $itemAdvanced = $item['advanced'] ?? false; @endphp @endforeach @else @endif @endforeach
{{ $slot }}
@else @php $statuses = [ 'suspended' => [ 'color' => 'text-yellow-500', 'message' => 'This server is suspended. Please contact support for more information.' ], 'installing' => [ 'color' => 'text-blue-500', 'message' => '' ], ]; @endphp
@if($server->status === 'installing')
Virtnet.bond

Creating Server

  • Telling the memory to try harder
  • Begging the network to behave (again)
  • Pretending the storage is organized
  • Asking the CPU to stop being dramatic
  • Informing telemetry it missed everything
  • Encouraging the firewall to chill out
  • Reminding the logs nobody reads them
  • Lecturing the cluster to stop gossiping
  • Asking the API politely to behave today
  • Calming down the swap space (it is stressed)
GLaDOS r4.32-03

GLaDOS - "Still Alive"

Congrats! You found a hidden Easter egg! Enjoy the tune and the same love Virtnet.bond has for the Portal series and all video games! We might be serious about work, but we're still gamers at heart.

Portal - "Still Alive" by Ellen McLain (voice of GLaDOS)
Virtnet.bond claims no rights to the "GLaDOS" name or the "Still Alive" audio content. This content is used under the doctrine of fair use (17 U.S. Code § 107 – Limitations on exclusive rights: Fair use). It is provided for entertainment and cultural reference purposes only. All rights to the aforementioned content are retained by their respective copyright holders.
@else

Oops!

@php $message = $statuses[$server->status]['message'] ?? "This server is currently inactive. Please view the Services tab in the Dashboard to see more information about the current state of this server. If more information is required, please contact support via the support portal under Tickets. This message can be displayed after a service is suspended, cancelled, revoked, or potentially in error. If you believe this message has been displayed in error, please contact us via a ticket and be sure to include the following information: VM{$server->vm_id}-ID{$server->id}-{$server->status}."; @endphp

{!! $message !!}

@endif
@endif