proxyType(); if (is_null($proxyType) || $proxyType === 'NONE' || $server->proxy->force_stop) { return 'OK'; } $commands = collect([]); $proxy_path = $server->proxyPath(); $configuration = CheckConfiguration::run($server); if (!$configuration) { throw new \Exception("Configuration is not synced"); } SaveConfiguration::run($server, $configuration); $docker_compose_yml_base64 = base64_encode($configuration); $server->proxy->last_applied_settings = Str::of($docker_compose_yml_base64)->pipe('md5')->value; $server->save(); if ($server->isSwarm()) { $commands = $commands->merge([ "mkdir -p $proxy_path/dynamic", "cd $proxy_path", "echo 'Creating required Docker Compose file.'", "echo 'Starting coolify-proxy.'", "docker stack deploy -c docker-compose.yml coolify-proxy", "echo 'Proxy started successfully.'" ]); } else { $caddfile = "import /dynamic/*.caddy"; $commands = $commands->merge([ "mkdir -p $proxy_path/dynamic", "cd $proxy_path", "echo '$caddfile' > $proxy_path/dynamic/Caddyfile", "echo 'Creating required Docker Compose file.'", "echo 'Pulling docker image.'", 'docker compose pull', "echo 'Stopping existing coolify-proxy.'", "docker compose down -v --remove-orphans > /dev/null 2>&1", "echo 'Starting coolify-proxy.'", 'docker compose up -d --remove-orphans', "echo 'Proxy started successfully.'" ]); $commands = $commands->merge(connectProxyToNetworks($server)); } if ($async) { $activity = remote_process($commands, $server, callEventOnFinish: 'ProxyStarted', callEventData: $server); return $activity; } else { instant_remote_process($commands, $server); $server->proxy->set('status', 'running'); $server->proxy->set('type', $proxyType); $server->save(); ProxyStarted::dispatch($server); return 'OK'; } } catch (\Throwable $e) { ray($e); throw $e; } } }