Ho rotto la mia installazione con un aggiornamento fallito - come posso recuperarla?

TLDR: Ho cliccato sul pulsante di aggiornamento nel mio pannello di amministrazione di Discourse e l’aggiornamento è fallito. Ho deciso di riavviare tutto e riprovare il processo di aggiornamento. Sfortunatamente, il mio pannello di amministrazione di Discourse non si avvia. Vorrei ripristinare il funzionamento.

Informazioni di supporto: Questo si trova in una VM DigitalOcean che serve un sito WordPress. L’ho configurato anni fa e ho dimenticato molti dettagli, ma per qualche magia Nginx esamina l’URL richiesto e decide se attivare WP per il contenuto principale o Discourse per le conversazioni. Il lato WP funziona ancora.

Dato l’approccio ingenuo e casuale suggerito nella mia introduzione, non sorprenderà che non riesca a individuare la natura esatta dell’errore di installazione che mi ha portato in questo triste stato. Non so nemmeno dove trovare i file di log che potrebbero contenere indizi per rimettere in carreggiata il processo di aggiornamento.

Qualsiasi suggerimento sarebbe molto apprezzato. Non ho esperienza nel campo dell’amministrazione web, ma mi sento a mio agio con la riga di comando su sistemi basati su Debian. Il software appena menzionato è in esecuzione su Ubuntu 20.04.6 LTS e ho accesso SSH alla piattaforma pertinente. Grazie!

Ciao, prova a ricostruire il container

1 Mi Piace

Puoi provare

cd /var/discourse
./launcher rebuild app

Potrebbe funzionare. In caso contrario, sarà probabilmente difficile indovinare.

2 Mi Piace

Grazie mille per le vostre risposte. Seguirò il suggerimento di Jay e vi farò sapere. (Ma potrebbero passare diverse ore prima che lo faccia. Prima devo preparare la pizza e darla ai miei ospiti. :slight_smile:

1 Mi Piace

Purtroppo la mia VM DigitalOcean sembra essere troppo piccola. Se digito du -sh dopo un nuovo accesso, dice che il mio disco assegnato /dev/vda1 ha circa 7 GiB liberi. Dopo aver eseguito il comando launcher rebuild app, avviene un download e uno spacchettamento e poi lo script si interrompe, dicendo che vede solo 3,3G disponibili e che rifiuta di continuare a meno che non ci siano 5G o più da usare.

Naturalmente ho fatto quello che potevo per localizzare ed eliminare materiale estraneo, ma trovare altri 1,7G da eliminare sarà un’impresa ardua. Ci sono suggerimenti esperti per questa situazione? (O nella categoria di enormi obiettivi maturi per la cancellazione, o nel regno di chiedere al launcher di essere meno esigente.)

PS: In alternativa, posso ricostruire l’app su una macchina più potente e poi semplicemente caricare un file adatto su questa VM sottodimensionata? O si tratta di magia nera eccessivamente arcana?

Prova ad eseguire il comando ./launcher cleanup. Questa operazione può aiutarti a liberare spazio di archiviazione consumato da Docker.

Inoltre, se sei certo di aver seguito la guida ufficiale all’installazione, puoi eseguire ./launcher destroy app per rimuovere il container precedente non funzionante. Tuttavia, è fondamentale assicurarsi che il database e i caricamenti siano archiviati nel file system dell’host anziché all’interno del container stesso.

In effetti, puoi eseguire la ricostruzione su una macchina separata e successivamente trasferire l’immagine Docker sulla tua VM. Tuttavia, dovrai eseguire manualmente il comando rake db:migrate sulla tua VM. Non sono del tutto sicuro se questo approccio possa introdurre altri problemi.

1 Mi Piace

Migra solo a un nuovo VPS con più spazio.

Ci vogliono circa 30 minuti, se non meno.

2 Mi Piace

Non sono sicuro al 100%, ma vorrei provare. Come posso eseguire il passaggio fondamentale di preservare il mio database e i miei caricamenti? Sarebbe sufficiente copiare i file nella directory /var/discourse/shared/standalone in una posizione sicura prima di fare qualsiasi cosa seria? (C’è un riferimento a un processo standard per il tipo di progetto di ripristino pratico che questo avvierebbe?)

Penso che la risposta pragmatica di @Robert sarebbe la scelta migliore per la maggior parte delle persone in una situazione simile. Sto prendendo una direzione diversa perché il mio contesto è unico in diversi modi. Di questi, ecco il più importante: la mia installazione è un progetto hobbistico su piccola scala in cui perdere tutto sarebbe deludente ma non devastante.

Grazie ancora.

Se le cose sono nella directory shared/standalone, sei al sicuro.

Se hai WordPress e Discourse, probabilmente devi eseguire l’aggiornamento a una VM da 2 GB/50 GB. Se hai eliminato tutti i backup e hai eseguito una pulizia del launcher, probabilmente hai a disposizione spazio illimitato (oh, puoi anche svuotare la cache di apt se cerchi su Google come fare).

1 Mi Piace

Potrebbe essere o non essere lo stesso problema che abbiamo appena riscontrato: stavamo utilizzando l’API di maxmind per eseguire la conversione da ip a geolocalizzazione. La vecchia versione richiedeva la chiave API di maxmind nel file app.yml. Una modifica recente (non documentata?) richiede la chiave API di maxmind E il nome utente in app.yml. La mancanza del nome utente causa il fallimento della build del forum.

2 Mi Piace

Grazie, @Frully, ma penso che questo sia un problema diverso. Ecco il messaggio di errore che mi blocca:

Status: Downloaded newer image for discourse/base:2.0.20240602-0023
docker.io/discourse/base:2.0.20240602-0023
Hai meno di 5 GB di spazio libero sul disco in cui si trova /var/lib/docker. Avrai bisogno di più spazio per continuare
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   21G  3.5G  86% /

Continuerò la mia avventura di risoluzione dei problemi stasera dopo il lavoro.

Amici, cambierò tattica e seguirò l’idea di @merefield di migrare tutta la mia configurazione su un VPS più grande. Capire come trasferire i miei asset dalla configurazione rotta a quella nuova funzionante sarà sicuramente una parte impegnativa di questa attività, ma proverò alcuni metodi di buon senso e aprirò un nuovo thread se nessuno di essi funzionerà. Con i ringraziamenti a tutti coloro che hanno contribuito, penso sia sicuro chiudere questo thread.

4 Mi Piace

Epilogo: Il processo di migrazione a un nuovo host mi ha insegnato qualcosa di utile sull’esecuzione di comandi shell direttamente all’interno del container di Discourse, ora descritto in un altro thread. C’è anche qualche informazione in più sul risparmio di spazio su disco in quell’altro thread.

2 Mi Piace