@php $supportUpdateAuthUser = auth()->user(); $supportCanRunUpdate = $supportUpdateAuthUser && method_exists($supportUpdateAuthUser, 'hasAnyRole') && $supportUpdateAuthUser->hasAnyRole(['super-admin', 'admin', 'amministratore']); $supportUsesDaemon = config('distribution.update_executor', 'local') === 'daemon'; @endphp
Launcher autonomo aggiornamento nodo
Questa pagina espone un solo flusso operativo: aggiornamento autonomo del nodo da browser, senza accesso shell al sistema remoto. @if($supportUsesDaemon) Il pulsante accoda la richiesta a un daemon host Docker che esegue il refresh completo. @else Il job viene eseguito direttamente dall'applicazione. @endif
@if(! $supportCanRunUpdate)
I lanci update/sync sono abilitati solo per super-admin, admin e amministratore.
@endif
Aggiornamento remoto in sicurezza
Un solo pulsante, job asincrono e ripartenza automatica del nodo. Il recupero resta applicativo: log supporto, runtime errors e richieste help continuano a restare nel progetto.
@if(! $this->ticketAttachmentMetadataReady)
Il nodo non ha ancora la colonna ticket_attachments.metadata. Finche non applichi le migration da questa pagina, GPS ed EXIF dei ticket non possono essere persistiti correttamente.
@endif
Aggiorna nodo automaticamente Aggiorna avanzamento refresh
Il pulsante Aggiorna nodo automaticamente esegue il refresh completo: backup pre-update solo se riattivato, maintenance mode con pagina 503 personalizzata, sync da Gitea, composer install, build frontend se disponibile, migrate --force, pulizia cache, rebuild Blade e riapertura automatica del sistema.
Se il job trova un errore, l esito resta tracciato in output completo, log supporto e runtime errors. Questo permette di diagnosticare e correggere il problema dal progetto, senza prendere il controllo del nodo remoto.
@if($supportUsesDaemon)
Executor attivo: daemon host Docker. Il pannello accoda la richiesta, poi il runner host esegue docker/update-multisite.sh e aggiorna questo avanzamento senza shell manuale.
@endif
Backup e continuita: l aggiornamento nasce per lavorare con backup automatico e copie su Drive quando abilitate, cosi il nodo resta semplice da installare in Docker e sicuro da aggiornare anche senza interventi manuali sul sistema.
Passi pianificati dal launcher
    @foreach($this->updatePlannedSteps as $plannedStep)
  • {{ $plannedStep }}
  • @endforeach
  • Segnalazioni supporto, richieste help e errori runtime restano consultabili dalla suite Supporto dopo il refresh.
@if($this->updateInProgress)
@else
@endif
Avanzamento refresh nodo {{ (int) $this->updateProgressPercent }}%
{{ $this->updateProgressMessage }}
@if(filled($this->lastUpdateIssue))
{{ $this->lastUpdateIssue }}
@endif
@if(filled($this->lastUpdateOutput))
Output completo ultimo refresh nodo
{{ $this->lastUpdateOutput }}
@endif
Stato nodo
Repository Git sorgente: {{ $this->gitWorkspacePath ?? '-' }}
Branch locale: {{ $this->gitCurrentBranch ?? '-' }}
Commit deploy/ultimo sync: {{ $this->gitCurrentCommit ?? '-' }}
Data commit deploy: {{ $this->gitCurrentCommitDate ?? '-' }}
@if($this->gitStatusUsesSyncSummary && filled($this->gitSourceCommit) && $this->gitSourceCommit !== $this->gitCurrentCommit)
Commit repository sorgente cache: {{ $this->gitSourceCommit }}
Data commit repository sorgente: {{ $this->gitSourceCommitDate ?? '-' }}
@endif
Commit remoto: {{ $this->gitRemoteCommit ?? '-' }}
Data commit remoto: {{ $this->gitRemoteCommitDate ?? '-' }}
Tracking: {{ $this->gitAheadBehind }}
Aggiornamenti da caricare sul nodo: {{ $this->gitWorkspacePath === null && filled($this->pendingGitPreviewIssue) ? 'n/d' : (int) $this->pendingGitCommitCount }}
Commit locali da inviare: {{ (int) $this->gitAheadCount }}
Working tree: {{ $this->gitWorkingTreeDirty ? 'sporco' : 'pulito' }}
Ultima sync Git: {{ $this->lastGitSyncAt ?? '-' }}
Ultimo update: {{ $this->lastUpdateAt ?? '-' }}
Il flusso consigliato del nodo e: push su Gitea, poi "Aggiorna staging da Gitea" da questa pagina. I dati utente non vengono distribuiti via Git: per questo il launcher esegue prima il backup pre-update e poi una finestra di maintenance per evitare scritture concorrenti durante il riallineamento del nodo.
@if(filled($this->pendingGitPreviewIssue))
{{ $this->pendingGitPreviewIssue }}
@endif
Aggiornamento distribution
Usare solo quando il manifest update sul server distribution e valido.
Applica migration Lancia aggiornamento Lancia aggiornamento (riserva) Check connettivita update optimize:clear Rebuild view
@if($this->updateInProgress)
@else
@endif
Avanzamento aggiornamento {{ (int) $this->updateProgressPercent }}%
{{ $this->updateProgressMessage }}
@if(filled($this->lastUpdateIssue))
{{ $this->lastUpdateIssue }}
@endif
Esito e backup
Exit update: {{ $this->lastUpdateExitCode !== null ? $this->lastUpdateExitCode : '-' }}
Exit sync Git: {{ $this->lastGitSyncExitCode !== null ? $this->lastGitSyncExitCode : '-' }}
Backup snapshot: {{ $this->latestBackupSummary['snapshot_id'] ?? '-' }}
Backup creato il: {{ $this->latestBackupSummary['created_at'] ?? '-' }}
@if(filled($this->lastConnectivityCheckOutput))
Ultimo check connettivita
{{ $this->lastConnectivityCheckOutput }}
@endif