initial commit

This commit is contained in:
TheOnlyMace
2026-05-17 13:26:14 +02:00
commit 75299b723d
176 changed files with 20327 additions and 0 deletions

115
config/hosting.php Normal file
View File

@@ -0,0 +1,115 @@
<?php
return [
'panel' => [
'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'),
],
];