Contesto: Come dettagliato altrove, la mia installazione di Discourse era ospitata da un VPS su cui il disco era troppo piccolo per completare un aggiornamento. All’inizio ho cliccato su “Aggiorna” nel pannello di controllo amministrativo. L’aggiornamento è fallito e l’interfaccia grafica non ha più funzionato. Dopodiché, ho effettuato l’accesso alla console del mio VPS e ho dato il famoso comando ./launcher rebuild app. Anche questo non è mai stato completato: avevo decisamente esaurito lo spazio su disco. Per ottenere più spazio e rimanere nel budget, ho deciso di spostare tutta la mia configurazione su un nuovo VPS con una diversa società di hosting. Salvare i preziosi dati del sito era una priorità assoluta.
Fallimenti: I due metodi più ovvi per effettuare un backup non hanno funzionato:
il mio tentativo iniziale di aggiornamento ha rotto l’interfaccia grafica basata sul web, quindi non c’era modo di raggiungere il pannello di controllo amministrativo e avviare un backup da lì; e
anche provare ad entrare nel container docker e dargli alcuni comandi shell non ha funzionato. Il comando consigliato per questo è /var/discourse/launcher enter app. Ma, almeno nel mio caso, lo script launcher tentava di ricostruire l’app prima di permettermi di entrarci, e le ricostruzioni fallivano costantemente, quindi questo comando non mi ha mai nemmeno fornito un container, figuriamoci una shell al suo interno.
Successo: Stavo per arrendermi quando ho avuto una piacevole sorpresa. Lavorando sulla riga di comando della mia piccola VM, ho digitato docker ps e ho scoperto che c’era un container attivo chiamato app. E docker ha un modo diretto per entrare in un container in esecuzione: il comando è docker exec -it app bash.
All’interno del container, sono stato in grado di fare progressi: ho emesso il comando discourse backup, ho aspettato qualche minuto, e poi ho copiato il file <backup>.tar.gz in una nuova posizione sicura. Con un backup attuale a portata di mano, è stato possibile completare la migrazione della mia configurazione nella sua nuova sede. (Ci sono altri thread su questi forum che mostrano come fare questo.)
Il punto chiave qui è che il comando docker sopra per entrare nel container ha funzionato, anche quando il comando specifico di Discourse ./launcher non lo ha fatto.
Grazie agli inventori e ai manutentori di questo eccellente prodotto.
Durante i giorni in cui ho cercato di far funzionare la mia configurazione originale, ho pensato di aver fatto tutto il possibile per recuperare spazio, certamente incluso ./launcher cleanup, ma anche molto di più… rimuovendo vecchi kernel, svuotando la cache di apt, eliminando software non essenziale, ecc., ecc.
Dopo essermi impegnato a spostare tutto il mio sito e aver dedicato molto tempo al processo, mi sono chiesto se avrei potuto fare di più… ma a quel punto avevo perso la voglia di indagare ulteriormente. (cfr. “fallacia dei costi sommersi”). Per essere specifici, il VPS che sto per abbandonare aveva una dimensione nominale del disco di 25G. Circa 19G di questi erano dedicati alla directory /var/lib/docker/overlay2. E gli unici container docker che stavo eseguendo erano Discourse e il suo Mail-receiver associato. L’esperienza suggerisce che Discourse, per quanto potente, dovrebbe essere in grado di funzionare con molto meno di 19G sul disco. Ma le ricerche su Internet sembravano indicare che apportare modifiche all’interno della directory overlay2 era insicuro, quindi mi sono sentito bloccato a quel punto.
Nella mia nuova configurazione, la directory /var/lib/docker/overlay2 occupa 13G. Ancora enorme.
Ho scelto Discourse per gestire i forum sul mio sito hobby su piccola scala nella speranza che “funzionasse e basta”, cioè che fosse super semplice da amministrare senza imparare un sacco di cose nuove. Questo sembra essere in gran parte corretto, se si hanno risorse sufficienti (eccessive?) da allocare.
Il mio nuovo piano è sperare ciecamente che la directory overlay2 non cresca nel tempo e sommerga il disco da 50G nel mio nuovo VPS. Se tu (o chiunque altro) sapete come tenere sotto controllo la dimensione del duo dinamico docker e Discourse, mi piacerebbe saperlo. Sarebbe una bella conclusione per il resto dell’apprendimento che ho fatto negli ultimi giorni. Grazie ancora.
Sono contento che tu sia riuscito a salvarti. Gestisco due piccoli forum, uno sullo storage da 20G e l’altro da 25G. Devo impiegare parecchio tempo e ingegno a volte per mantenerli funzionanti. Ma anche, sembro continuare a usare (e a postare su) lo stesso insieme di tattiche. Vedi sotto.
Lo sviluppo di Discourse ottimizza per cose diverse dall’esecuzione su hardware a basso costo, anche se riesce a malapena a continuare a funzionare per me nel mio ambiente limitato. Che continui così a lungo.
La chiave per lavorare in configurazioni con poco spazio di archiviazione è misurare ciò che sta accadendo: troppo spesso vedo persone che indovinano cosa potrebbe accadere. Il mio approccio inizierà sempre con
Per saperne di più, forse cerca i miei post per prune e journalctl e kernel.