proxyType(); if ($proxyType === ProxyTypes::NONE->value) { return 'OK'; } $proxy_path = get_proxy_path(); $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(); $commands = $commands->merge([ "apt-get update > /dev/null 2>&1 || true", "command -v lsof >/dev/null || echo '####### Installing lsof.'", "command -v lsof >/dev/null || apt install -y lsof", "command -v lsof >/dev/null || command -v fuser >/dev/null || apt install -y psmisc", "mkdir -p $proxy_path && cd $proxy_path", "echo '####### Creating 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", "command -v fuser >/dev/null || command -v lsof >/dev/null || echo '####### Could not kill existing processes listening on port 80 & 443. Please stop the process holding these ports...'", "command -v lsof >/dev/null && lsof -nt -i:80 | xargs -r kill -9 || true", "command -v lsof >/dev/null && lsof -nt -i:443 | xargs -r kill -9 || true", "command -v fuser >/dev/null && fuser -k 80/tcp || true", "command -v fuser >/dev/null && fuser -k 443/tcp || true", "systemctl disable nginx > /dev/null 2>&1 || true", "systemctl disable apache2 > /dev/null 2>&1 || true", "systemctl disable apache > /dev/null 2>&1 || true", "echo '####### Starting coolify-proxy.'", 'docker compose up -d --remove-orphans', "echo '####### Proxy installed successfully.'" ]); $commands = $commands->merge(connectProxyToNetworks($server)); if ($async) { $activity = remote_process($commands, $server); return $activity; } else { instant_remote_process($commands, $server); $server->proxy->set('status', 'running'); $server->proxy->set('type', $proxyType); $server->save(); return 'OK'; } } }