Introduzione
- Questa guida presuppone che tu abbia un bot approvato su top.gg e che stia utilizzando Node.js o Python per il tuo progetto.
- Successivamente, dovrai creare un account su Square Cloud, cosa che puoi fare tramite la pagina di registrazione. Puoi usare la tua email per creare un account.
- Infine, devi avere un piano attivo sul tuo account. Confronta i piani disponibili e scegline uno in base alle tue esigenze.
Configurare l’ambiente
- Node.js
- Python
- Prima di iniziare, assicurati di avere Node.js e npm installati sul tuo sistema. Se non li hai ancora, puoi scaricarli dal sito ufficiale di Node.js.
- Avvia un nuovo progetto Node.js e abilita la sintassi
importcon i seguenti comandi:
Terminal
- Installa Express:
Terminal
Configurare il progetto
1. Ottieni il secret del tuo webhook:- Scegli il sottodominio che la tua applicazione userà su Square Cloud (il campo
SUBDOMAINdel tuo file di configurazione), per esempiomysite. L’URL del tuo webhook sarà quindihttps://mysite.squareweb.app/topgg. - Su Top.gg, apri la dashboard del tuo progetto e vai su Webhooks.
- Incolla l’URL del webhook e salva. Top.gg genera quindi un webhook secret che inizia con
whs_: copialo e tienilo privato. Il tuo codice lo legge dalla variabile d’ambienteTOPGG_WEBHOOK_SECRET.
Top.gg firma ogni richiesta con l’header
x-topgg-signature, nel formato t=<timestamp>,v1=<signature>, dove la firma è un HMAC SHA-256 di <timestamp>.<raw body> generato con il tuo secret. Il codice qui sotto la ricalcola e rifiuta qualsiasi richiesta che non corrisponde, così nessun altro può inviare voti falsi al tuo URL. Consulta la documentazione dei webhook di Top.gg per i dettagli.Questa guida usa i webhook v1 di Top.gg. Il webhook legacy v0, che invia una password nell’header
Authorization con un payload diverso, non è trattato qui.- Node.js
- Python
L’esempio verifica la firma con il modulo
crypto integrato in Node, quindi non serve nessun pacchetto di Top.gg. La classe Webhook di @top-gg/sdk 4.0.0 non viene usata: nei nostri test, il suo listener rispondeva alle consegne valide con un errore di timeout, il che fa sì che Top.gg le ritenti.index.js
Creare il file di configurazione squarecloud
Crea un filesquarecloud.app nella cartella del tuo progetto. Imposta SUBDOMAIN sul sottodominio scelto al passo 1:
SUBDOMAIN pubblica il listener su https://mysite.squareweb.app, e le applicazioni web richiedono almeno MEMORY=512. Il codice ascolta sulla porta indicata dalla variabile d’ambiente PORT, che Square Cloud imposta a 80, e sull’host 0.0.0.0.
Scopri di più su: come creare il file di configurazione per Square Cloud.
Il file squarecloud.app è un file di configurazione che verrà utilizzato per configurare la tua applicazione; sarà usato per definire il nome, la descrizione, la versione, il file principale, tra le altre cose.
Caricare l’applicazione su Square Cloud
Dopo aver seguito tutti i passaggi, la cartella del tuo progetto dovrebbe contenere il tuo codice, il suo file delle dipendenze (package.json o requirements.txt) e il file di configurazione. Per caricarla dalla dashboard, inseriscili in un file .zip.
Se la tua applicazione è un progetto Node.js, dai un’occhiata al nostro articolo su Node.js.
Se la tua applicazione è un progetto Python, dai un’occhiata al nostro articolo su Python.
Tramite dashboard
1
Accedi alla pagina di upload
Accedi alla pagina di upload e carica il file zip del tuo progetto.
2
Configura il tuo ambiente
Dopo aver caricato il tuo zip, dovrai configurare il nome, il file principale o il runtime environment e altre impostazioni per il tuo progetto.
Se stai caricando un progetto web, assicurati di selezionare “Web Publication” e di impostare un sottodominio per il tuo progetto.
Se stai caricando un progetto web, assicurati di selezionare “Web Publication” e di impostare un sottodominio per il tuo progetto.
3
Esegui il deploy del tuo progetto
Infine, clicca sul pulsante “Deploy” per ospitare il tuo progetto su Square Cloud.
Dopo il deploy, puoi monitorare lo stato e i log del tuo progetto dalla dashboard.
Dopo il deploy, puoi monitorare lo stato e i log del tuo progetto dalla dashboard.

4
Conferma che la tua app sia online
Il primo deploy richiede di solito meno di un minuto. Nella dashboard, attendi che lo stato della tua applicazione mostri “in esecuzione” e controlla i log per eventuali errori di avvio.
Se hai fatto il deploy di un sito web o di un’API, apri
Se hai fatto il deploy di un sito web o di un’API, apri
https://<tuo-sottodominio>.squareweb.app nel tuo browser: dovresti vedere la tua applicazione rispondere. Se hai fatto il deploy di un bot, invia un comando per confermare che sia online.
Tramite CLI
Per utilizzare questo metodo, il tuo progetto deve avere un file di configurazione chiamatosquarecloud.app nella sua radice. Indica a Square Cloud come eseguire la tua applicazione.
Guida al file di configurazione
Scopri come creare il file di configurazione
squarecloud.app che definisce l’ambiente della tua applicazione.1
Installa la CLI
Installa la CLI di Square Cloud. Se ce l’hai già, esegui lo stesso comando per aggiornarla:
2
Accedi
Esegui il comando qui sotto. Apre il tuo browser: approva l’accesso lì e la CLI è pronta. Non c’è nessuna chiave API da copiare. Per script e CI, consulta Autenticazione della CLI.
3
Carica il tuo progetto
Dalla cartella del tuo progetto, esegui il comando qui sotto. La CLI comprime la cartella corrente, escludendo ciò che elenca Per caricare uno zip che hai creato tu, passalo con
squarecloud.ignore, e la carica:--file:4
Conferma che la tua app sia online
Il primo deploy richiede di solito meno di un minuto. Controlla lo stato e i log della tua applicazione direttamente dal terminale:Se hai fatto il deploy di un sito web o di un’API, apri
https://<tuo-sottodominio>.squareweb.app nel tuo browser: dovresti vedere la tua applicazione rispondere. Se hai fatto il deploy di un bot, invia un comando per confermare che sia online.
Impostare il webhook secret
Aggiungi il tuo secretwhs_ come variabile d’ambiente TOPGG_WEBHOOK_SECRET della tua applicazione, in uno di questi modi:
- Dashboard: nella pagina di upload, apri Advanced configuration e aggiungi la variabile prima del deploy. Per un’applicazione già pubblicata, aggiungila nella sua pagina Environment Variables.
- CLI: dalla cartella del tuo progetto, impostala con
squarecloud app env sete riavvia l’applicazione:
401 Unauthorized. Consulta Variabili d’ambiente per gli altri modi di gestirle.
Avviare i test
Se hai fatto tutto correttamente, aprihttps://mysite.squareweb.app/topgg nel tuo browser (sostituisci mysite con il tuo sottodominio). Se compare “Cannot GET /topgg” (Node.js) o “Method Not Allowed” (Python), è tutto a posto: la route accetta solo le richieste POST che invia Top.gg.
-
Per il codice JavaScript che abbiamo creato con
app.post("/topgg", ...), la route che riceverà i voti è “/topgg”. Quindi, se il tuo sito web èmysite.squareweb.app, il Webhook URL èhttps://mysite.squareweb.app/topgg. -
Per il codice Python che abbiamo creato con
@app.route("/topgg", methods=["POST"]), la route che riceverà i voti è anch’essa “/topgg”. Quindi, il Webhook URL è lo stessohttps://mysite.squareweb.app/topgg.
console.log o print dovrebbe apparire nei log.

Risoluzione dei problemi
Dominio personalizzato
Per utilizzare un dominio personalizzato (ad esempio,
mysite.com) invece dell’URL predefinito mysite.squareweb.app, hai bisogno del piano Standard o superiore. L’URL predefinito deriva dal campo SUBDOMAIN nel file di configurazione. Per collegare il tuo dominio, segui come configurare il tuo dominio.Requisiti minimi di RAM
Minimo: 512MB di RAM per siti web e API, sufficienti per una build statica sul runtime statico. Per le app che generano le pagine su un server (Next.js, Nuxt, Angular SSR e simili), consigliamo almeno 1GB di RAM. Per applicazioni più grandi, alloca più RAM per evitare che l’applicazione esaurisca la memoria e si arresti in modo anomalo.
Impossibile trovare questo sito.
Verifica che il sottodominio/dominio corrisponda a quanto configurato nel campo SUBDOMAIN o nelle impostazioni del dominio personalizzato. Se hai appena caricato il sito, attendi fino a 60 secondi affinché Square abiliti il primo accesso.
Il sito ha impiegato troppo tempo per rispondere…
Il tuo server deve ascoltare sulla porta 80 e sull’host 0.0.0.0. Square Cloud imposta le variabili d’ambiente PORT (
80) e HOST (0.0.0.0) nella tua applicazione: leggile nel codice invece di scrivere altri valori fissi. Un server che ascolta solo su localhost o 127.0.0.1 non riceve mai richieste.Prossimi passi
Bot Discord
Ospita il bot che riceve i voti.
Variabili d'ambiente
Gestisci il secret del webhook e gli altri segreti.
L'app non si avvia
Risolvi conflitti di porta, moduli mancanti e altri errori di avvio.

