id}", 'label' => "{$server->name} (build server)", 'disabled' => true, ], )->values(), ), ]; }, get cloneDestinationOptions() { return this.availableDestinations.map(destination => ({ value: destination.uuid, label: destination.name + (destination.uuid == this.currentDestinationUuid ? ' (current)' : ''), })); }, get migrateServerOptions() { return this.servers .filter(server => server.is_functional && server.id != this.currentServerId) .map(server => ({ value: server.id, label: `${server.name} (${server.ip})`, })); }, get migrateDestinationOptions() { return this.availableMigrateDestinations.map(destination => ({ value: destination.uuid, label: destination.name, })); }, get cloneProjectOptions() { return this.projects.map(project => ({ value: project.id, label: project.name + (project.id == this.currentProjectId ? ' (current)' : ''), })); }, get cloneEnvironmentOptions() { return this.availableCloneEnvironments.map(environment => ({ value: environment.id, label: environment.name + (environment.id == this.currentEnvironmentId ? ' (current)' : ''), })); }, get moveProjectOptions() { return this.projects.map(project => ({ value: project.id, label: project.name + (project.id == this.currentProjectId ? ' (current)' : ''), })); }, get moveEnvironmentOptions() { return this.availableEnvironments.map(environment => ({ value: environment.id, label: environment.name, })); } }" x-init=" selectedCloneServer = null; selectedCloneDestination = null; selectedCloneProject = null; selectedCloneEnvironment = null; selectedMigrateServer = null; selectedMigrateDestination = null; $watch('selectedCloneServer', () => selectedCloneDestination = null); $watch('selectedCloneProject', () => selectedCloneEnvironment = null); $watch('selectedMigrateServer', () => selectedMigrateDestination = null); $watch('selectedMoveProject', () => selectedMoveEnvironment = null); " class="flex flex-col gap-6"> @can('update', $resource) Cloning copies settings, environment variables, and resource configuration. Stored files, database records, and other persistent data are not copied.

The running resource will not be changed.

Clone resource
@if (isDev()) Migration stops the resource on the source server. After volume transfer finishes, redeploy on the target server. Source volumes are left in place for safety — clean them up manually when you confirm the migration succeeded. Only other servers that are validated and reachable are listed.

The resource keeps the same UUID and configuration. Only the hosting server and network destination change.

Migrate resource
@endif

Uses {{ data_get($resource, 'destination.server.name') }} · {{ data_get($resource, 'destination.network') }}.

Clone resource
@if ($projects->count() > 0)

All configuration will move with the resource.

Move resource
@else @endif
@else You do not have permission to clone or move this resource. Contact a team administrator for access. @endcan