[ 'url' => env('APP_URL', 'https://panel.hexahost.de'), ], 'proxmox' => [ 'url' => env('PROXMOX_URL', 'https://proxmox.example.com:8006'), 'token' => env('PROXMOX_TOKEN'), 'node' => env('PROXMOX_NODE', 'hyperion'), 'storage' => env('PROXMOX_STORAGE', 'vmdata'), 'bridge' => env('PROXMOX_BRIDGE', 'vmbr0'), 'public_bridge' => env('PROXMOX_PUBLIC_BRIDGE', 'vmbr1'), 'template_vmid' => env('PROXMOX_TEMPLATE_VMID'), 'timeout' => (int) env('PROXMOX_TIMEOUT', 120), 'verify_ssl' => env('PROXMOX_VERIFY_SSL', true), 'iso_storage' => env('PROXMOX_ISO_STORAGE', 'ISO'), 'iso_device' => env('PROXMOX_ISO_DEVICE', 'ide2'), 'console_ws_url' => env('PROXMOX_CONSOLE_WS_URL'), 'backup_storage' => env('PROXMOX_BACKUP_STORAGE', 'inett-PBS'), ], 'vmid' => [ 'range_start' => (int) env('VMID_RANGE_START', 2000), 'range_end' => (int) env('VMID_RANGE_END', 2999), 'release_after_hours' => (int) env('VMID_RELEASE_AFTER_HOURS', 48), ], 'snapshots' => [ 'retention_hours' => (int) env('SNAPSHOT_RETENTION_HOURS', 48), 'auto_before_destructive' => env('SNAPSHOT_AUTO_BEFORE_DESTRUCTIVE', true), ], 'backups' => [ 'max_per_customer' => (int) env('MAX_BACKUPS_PER_CUSTOMER', 4), 'pbs_storage' => env('PROXMOX_BACKUP_STORAGE', 'inett-PBS'), 'enabled' => env('BACKUPS_ENABLED', false), ], 'iso_upload' => [ 'enabled' => env('ISO_UPLOAD_ENABLED', true), 'max_per_customer' => (int) env('ISO_UPLOAD_MAX_PER_CUSTOMER', 1), 'max_size_mb' => (int) env('ISO_UPLOAD_MAX_SIZE_MB', 10240), 'retention_hours' => (int) env('ISO_UPLOAD_RETENTION_HOURS', 48), ], 'vm_power' => [ 'rate_limit_per_minute' => (int) env('VM_POWER_RATE_LIMIT', 20), ], 'traefik' => [ 'dynamic_config_path' => env('TRAEFIK_DYNAMIC_CONFIG_PATH', storage_path('traefik/dynamic/customers.yaml')), 'entrypoint' => env('TRAEFIK_ENTRYPOINT', 'websecure'), 'cert_resolver' => env('TRAEFIK_CERT_RESOLVER', 'letsencrypt'), 'backend_port' => (int) env('TRAEFIK_BACKEND_PORT', 80), 'public_ip' => env('TRAEFIK_PUBLIC_IP'), 'reload_command' => env('TRAEFIK_RELOAD_COMMAND'), ], 'plesk' => [ 'url' => env('PLESK_URL', 'https://plesk.example.com:8443'), 'user' => env('PLESK_USER'), 'password' => env('PLESK_PASS'), 'base_domain' => env('PLESK_BASE_DOMAIN', 'hexahost.de'), 'timeout' => (int) env('PLESK_TIMEOUT', 30), 'verify_ssl' => env('PLESK_VERIFY_SSL', true), 'mail_enabled' => env('PLESK_MAIL_ENABLED', true), ], 'network' => [ 'gateway' => env('HOSTING_GATEWAY', '10.32.0.1'), 'cidr' => (int) env('HOSTING_NETWORK_CIDR', 24), 'ip_pool_start' => env('HOSTING_IP_POOL_START', '10.32.0.10'), 'ip_pool_end' => env('HOSTING_IP_POOL_END', '10.32.0.254'), ], 'public_network' => [ 'gateway' => env('HOSTING_PUBLIC_GATEWAY', '185.45.149.241'), 'cidr' => (int) env('HOSTING_PUBLIC_CIDR', 28), 'ip_pool_start' => env('HOSTING_PUBLIC_POOL_START', '185.45.149.246'), 'ip_pool_end' => env('HOSTING_PUBLIC_POOL_END', '185.45.149.252'), ], 'whmcs' => [ 'enabled' => env('WHMCS_ENABLED', true), 'api_secret' => env('WHMCS_API_SECRET'), 'allowed_ips' => array_filter(array_map('trim', explode(',', env('WHMCS_ALLOWED_IPS', '')))), 'replay_window_seconds' => (int) env('WHMCS_REPLAY_WINDOW', 300), ], 'defaults' => [ 'cpu' => (int) env('HOSTING_DEFAULT_CPU', 2), 'ram' => (int) env('HOSTING_DEFAULT_RAM', 2048), 'disk' => (int) env('HOSTING_DEFAULT_DISK', 32), ], 'security' => [ 'admin_2fa_required' => env('ADMIN_2FA_REQUIRED', true), 'login_max_attempts' => (int) env('LOGIN_MAX_ATTEMPTS', 5), ], 'console' => [ 'proxy_enabled' => env('CONSOLE_PROXY_ENABLED', false), 'proxy_ws_url' => env('CONSOLE_PROXY_WS_URL'), 'proxy_secret' => env('CONSOLE_PROXY_SECRET'), 'proxy_validate_url' => env('CONSOLE_PROXY_VALIDATE_URL'), ], 'notifications' => [ 'webhook_url' => env('HOSTING_WEBHOOK_URL'), ], ];