Strapi su cPanel: quando buildare diventa un viaggio spirituale

Strapi su cPanel

Volevo solo aggiungere Stripe ad un applicazione Strapi su cPanel. Ho passato 4 ore a capire perché il mio server condiviso con cPanel non mi faceva più buildare Strapi. Risolto con una build locale. Ma la lezione è un’altra.

Il trigger: Stripe

C’è sempre un momento, nello sviluppo di un progetto custom, in cui arriva il nodo dei pagamenti.
E ogni volta, anche se lo hai già affrontato decine di volte, non è mai banale.

Questa volta dovevo gestire Stripe: vecchi utenti da migrare, webhook da ascoltare, frontend da sincronizzare con lo stato del pagamento, fallback, edge case, email da inviare. Lo stress è noto. E io… ho procrastinato.

Procrastinazione attiva

Così, per giorni, ho rifinito ogni angolo dell’app, sistemato padding, rivisto naming, documentato cose che nessuno leggerà. Tutto, pur di non toccare i pagamenti. Tutte cose che andavano fatte, ma con un grado di urgenza decisamente inferiore.

Finché, ovviamente, ho finito tutto il resto. E ho dovuto guardare in faccia Stripe.

Il piano (che sembrava semplice)

Il primo passo? Creare un endpoint pubblico per collegare il webhook.
Dato che sviluppo in locale, ho deciso di deployare su un server temporaneo — uno shared hosting con cPanel — solo per registrare il webhook da Stripe.

“Facile, ho già usato questo server per buildare prima. Pusho tutto, buildo da cPanel, fatto.”

Spoiler: non è andata così.

Il crash

Subito dopo il push, apro il gestore app di Node, lancio lo script per buildare:

RangeError: WebAssembly.instantiate(): Out of memory

Strapi, nel processo di build, si rompe su undici, una libreria usata internamente da Node.js.

Ho subito pensato: “Sarà Stripe” — era l’unica dipendenza nuova.
La rimuovo.
Build? Stesso errore.

Allora parte il loop infernale del debugging.

Cosa ho provato (tutto)

  • Cambiato valore a NODE_OPTIONS='--max-old-space-size=4096'
  • Poi 2048, 1024, 512 — nessuna differenza
  • Verificati i limiti da /proc/<pid>/limits: sembrava tutto in regola
  • swapon non disponibile (grazie cPanel!)
  • Spazio disco: sufficiente
  • Provato a ridurre i processi attivi

Alla fine era chiaro: il problema non era nella mia applicazione, ma nell’ambiente.

CloudLinux + cPanel + LVE = limiti dinamici che, se superati, ti tarpano le ali (senza dirtelo in modo chiaro).

Il workaround: build in locale

La soluzione era chiata, fare la build in locale. In realtà era chiara da un paio di ore, ma hai presente quando non ti vuoi arrendere? Lo sai, non ha senso in sviluppo costruire un flusso di build, ma il fatto che prima l’app si era sempre buildata senza problemi non mi permetteva di ragionare con lucidità, volevo che il maledetto server mi producesse la build, poi, ho alzato bandiera bianca, ho buildato in locale e 5 minuti dopo l’app era online ed aggiornata.

Flusso adottato:

  1. npm run build
  2. Creo zip di build, dist (tutto ciò che serve in prod)
  3. Carico su server via FTP
  4. Riavvio l’app da cPanel

Niente più errori. Funziona tutto.
Stripe ha ricevuto il suo webhook. Il mondo può continuare a girare.

Il contesto (più importante del codice)

Questa storia non è solo un problema tecnico.

È una storia di procrastinazione, stress e workaround.
Una storia che racconta bene cosa vuol dire lavorare in modo artigianale, senza scorciatoie, su progetti completamente personalizzati.

Ogni piccolo inciampo può diventare un’ora persa.
Ogni ora persa.

Strapi su cPanel: la lezione

Sono in un server provvisorio. In produzione, avremo risorse adeguate.
Questa era solo una tappa — ma una che mi ha fatto perdere un giorno intero, e che ora voglio ricordare.

Perché? Perché mi serve un buon esempio per ricordarmi che intestardirsi non porta a nulla di buono.

TL;DR finale

  • Se build non parte su cPanel, probabilmente sono limiti LVE invisibili
  • undici usa WebAssembly → sensibile al memory cap
  • Build locale + FTP può salvarti
  • Non è elegante, ma funziona
  • Documentare serve. A me, prima che agli altri
  • Intestardirsi non serve.
  • Il fatto che una cosa abbia sempre funzionato non significa che funzionerà sempre. Il server viene aggiornato, cPanel anche, i limiti variano nel tempo.

Categoria: Too Technical; Don’t Read

Questo articolo è parte di una serie che tengo per me stesso — un log, un diario, un salvagente.
Se capita anche a te, forse ti aiuterà.
Se no, almeno so dove cercare la prossima volta che ci ricasco.
E lo so che è fuori target, difficilmente se sei capitato qui cercavi contenuti così tecnici: probabilmente volevi solo capire come velocizzare il tuo sito, come ottimizzare le immagini, o come scrivere meglio i tuoi contenuti, come ti spiego negli altri articoli.
Ma porta pazienza: ogni tanto anche io ho bisogno di aprire questa valvola tecnica, mettere giù gli errori, le soluzioni e i pensieri. Così domani — o tra sei mesi — quando ci ricasco… ci sarà già un appunto pronto.

Hosting? Io uso VHosting da anni e mi trovo benissimo. Ho anche un’affiliazione attiva, quindi se acquisti tramite il mio link, io guadagno qualcosa, ma per te il prezzo non cambia. Lo consiglio perché lo uso ogni giorno e ne sono soddisfatto!

no admin