server->ipv4 ?? $this->server->ipv6) ->disableStrictHostKeyChecking() ->usePassword($this->rootPassword) ->setTimeout(30); $provisionScriptUrl = route('provision-script', [ 'sudo_password' => $this->sudoPassword, 'hostname' => str($this->server->name)->slug()->toString(), 'server_id' => $this->server->id, ]); // Download the provision script and execute it // The script will run in the background $result = $ssh->execute([ 'wget --quiet --output-document=provision.sh "' . $provisionScriptUrl . '"', 'chmod +x provision.sh', 'nohup ./provision.sh > /dev/null 2>&1 &', ]); logger('executing script on server'); if (! $result->isSuccessful()) { logger('failed to execute script on server'); logger($result->getOutput()); logger($result->getErrorOutput()); logger($result->getExitCode()); $this->server->update([ 'status' => ServerStatus::PROVISIONING_FAILED, ]); return; } logger('script executed on server'); logger($result->getOutput()); logger($result->getErrorOutput()); logger($result->getExitCode()); $this->server->update([ 'status' => ServerStatus::PROVISIONING, ]); } }