Introducción
- Esta guía asume que tienes un bot aprobado en top.gg y que estás usando Node.js o Python para tu proyecto.
- A continuación, necesitarás crear una cuenta en Square Cloud, lo cual puede hacerse a través de la página de registro. Puedes usar tu correo electrónico para crear una cuenta.
- Finalmente, necesitas tener un plan activo en tu cuenta. Compara los planes disponibles y elige uno según tus necesidades.
Configurando el entorno
- Node.js
- Python
- Antes de empezar, asegúrate de tener Node.js y npm instalados en tu sistema. Si aún no los tienes, puedes descargarlos desde el sitio web oficial de Node.js.
- Inicia un nuevo proyecto de Node.js y habilita la sintaxis
importcon los siguientes comandos:
Terminal
- Instala Express:
Terminal
Configurando el proyecto
1. Obtén el secreto de tu webhook:- Elige el subdominio que usará tu aplicación en Square Cloud (el campo
SUBDOMAINde tu archivo de configuración), por ejemplomysite. Tu URL de webhook será entonceshttps://mysite.squareweb.app/topgg. - En Top.gg, abre el dashboard de tu proyecto y ve a Webhooks.
- Pega la URL del webhook y guarda. Top.gg genera entonces un secreto de webhook que empieza con
whs_: cópialo y mantenlo en privado. Tu código lo lee de la variable de entornoTOPGG_WEBHOOK_SECRET.
Top.gg firma cada solicitud con la cabecera
x-topgg-signature, en el formato t=<timestamp>,v1=<signature>, donde la firma es un HMAC SHA-256 de <timestamp>.<raw body> hecho con tu secreto. El código de abajo la vuelve a calcular y rechaza cualquier solicitud que no coincida, para que nadie más pueda enviar votos falsos a tu URL. Consulta la documentación de webhooks de Top.gg para más detalles.Esta guía usa los webhooks v1 de Top.gg. El webhook heredado v0, que envía una contraseña en la cabecera
Authorization con un payload diferente, no se cubre aquí.- Node.js
- Python
El ejemplo verifica la firma con el módulo
crypto integrado en Node, así que no se necesita ningún paquete de Top.gg. No se usa la clase Webhook de @top-gg/sdk 4.0.0: en nuestras pruebas, su listener respondía a entregas válidas con un error de timeout, lo que hace que Top.gg las reintente.index.js
Creando el archivo de configuración de squarecloud
Crea un archivosquarecloud.app en la carpeta de tu proyecto. Define SUBDOMAIN con el subdominio que elegiste en el paso 1:
SUBDOMAIN publica el listener en https://mysite.squareweb.app, y las aplicaciones web necesitan al menos MEMORY=512. El código escucha en el puerto de la variable de entorno PORT, que Square Cloud define como 80, y en el host 0.0.0.0.
Aprende sobre: cómo crear el archivo de configuración para Square Cloud.
El archivo squarecloud.app es un archivo de configuración que se usará para configurar tu aplicación; se usará para definir el nombre, la descripción, la versión, el archivo principal, entre otras cosas.
Subiendo tu aplicación a Square Cloud
Después de seguir todos los pasos, la carpeta de tu proyecto debe contener tu código, su archivo de dependencias (package.json o requirements.txt) y el archivo de configuración. Para subirlo desde el dashboard, colócalos en un archivo .zip.
Si tu aplicación es un proyecto de Node.js, echa un vistazo a nuestro artículo sobre Node.js.
Si tu aplicación es un proyecto de Python, echa un vistazo a nuestro artículo sobre Python.
A través del panel
1
Accede a la página de subida
Accede a la página de subida y sube el archivo zip de tu proyecto.
2
Configura tu entorno
Después de subir tu zip, deberás configurar el nombre, el archivo principal o el entorno de ejecución y otros ajustes de tu proyecto.
Si estás subiendo un proyecto web, asegúrate de seleccionar “Publicación Web” y de definir un subdominio para tu proyecto.
Si estás subiendo un proyecto web, asegúrate de seleccionar “Publicación Web” y de definir un subdominio para tu proyecto.
3
Despliega tu proyecto
Por último, haz clic en el botón “Deploy” para alojar tu proyecto en Square Cloud.
Tras el despliegue, puedes monitorear el estado y los logs de tu proyecto desde el panel.
Tras el despliegue, puedes monitorear el estado y los logs de tu proyecto desde el panel.

4
Confirma que tu aplicación esté en vivo
Tu primer despliegue suele tardar menos de un minuto. En el dashboard, espera a que el estado de tu aplicación muestre “running” y revisa los logs por si hay errores de inicio.
Si desplegaste un sitio web o una API, abre
Si desplegaste un sitio web o una API, abre
https://<tu-subdominio>.squareweb.app en tu navegador: deberías ver tu aplicación respondiendo. Si desplegaste un bot, envíale un comando para confirmar que esté online.
A través de la CLI
Para usar este método, tu proyecto necesita un archivo de configuración llamadosquarecloud.app en su raíz. Le indica a Square Cloud cómo ejecutar tu aplicación.
Guía del archivo de configuración
Aprende a crear el archivo de configuración
squarecloud.app que define el entorno de tu aplicación.1
Instala la CLI
Instala la CLI de Square Cloud. Si ya la tienes, ejecuta el mismo comando para actualizarla:
2
Inicia sesión
Ejecuta el comando de abajo. Abre tu navegador: aprueba el inicio de sesión allí y la CLI queda lista. No hay ninguna clave de API que copiar. Para scripts y CI, consulta autenticación de la CLI.
3
Sube tu proyecto
Desde la carpeta de tu proyecto, ejecuta el comando de abajo. La CLI comprime la carpeta actual en un zip, dejando fuera lo que lista Para subir un zip que creaste tú mismo, pásalo con
squarecloud.ignore, y lo sube:--file:4
Confirma que tu aplicación esté en vivo
Tu primer despliegue suele tardar menos de un minuto. Revisa el estado y los logs de tu aplicación directamente desde la terminal:Si desplegaste un sitio web o una API, abre
https://<tu-subdominio>.squareweb.app en tu navegador: deberías ver tu aplicación respondiendo. Si desplegaste un bot, envíale un comando para confirmar que esté online.
Configurando el secreto del webhook
Agrega tu secretowhs_ como la variable de entorno TOPGG_WEBHOOK_SECRET de tu aplicación, de una de estas formas:
- Dashboard: en la página de subida, abre Configuración avanzada y añade la variable antes del deploy. Para una aplicación que ya está en línea, añádela en su página Variables de entorno.
- CLI: desde la carpeta de tu proyecto, defínela con
squarecloud app env sety reinicia la aplicación:
401 Unauthorized. Consulta Variables de entorno para ver las demás formas de gestionarlas.
Iniciando las pruebas
Si has hecho todo correctamente, abrehttps://mysite.squareweb.app/topgg en tu navegador (reemplaza mysite por tu subdominio). Si aparece “Cannot GET /topgg” (Node.js) o “Method Not Allowed” (Python), todo está bien: la ruta solo acepta las solicitudes POST que envía Top.gg.
-
Para el código JavaScript que creamos con
app.post("/topgg", ...), la ruta que recibirá los votos es “/topgg”. Entonces, si tu sitio web esmysite.squareweb.app, la Webhook URL eshttps://mysite.squareweb.app/topgg. -
Para el código Python que creamos con
@app.route("/topgg", methods=["POST"]), la ruta que recibirá los votos también es “/topgg”. Entonces, la Webhook URL es la mismahttps://mysite.squareweb.app/topgg.
console.log o print debería aparecer en los logs.

Solución de problemas
Dominio personalizado
Para usar un dominio personalizado (por ejemplo,
mysite.com) en lugar de la URL predeterminada mysite.squareweb.app, necesitas el plan Standard o superior. La URL predeterminada sale del campo SUBDOMAIN del archivo de configuración. Para conectar tu dominio, sigue cómo configurar tu propio dominio.Requisitos mínimos de RAM
Mínimo: 512MB de RAM para sitios web y APIs, suficiente para un build estático en el runtime estático. Para apps que renderizan páginas en un servidor (Next.js, Nuxt, Angular SSR y similares), recomendamos al menos 1GB de RAM. Para aplicaciones más grandes, asigna más RAM para evitar que la aplicación se quede sin memoria y falle.
No se pudo encontrar este sitio.
Verifica que el subdominio/dominio coincida con lo configurado en el campo SUBDOMAIN o en la configuración del dominio personalizado. Si acabas de subir el sitio, espera hasta 60 segundos para que Square habilite el primer acceso.
El sitio tardó demasiado en responder…
Tu servidor debe escuchar en el puerto 80 y el host 0.0.0.0. Square Cloud define las variables de entorno PORT (
80) y HOST (0.0.0.0) en tu aplicación: léelas en tu código en lugar de fijar otros valores. Un servidor que escucha solo en localhost o 127.0.0.1 nunca recibe solicitudes.Próximos pasos
Bot de Discord
Aloja el bot que recibe los votos.
Variables de entorno
Gestiona el secreto de tu webhook y otros secretos.
La app no inicia
Soluciona conflictos de puerto, módulos que faltan y otros fallos de inicio.

