server->uuid))->expireAfter(60)->dontRelease()]; } public function __construct(public Server $server) {} public function handle() { try { // Stop proxy StopProxy::run($this->server, restarting: true); // Clear force_stop flag $this->server->proxy->force_stop = false; $this->server->save(); // Start proxy asynchronously - the ProxyStatusChanged event will be dispatched // when the remote process completes, which triggers ProxyStatusChangedNotification // listener that handles UI updates and Traefik version checks $activity = StartProxy::run($this->server, force: true, restarting: true); // Store activity ID for reference if ($activity && is_object($activity)) { $this->activity_id = $activity->id; } } catch (\Throwable $e) { // Set error status $this->server->proxy->status = 'error'; $this->server->save(); // Notify UI of error ProxyStatusChangedUI::dispatch($this->server->team_id); return handleError($e); } } }