Guía de despliegue Fráncfort, Alemania

Despliega Discord bot en Nodion

Un bot de Discord mantiene una conexión abierta en lugar de responder a peticiones HTTP, así que en Nodion se ejecuta como proceso worker sin puerto. Añade una línea al Procfile y un proceso, guarda el token en una variable secreta, y el bot funciona las 24 horas del día en Fráncfort. Los bots de Telegram con long polling funcionan igual.

Desplegar en Nodion ›

desde 1 EUR / mes

Hasta 15 € de crédito de bienvenida al registrarte

Se ejecuta como
proceso worker, sin puerto
Arranque
worker: python bot.py o worker: node bot.js
Librerías
discord.py, discord.js, python-telegram-bot
Región
EU Central (Fráncfort)

Despliega Discord bot paso a paso

  1. Lee el token del entorno Nunca hagas commit del token del bot. Léelo de una variable de entorno, aquí con discord.py; con discord.js es client.login(process.env.DISCORD_TOKEN). bot.py
    import os
    
    import discord
    
    intents = discord.Intents.default()
    client = discord.Client(intents=intents)
    
    
    @client.event
    async def on_ready():
        print(f"Logged in as {client.user}")
    
    
    client.run(os.environ["DISCORD_TOKEN"])
  2. Añade un Procfile con una línea worker Un bot de Python necesita un requirements.txt con discord.py. Un bot de Node.js usa worker: node bot.js, discord.js en package.json y un lockfile incluido en el commit; para un bot en TypeScript con un paso de build, un Dockerfile es la vía más sencilla. No añadas una línea web:: el bot no tiene servidor web. Procfile
    worker: python bot.py
  3. Crea la app y guarda el token Crea una aplicación desde tu repositorio de GitHub, GitLab, Bitbucket o Gitea en la región EU Central. En la pestaña Environment, añade DISCORD_TOKEN y márcalo como secreto: una vez guardado, el valor ya no se puede volver a leer.
  4. Añade el proceso worker y desactiva web Las líneas del Procfile no crean procesos por sí solas. En la pestaña Processes, añade un proceso llamado worker sin puerto y con el comando vacío, para que ejecute la entrada del Procfile con ese nombre. Después pon web a 0 instancias o elimínalo: un bot nunca responde al health check HTTP que necesita web.
  5. Vuelve a desplegar Si el primer despliegue se ejecutó antes de que añadieras el worker, vuelve a desplegar. El worker cuenta como en ejecución en cuanto arranca, sin comprobación HTTP, y en los logs de runtime ves cómo el bot inicia sesión.

A tener en cuenta

  • Una instancia nueva una vez al díaLos procesos siguen en marcha y no se suspenden. En cada despliegue y aproximadamente una vez al día, Nodion sustituye cada instancia por una nueva: la nueva arranca antes de que la antigua reciba SIGTERM. Tu bot tiene que conectarse limpiamente al arrancar, y durante un breve momento ambas copias pueden estar online. Con un volumen local vinculado no hay sustitución diaria, y en un despliegue la instancia antigua se detiene antes de que arranque la nueva.
  • Mantén una sola instanciaEjecuta el worker con una sola instancia. Dos copias de un bot responden dos veces a cada mensaje, y Telegram solo permite una conexión de long polling por token.
  • Guarda los datos fuera de la instanciaLos archivos que escribe el bot, como una base de datos SQLite, desaparecen con la siguiente instancia nueva. Guarda el estado en PostgreSQL o Valkey en la misma región, o en un volumen.
  • Bots con webhooksLos bots que reciben webhooks, como los bots de Telegram en modo webhook o los bots de Discord con una URL de endpoint de interacciones, son apps web normales: se ejecutan como web, escuchan en PORT y responden con 2xx o 3xx en la ruta del health check.

Lo que Nodion gestiona por ti

  • Despliegues sin downtime Haz push a tu rama y Nodion construye una nueva release. El tráfico pasa a las nuevas instancias cuando superan el health check; si una release falla, la que está en marcha sigue activa. En cambio, las apps con un volumen local se reinician porque el disco pertenece a una sola instancia.
  • Bases de datos junto a la app PostgreSQL, pgvector, MySQL, Valkey y ClickHouse gestionados en la misma región. Al vincular una base de datos, sus datos de conexión llegan como DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Previews por pull request Activa las previews: cada pull request de tu repositorio tendrá su propia app, con URL y bases de datos nuevas y vacías. Puedes crearla automáticamente o a mano. Se omiten las pull requests de forks y bots.
  • Workers, cron jobs y escalado Ejecuta workers como procesos adicionales de la misma app, programa tareas en la pestaña Cron y escala cada proceso hasta 16 instancias.
  • Paso de release Con buildpacks, una línea release: del Procfile se ejecuta con cada nueva build. Las apps con Dockerfile, así como los redeploys o rollbacks a una imagen anterior, usan un comando de release definido en la propia app, que además tiene prioridad sobre la línea del Procfile. En los sitios estáticos, el paso de release se ejecuta en una imagen que solo contiene los archivos generados por la build.
  • Logs y métricas Logs de build, release y runtime, además de métricas de CPU, memoria, disco y red de cada instancia, en el dashboard.
  • Dominios y HTTPS Un nombre de host predeterminado con HTTPS desde el primer despliegue; tus propios dominios reciben certificados automáticamente.

Discord bot en Nodion: preguntas y respuestas

¿Mi bot se suspende?

No. Un proceso se ejecuta hasta que lo escalas a 0 instancias o lo eliminas. Aproximadamente una vez al día se sustituye por una instancia nueva (no si tiene un volumen local vinculado), así que asegúrate de que el bot se vuelve a conectar al arrancar.

¿Puedo alojar un bot de Telegram de la misma forma?

Sí. Un bot con long polling, por ejemplo python-telegram-bot con run_polling(), se ejecuta como worker exactamente igual que un bot de Discord, con su token en una variable secreta. En cambio, un bot en modo webhook es una app web normal.

¿Por qué falla el primer despliegue de mi bot?

El bot se ejecutó como proceso web, que espera una respuesta HTTP que nunca llega; pasados 10 minutos, la release se cancela. Añade el proceso worker, pon web a 0 instancias y vuelve a desplegar.

¿Dónde se ejecuta mi app de Discord bot?

En la región EU Central, en Fráncfort (Alemania). La build, el registry, la app y sus bases de datos, volúmenes, buckets, logs y métricas permanecen en esa región. La API y el plano de control de Nodion están alojados en Alemania. Nodion GmbH tiene su sede en Stuttgart.

¿Puedo usar Discord bot conforme al RGPD?

Nodion te ofrece las bases para ello: Nodion GmbH tiene su sede en Stuttgart (Alemania); en la región de Fráncfort, la app, sus bases de datos y sus volúmenes se ejecutan en Alemania. Puedes formalizar electrónicamente el DPA (contrato de encargo del tratamiento, art. 28 del RGPD) en el dashboard. Que tu uso cumpla el RGPD también depende de cómo configures y uses la app.

¿Cuánto cuesta ejecutar Discord bot en Nodion?

Una instancia de app cuesta desde 1 EUR al mes. La configuración del recuadro de costes cuesta 1 EUR al mes: App 1 EUR. Los precios no incluyen IVA y la facturación es por segundo. Puedes elegir tamaños mayores o más instancias cuando lo necesites.

¿Puedo usar mi propio dominio para mi app de Discord bot?

Sí. Cada app recibe un nombre de host predeterminado con HTTPS. Añade tu propio dominio en la pestaña Domains de la app; el certificado TLS se emite y se renueva automáticamente.

Dale a tu agente un cloud.

Hasta 15 € de crédito al registrarte.

Continuar con GitHub

o con tu email

Mantente al día.

Novedades del producto, sin spam. Puedes darte de baja cuando quieras.