mirror of
https://github.com/coollabsio/coolify.git
synced 2026-06-13 19:09:50 +00:00
b81bfc7f32
Add a profile appearance section for theme, page width, and zoom preferences. Move changelog access into the sidebar and bump the Coolify version to 4.1.2.
144 lines
5.2 KiB
PHP
144 lines
5.2 KiB
PHP
<?php
|
|
|
|
return [
|
|
'coolify' => [
|
|
'version' => '4.1.2',
|
|
'helper_version' => '1.0.14',
|
|
'realtime_version' => '1.0.15',
|
|
'railpack_version' => '0.23.0',
|
|
'self_hosted' => env('SELF_HOSTED', true),
|
|
'autoupdate' => env('AUTOUPDATE'),
|
|
'base_config_path' => env('BASE_CONFIG_PATH', '/data/coolify'),
|
|
'registry_url' => env('REGISTRY_URL', 'ghcr.io'),
|
|
'helper_image' => env('HELPER_IMAGE', env('REGISTRY_URL', 'ghcr.io').'/coollabsio/coolify-helper'),
|
|
'realtime_image' => env('REALTIME_IMAGE', env('REGISTRY_URL', 'ghcr.io').'/coollabsio/coolify-realtime'),
|
|
'is_windows_docker_desktop' => env('IS_WINDOWS_DOCKER_DESKTOP', false),
|
|
'cdn_url' => env('CDN_URL', 'https://cdn.coollabs.io'),
|
|
'versions_url' => env('VERSIONS_URL', env('CDN_URL', 'https://cdn.coollabs.io').'/coolify/versions.json'),
|
|
'upgrade_script_url' => env('UPGRADE_SCRIPT_URL', env('CDN_URL', 'https://cdn.coollabs.io').'/coolify/upgrade.sh'),
|
|
'releases_url' => env('RELEASES_URL', 'https://raw.githubusercontent.com/coollabsio/coolify-cdn/main/json/releases.json'),
|
|
],
|
|
|
|
'urls' => [
|
|
'docs' => 'https://coolify.io/docs',
|
|
'contact' => 'https://coolify.io/docs/contact',
|
|
],
|
|
|
|
'services' => [
|
|
// Temporary disabled until cache is implemented
|
|
// 'official' => 'https://cdn.coollabs.io/coolify/service-templates.json',
|
|
'official' => 'https://raw.githubusercontent.com/coollabsio/coolify/v4.x/templates/service-templates-latest.json',
|
|
'file_name' => 'service-templates-latest.json',
|
|
],
|
|
|
|
'terminal' => [
|
|
'protocol' => env('TERMINAL_PROTOCOL'),
|
|
'host' => env('TERMINAL_HOST'),
|
|
'port' => env('TERMINAL_PORT'),
|
|
],
|
|
|
|
'pusher' => [
|
|
'host' => env('PUSHER_HOST'),
|
|
'port' => env('PUSHER_PORT'),
|
|
'app_key' => env('PUSHER_APP_KEY'),
|
|
],
|
|
|
|
'migration' => [
|
|
'is_migration_enabled' => env('MIGRATION_ENABLED', true),
|
|
],
|
|
|
|
'seeder' => [
|
|
'is_seeder_enabled' => env('SEEDER_ENABLED', true),
|
|
],
|
|
|
|
'horizon' => [
|
|
'is_horizon_enabled' => env('HORIZON_ENABLED', true),
|
|
'is_scheduler_enabled' => env('SCHEDULER_ENABLED', true),
|
|
],
|
|
|
|
'nightwatch' => [
|
|
'is_nightwatch_enabled' => env('NIGHTWATCH_ENABLED', false),
|
|
],
|
|
|
|
'docker' => [
|
|
'minimum_required_version' => '24.0',
|
|
],
|
|
|
|
'ssh' => [
|
|
'mux_enabled' => env('MUX_ENABLED', env('SSH_MUX_ENABLED', true)),
|
|
'mux_persist_time' => env('SSH_MUX_PERSIST_TIME', 3600),
|
|
'connection_timeout' => 10,
|
|
'server_interval' => 20,
|
|
'command_timeout' => 3600,
|
|
'max_retries' => env('SSH_MAX_RETRIES', 3),
|
|
'retry_base_delay' => env('SSH_RETRY_BASE_DELAY', 2), // seconds
|
|
'retry_max_delay' => env('SSH_RETRY_MAX_DELAY', 30), // seconds
|
|
'retry_multiplier' => env('SSH_RETRY_MULTIPLIER', 2),
|
|
],
|
|
|
|
'invitation' => [
|
|
'link' => [
|
|
'base_url' => '/invitations/',
|
|
'expiration_days' => 3,
|
|
],
|
|
],
|
|
|
|
'email_change' => [
|
|
'verification_code_expiry_minutes' => 10,
|
|
],
|
|
|
|
'sentry' => [
|
|
'sentry_dsn' => env('SENTRY_DSN'),
|
|
],
|
|
|
|
'sentinel' => [
|
|
// How often (seconds) PushServerUpdateJob is force-dispatched even when
|
|
// the container state hash is unchanged. Keeps exited-detection and
|
|
// storage checks from going stale without writing every resource row on
|
|
// every push.
|
|
'push_force_interval_seconds' => env('SENTINEL_PUSH_FORCE_INTERVAL_SECONDS', 300),
|
|
|
|
],
|
|
|
|
'proxy' => [
|
|
// How often (seconds) PushServerUpdateJob periodically re-connects the
|
|
// proxy to Docker networks as a safety net. Real network-layout changes
|
|
// already connect the proxy on-demand; this only covers gaps (Swarm
|
|
// networks added via UI, proxy crash recovery).
|
|
'connect_networks_interval_seconds' => env('PROXY_CONNECT_NETWORKS_INTERVAL_SECONDS', 3600),
|
|
],
|
|
|
|
'webhooks' => [
|
|
'feedback_discord_webhook' => env('FEEDBACK_DISCORD_WEBHOOK'),
|
|
'dev_webhook' => env('SERVEO_URL'),
|
|
],
|
|
|
|
'bunny' => [
|
|
'storage_api_key' => env('BUNNY_STORAGE_API_KEY'),
|
|
'api_key' => env('BUNNY_API_KEY'),
|
|
],
|
|
|
|
'server_checks' => [
|
|
// Notification delay configuration for parallel server checks
|
|
// Used for Traefik version checks and other future server check jobs
|
|
// These settings control how long to wait before sending notifications
|
|
// after dispatching parallel check jobs for all servers
|
|
|
|
// Minimum delay in seconds (120s = 2 minutes)
|
|
// Accounts for job processing time, retries, and network latency
|
|
'notification_delay_min' => 120,
|
|
|
|
// Maximum delay in seconds (300s = 5 minutes)
|
|
// Prevents excessive waiting for very large server counts
|
|
'notification_delay_max' => 300,
|
|
|
|
// Scaling factor: seconds to add per server (0.2)
|
|
// Formula: delay = min(max, max(min, serverCount * scaling))
|
|
// Examples:
|
|
// - 100 servers: 120s (uses minimum)
|
|
// - 1000 servers: 200s
|
|
// - 2000 servers: 300s (hits maximum)
|
|
'notification_delay_scaling' => 0.2,
|
|
],
|
|
];
|