Skip to main content

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

  1. 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.
  2. Inicia un nuevo proyecto de Node.js y habilita la sintaxis import con los siguientes comandos:
Terminal
Estos comandos crean un archivo package.json en el directorio actual.
  1. 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 SUBDOMAIN de tu archivo de configuración), por ejemplo mysite. Tu URL de webhook será entonces https://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 entorno TOPGG_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í.
2. Implementa el listener del webhook: Las siguientes secciones proporcionan ejemplos de código tanto para JavaScript como para 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 archivo squarecloud.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.
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.
Subiendo aplicación a Square Cloud
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 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.
¿La aplicación no inicia? Consulta la guía de solución de problemas para ver las causas y soluciones más comunes.

A través de la CLI

Para usar este método, tu proyecto necesita un archivo de configuración llamado squarecloud.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 squarecloud.ignore, y lo sube:
Para subir un zip que creaste tú mismo, pásalo con --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.
¿La aplicación no inicia? Consulta la guía de solución de problemas para ver las causas y soluciones más comunes.

Configurando el secreto del webhook

Agrega tu secreto whs_ 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 set y reinicia la aplicación:
La aplicación lee las variables de entorno al iniciar, así que reiníciala después de cada cambio. Mientras el secreto no esté configurado, el código rechaza todas las solicitudes con 401 Unauthorized. Consulta Variables de entorno para ver las demás formas de gestionarlas.

Iniciando las pruebas

Si has hecho todo correctamente, abre https://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 es mysite.squareweb.app, la Webhook URL es https://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 misma https://mysite.squareweb.app/topgg.
Finalmente, vuelve a la página Webhooks de tu proyecto en Top.gg y haz clic en el botón “Send Test”. Después de eso, revisa los logs de tu aplicación. Si todo salió bien, el mensaje que definiste en console.log o print debería aparecer en los logs.
Ejemplo de prueba de envío del webhook de Top.gg
Y con eso, si todo se ha configurado correctamente, tu webhook estará listo para enviar notificaciones cuando tu bot reciba un voto en top.gg.

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.

Contáctanos

Si continúas enfrentando dificultades técnicas, nuestro equipo de soporte especializado está disponible para ayudarte. Contáctanos y estaremos encantados de ayudarte a resolver cualquier problema: la calidad del soporte es una gran parte de por qué los desarrolladores califican a Square Cloud con 4.9/5 en 402 reseñas en Google y Trustpilot.