Files
isaaccladandCursor b6c8ac343f Extract Ladill Servers as standalone app at servers.ladill.com.
VPS and dedicated server ordering, managed panels, SSO, billing, and launcher integration — forked from hosting infrastructure with server-focused routes and dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 19:18:30 +00:00

704 lines
28 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
return [
/*
|--------------------------------------------------------------------------
| Contabo API Configuration
|--------------------------------------------------------------------------
|
| Credentials for the Contabo Compute Management API.
| Used for provisioning VPS and VDS instances.
|
*/
'contabo' => [
'client_id' => env('CONTABO_CLIENT_ID'),
'client_secret' => env('CONTABO_CLIENT_SECRET'),
'api_user' => env('CONTABO_API_USER'),
'api_password' => env('CONTABO_API_PASSWORD'),
'product_catalog_endpoint' => env('CONTABO_PRODUCT_CATALOG_ENDPOINT'),
],
/*
|--------------------------------------------------------------------------
| Pricing Configuration
|--------------------------------------------------------------------------
|
| Dynamic pricing settings for VPS/Dedicated servers.
| Base prices from Contabo are in USD, converted to GHS using exchange rate.
|
*/
'pricing' => [
'base_currency' => 'USD',
'display_currency' => 'GHS',
// Fallback rate used when live API fails
'fallback_usd_to_ghs_rate' => env('FALLBACK_USD_TO_GHS_RATE', 15.50),
// Profit margins (percentage on top of converted Contabo USD price)
'margins' => [
'vps' => env('VPS_PROFIT_MARGIN', 45),
'dedicated' => env('DEDICATED_PROFIT_MARGIN', 30),
],
'contabo_price_cache_ttl' => env('CONTABO_PRICE_CACHE_TTL', 3600),
'term_discounts' => [
'quarterly' => 5,
'semiannual' => 10,
'yearly' => 20,
],
'setup_fee_rules' => [
// VPS 10 only — monthly and semiannual cycles carry a setup fee equal to 1× the monthly price
[
'product_ids' => ['V91'],
'billing_cycles' => ['monthly', 'semiannual'],
'monthly_price_multiplier' => 1,
'label' => 'One-time setup fee',
],
// Dedicated servers — fixed EUR fee that decreases with longer commitment; waived on yearly
[
'product_ids' => ['amd-ryzen-12-cores', 'amd-genoa-24-cores'],
'billing_cycles' => ['monthly', 'quarterly', 'semiannual'],
'fixed_eur_by_cycle' => [
'monthly' => 39.99,
'quarterly' => 29.99,
'semiannual' => 19.99,
],
'label' => 'One-time setup fee',
],
],
// Fallback Contabo base prices in USD. Live API/feed prices are preferred.
// Keep these values as a fail-safe for API downtime.
'contabo_base_prices' => [
'V91' => ['monthly' => 4.99, 'name' => 'Cloud VPS 10 NVMe', 'cpu' => 3, 'ram_gb' => 8, 'disk_gb' => 75],
'V94' => ['monthly' => 7.00, 'name' => 'Cloud VPS 20 NVMe', 'cpu' => 6, 'ram_gb' => 12, 'disk_gb' => 100],
'V97' => ['monthly' => 14.00, 'name' => 'Cloud VPS 30 NVMe', 'cpu' => 8, 'ram_gb' => 24, 'disk_gb' => 200],
'V100' => ['monthly' => 25.00, 'name' => 'Cloud VPS 40 NVMe', 'cpu' => 12, 'ram_gb' => 48, 'disk_gb' => 250],
'amd-ryzen-12-cores' => ['monthly' => 104.64, 'name' => 'AMD Ryzen 12 Cores', 'cpu' => 12, 'ram_gb' => 64, 'disk_gb' => 1000],
'amd-genoa-24-cores' => ['monthly' => 184.21, 'name' => 'AMD Genoa 24 Cores', 'cpu' => 24, 'ram_gb' => 128, 'disk_gb' => 2000],
],
],
/*
|--------------------------------------------------------------------------
| Server Order Options
|--------------------------------------------------------------------------
|
| Surcharges shown here are Contabo-side monthly USD add-on costs before
| the Ladill exchange-rate conversion and product margin are applied.
| Update these values whenever Contabo changes its commercial pricing.
|
*/
'server_order' => [
'regions' => [
'EU' => ['label' => 'Europe (Germany)', 'monthly_usd' => 0.00, 'automated' => true],
'US-central' => ['label' => 'US Central', 'monthly_usd' => 0.00, 'automated' => true],
'US-east' => ['label' => 'US East', 'monthly_usd' => 0.00, 'automated' => true],
'US-west' => ['label' => 'US West', 'monthly_usd' => 0.00, 'automated' => true],
'UK' => ['label' => 'United Kingdom', 'monthly_usd' => 0.00, 'automated' => true],
'SIN' => ['label' => 'Singapore', 'monthly_usd' => 0.00, 'automated' => true],
'AUS' => ['label' => 'Australia', 'monthly_usd' => 0.00, 'automated' => true],
'JPN' => ['label' => 'Japan', 'monthly_usd' => 0.00, 'automated' => true],
],
'image_pricing_rules' => [
[
'key' => 'windows',
'label' => 'Windows Server',
'monthly_usd' => 9.30,
'match' => ['windows'],
'os_family' => 'windows',
'default_user' => 'administrator',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'ubuntu',
'label' => 'Ubuntu',
'monthly_usd' => 0.00,
'match' => ['ubuntu'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'rhel',
'label' => 'RHEL Variants',
'monthly_usd' => 0.00,
'match' => ['alma', 'rocky', 'rhel', 'centos'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
[
'key' => 'custom',
'label' => 'Custom Images',
'monthly_usd' => 0.00,
'custom_image' => true,
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => true,
'automated' => true,
],
[
'key' => 'linux',
'label' => 'Linux',
'monthly_usd' => 0.00,
'match' => ['debian', 'fedora', 'linux', 'bsd'],
'os_family' => 'linux',
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
],
'fallback_images' => [
[
'value' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb',
'label' => 'Ubuntu 22.04',
'description' => 'Fallback Ubuntu image',
'os_family' => 'linux',
'monthly_usd' => 0.00,
'default_user' => 'root',
'requires_custom_image_addon' => false,
'automated' => true,
],
],
'managed_stack_supported_images' => [
[
'value' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb',
'label' => 'Ubuntu 22.04 LTS',
'match' => ['ubuntu 22.04'],
'os_family' => 'linux',
],
[
'label' => 'Ubuntu 24.04 LTS',
'match' => ['ubuntu 24.04'],
'os_family' => 'linux',
],
[
'label' => 'Debian 12',
'match' => ['debian 12', 'bookworm'],
'os_family' => 'linux',
],
[
'label' => 'AlmaLinux',
'match' => ['almalinux', 'alma linux', 'alma'],
'os_family' => 'linux',
],
[
'label' => 'Rocky Linux',
'match' => ['rocky linux', 'rocky'],
'os_family' => 'linux',
],
[
'label' => 'Fedora',
'match' => ['fedora'],
'os_family' => 'linux',
],
[
'label' => 'openSUSE Leap',
'match' => ['opensuse leap', 'open suse leap', 'opensuse', 'leap'],
'os_family' => 'linux',
],
[
'label' => 'CentOS',
'match' => ['centos'],
'os_family' => 'linux',
],
],
'licenses' => [
'none' => [
'label' => 'Remote Login Only',
'description' => 'No hosting panel or commercial control-panel license.',
'monthly_usd' => 0.00,
'license' => null,
'panel' => null,
'automated' => true,
],
'ladill_panel' => [
'label' => 'Ladill Server Manager',
'description' => 'Manage power, status, and server details from the Ladill server manager.',
'monthly_usd' => 0.00,
'license' => null,
'panel' => 'ladill',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'requires_managed_stack_image' => true,
'automated' => true,
],
'plesk_host' => [
'label' => 'Plesk + Linux',
'description' => 'Plesk host edition on Linux.',
'monthly_usd' => 15.00,
'license' => 'PleskHost',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'plesk_windows' => [
'label' => 'Plesk + Windows',
'description' => 'Plesk on Windows Server.',
'monthly_usd' => 22.70,
'license' => 'PleskHost',
'compatible_os_families' => ['windows'],
'requires_image' => true,
'automated' => true,
],
'cpanel_5' => [
'label' => 'cPanel 5',
'description' => 'cPanel license for up to 5 accounts.',
'monthly_usd' => 35.99,
'license' => 'cPanel5',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_30' => [
'label' => 'cPanel 30',
'description' => 'cPanel license for up to 30 accounts.',
'monthly_usd' => 53.99,
'license' => 'cPanel30',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_50' => [
'label' => 'cPanel 50',
'description' => 'cPanel license for up to 50 accounts.',
'monthly_usd' => 53.99 + (0.49 * 20),
'license' => 'cPanel50',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_100' => [
'label' => 'cPanel 100',
'description' => 'cPanel license for up to 100 accounts.',
'monthly_usd' => 69.99,
'license' => 'cPanel100',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_150' => [
'label' => 'cPanel 150',
'description' => 'cPanel license for up to 150 accounts.',
'monthly_usd' => 69.99 + (0.49 * 50),
'license' => 'cPanel150',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_200' => [
'label' => 'cPanel 200',
'description' => 'cPanel license for up to 200 accounts.',
'monthly_usd' => 69.99 + (0.49 * 100),
'license' => 'cPanel200',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_250' => [
'label' => 'cPanel 250',
'description' => 'cPanel license for up to 250 accounts.',
'monthly_usd' => 69.99 + (0.49 * 150),
'license' => 'cPanel250',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_300' => [
'label' => 'cPanel 300',
'description' => 'cPanel license for up to 300 accounts.',
'monthly_usd' => 69.99 + (0.49 * 200),
'license' => 'cPanel300',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_350' => [
'label' => 'cPanel 350',
'description' => 'cPanel license for up to 350 accounts.',
'monthly_usd' => 69.99 + (0.49 * 250),
'license' => 'cPanel350',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_400' => [
'label' => 'cPanel 400',
'description' => 'cPanel license for up to 400 accounts.',
'monthly_usd' => 69.99 + (0.49 * 300),
'license' => 'cPanel400',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_450' => [
'label' => 'cPanel 450',
'description' => 'cPanel license for up to 450 accounts.',
'monthly_usd' => 69.99 + (0.49 * 350),
'license' => 'cPanel450',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_500' => [
'label' => 'cPanel 500',
'description' => 'cPanel license for up to 500 accounts.',
'monthly_usd' => 69.99 + (0.49 * 400),
'license' => 'cPanel500',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_550' => [
'label' => 'cPanel 550',
'description' => 'cPanel license for up to 550 accounts.',
'monthly_usd' => 69.99 + (0.49 * 450),
'license' => 'cPanel550',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_600' => [
'label' => 'cPanel 600',
'description' => 'cPanel license for up to 600 accounts.',
'monthly_usd' => 69.99 + (0.49 * 500),
'license' => 'cPanel600',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_650' => [
'label' => 'cPanel 650',
'description' => 'cPanel license for up to 650 accounts.',
'monthly_usd' => 69.99 + (0.49 * 550),
'license' => 'cPanel650',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_700' => [
'label' => 'cPanel 700',
'description' => 'cPanel license for up to 700 accounts.',
'monthly_usd' => 69.99 + (0.49 * 600),
'license' => 'cPanel700',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_750' => [
'label' => 'cPanel 750',
'description' => 'cPanel license for up to 750 accounts.',
'monthly_usd' => 69.99 + (0.49 * 650),
'license' => 'cPanel750',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_800' => [
'label' => 'cPanel 800',
'description' => 'cPanel license for up to 800 accounts.',
'monthly_usd' => 69.99 + (0.49 * 700),
'license' => 'cPanel800',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_850' => [
'label' => 'cPanel 850',
'description' => 'cPanel license for up to 850 accounts.',
'monthly_usd' => 69.99 + (0.49 * 750),
'license' => 'cPanel850',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_900' => [
'label' => 'cPanel 900',
'description' => 'cPanel license for up to 900 accounts.',
'monthly_usd' => 69.99 + (0.49 * 800),
'license' => 'cPanel900',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_950' => [
'label' => 'cPanel 950',
'description' => 'cPanel license for up to 950 accounts.',
'monthly_usd' => 69.99 + (0.49 * 850),
'license' => 'cPanel950',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'cpanel_1000' => [
'label' => 'cPanel 1000',
'description' => 'cPanel license for up to 1000 accounts.',
'monthly_usd' => 69.99 + (0.49 * 900),
'license' => 'cPanel1000',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
],
'applications' => [
'none' => [
'label' => 'No Preinstalled App',
'description' => 'Provision the server without an extra preinstalled application.',
'monthly_usd' => 0.00,
'automated' => true,
],
'webmin' => [
'label' => 'Webmin',
'description' => 'Free Webmin server panel installed automatically on Linux.',
'monthly_usd' => 0.00,
'cloud_init_preset' => 'webmin',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'webmin_lamp' => [
'label' => 'Webmin + LAMP',
'description' => 'Free Webmin plus Apache, MariaDB, and PHP on Linux.',
'monthly_usd' => 0.00,
'cloud_init_preset' => 'webmin_lamp',
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'ipfs_node' => [
'label' => 'IPFS Node',
'description' => 'Contabo application profile for IPFS nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_IPFS_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'flux_node' => [
'label' => 'Flux Node',
'description' => 'Contabo application profile for Flux nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_FLUX_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'horizon_node' => [
'label' => 'Horizen Node',
'description' => 'Contabo application profile for Horizen nodes.',
'monthly_usd' => 0.00,
'application_id' => env('CONTABO_APP_ID_HORIZON_NODE'),
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'ethereum_node' => [
'label' => 'Ethereum Node',
'description' => 'Contabo application profile for Ethereum 2.0 nodes.',
'monthly_usd' => 0.00,
'application_id' => null,
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
'bitcoin_node' => [
'label' => 'Bitcoin Full Node',
'description' => 'Contabo application profile for Bitcoin full nodes.',
'monthly_usd' => 0.00,
'application_id' => null,
'compatible_os_families' => ['linux'],
'requires_image' => true,
'automated' => true,
],
],
'additional_ip' => [
'none' => [
'label' => '1 IP Address',
'description' => 'Default primary IP only.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'one_extra' => [
'label' => '1 Additional IP',
'description' => 'Adds one extra IPv4 address.',
'monthly_usd' => 4.50,
'add_on' => 'additionalIps',
'automated' => true,
],
],
'private_networking' => [
'disabled' => [
'label' => 'No Private Networking',
'description' => 'Do not enable the private networking add-on.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'enabled' => [
'label' => 'Private Networking Enabled',
'description' => 'Purchases the private networking add-on.',
'monthly_usd' => 2.99,
'add_on' => 'privateNetworking',
'automated' => true,
],
],
'storage_types' => [
'included' => [
'label' => 'Included Storage',
'description' => 'Use the plan default storage.',
'monthly_usd' => 0.00,
'add_on' => null,
'automated' => true,
],
'ssd_300' => [
'label' => '300 GB SSD',
'description' => 'Higher SSD storage tier.',
'monthly_usd' => 1.95,
'add_on' => 'extraStorage',
'automated' => false,
],
'nvme_150' => [
'label' => '150 GB NVMe',
'description' => 'Higher NVMe storage tier.',
'monthly_usd' => 2.30,
'add_on' => 'extraStorage',
'automated' => false,
],
],
'object_storage' => [
'none' => [
'label' => 'No Object Storage',
'description' => 'Do not order object storage with this server.',
'monthly_usd' => 0.00,
'automated' => false,
],
'eu_250' => [
'label' => '250 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 2.99,
'automated' => false,
],
'eu_500' => [
'label' => '500 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 5.98,
'automated' => false,
],
'eu_750' => [
'label' => '750 GB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 8.97,
'automated' => false,
],
'eu_1024' => [
'label' => '1 TB Object Storage (EU)',
'description' => 'S3-compatible object storage in the European Union.',
'monthly_usd' => 11.96,
'automated' => false,
],
],
'linux_default_users' => [
'root' => ['label' => 'root'],
'admin' => ['label' => 'admin'],
],
'windows_default_users' => [
'admin' => ['label' => 'admin'],
'administrator' => ['label' => 'administrator'],
],
],
'server_agent' => [
'release_version' => env('SERVER_AGENT_RELEASE_VERSION', '0.2.0'),
'signed_release_ttl_minutes' => (int) env('SERVER_AGENT_SIGNED_RELEASE_TTL_MINUTES', 10080),
'heartbeat_interval_seconds' => 15,
],
/*
|--------------------------------------------------------------------------
| Shared Hosting Configuration
|--------------------------------------------------------------------------
|
| Settings for the shared hosting nodes.
|
*/
'shared' => [
'default_php_version' => '8.2',
'available_php_versions' => ['8.0', '8.1', '8.2', '8.3'],
'default_document_root' => 'public_html',
'max_upload_size_mb' => 64,
'max_execution_time' => 300,
'memory_limit_mb' => 256,
'phpmyadmin_url' => env('HOSTING_PHPMYADMIN_URL', ''),
'phpmyadmin_sso_secret' => env('HOSTING_PHPMYADMIN_SSO_SECRET', ''),
],
/*
|--------------------------------------------------------------------------
| VPS Configuration
|--------------------------------------------------------------------------
|
| Default settings for VPS instances.
|
*/
'vps' => [
'default_region' => 'EU',
'default_image' => 'afecbb85-e2fc-46f0-9684-b46b1faf00bb', // Ubuntu 22.04
'available_regions' => ['EU', 'US-central', 'US-east', 'US-west', 'SIN', 'UK', 'AUS', 'JPN'],
],
/*
|--------------------------------------------------------------------------
| App Installer Configuration
|--------------------------------------------------------------------------
|
| Settings for the one-click app installer.
|
*/
'apps' => [
'enabled' => ['wordpress', 'joomla', 'drupal', 'opencart'],
'magento_enabled' => false, // Requires higher resource plans
'wordpress' => [
'default_version' => '6.4',
'wp_cli_path' => '/usr/local/bin/wp',
],
],
/*
|--------------------------------------------------------------------------
| Provisioning Settings
|--------------------------------------------------------------------------
|
| General provisioning configuration.
|
*/
'provisioning' => [
'max_retries' => 3,
'retry_delay_minutes' => 5,
'timeout_minutes' => 30,
],
/*
|--------------------------------------------------------------------------
| Legacy ResellerClub Integration
|--------------------------------------------------------------------------
|
| Keep RC integration active for existing customers.
|
*/
'legacy' => [
// Keep RC data/API available for customers with existing ResellerClub services.
'rc_enabled' => (bool) env('LADILL_RC_LEGACY_ENABLED', true),
// New sales and automated fulfillment use Ladill (Dynadot domains, native hosting).
'rc_new_orders_enabled' => (bool) env('LADILL_RC_NEW_ORDERS_ENABLED', false),
// Renew existing ResellerClub services (hosting, domains, VPS, etc.).
'rc_renewals_enabled' => (bool) env('LADILL_RC_RENEWALS_ENABLED', true),
],
];