Tutorial

Despliega un bot de Telegram o Discord en Railway (paso a paso)

Sin servidor que parchar: conectas un repositorio y Railway lo compila y lo ejecuta.

Tutorial2 min de lecturaActualizado

GitHubtu repogit pushRailwaybuild (Dockerfile) + ejecuciónvariablesTu bot24/71BOT_TOKEN vive en Variables, nunca en el repo2define un límite de uso en la configuración
Figura 1. Railway compila cada push y mantiene el servicio en ejecución.
  1. Sube el bot a un repositorio de GitHub

    curl -LO https://botnetwork.tech/downloads/telegram-grammy.zip
    unzip telegram-grammy.zip -d mi-bot && cd mi-bot
    git init && git add . && git commit -m "first version"
    # create an empty repo on GitHub, then:
    git remote add origin git@github.com:YOUR_USER/mi-bot.git
    git push -u origin main

    Revisa que .env esté en .gitignore antes del primer commit.

  2. Crea el proyecto en Railway

    Inicia sesión en Railway, elige New Project, luego Deploy from GitHub repo y selecciona tu repositorio. Railway detecta el Dockerfile y lo compila.

  3. Agrega las variables

    Abre el servicio, ve a Variables y agrega:

    BOT_TOKEN=123456789:your-real-token
    MODE=polling

    Para la plantilla de discord.js usa DISCORD_TOKEN y CLIENT_ID, y ejecuta una vez el script de registro desde tu computadora.

  4. Despliega y revisa los logs

    Guardar variables provoca un nuevo despliegue. Abre Deployments y luego los logs del último despliegue.

    Logs de despliegue de Railway (ilustración)Building with Dockerfile...Build successfulStarting container@mi_primer_demo_bot running with long polling1imagen compilada2bot en vivo
    Figura 2. Así se ve un primer despliegue sano en la vista de Deploy Logs (ilustración, no es una captura real).

    Mantén una sola réplica con long polling: dos copias con el mismo token causan 409 Conflict.

  5. Opcional: cambia a webhooks

    En Settings, Networking genera un dominio público. Después configura:

    MODE=webhook
    WEBHOOK_URL=https://YOUR-SERVICE.up.railway.app/telegram/webhook
    WEBHOOK_SECRET=paste-output-of-openssl-rand-hex-32

    Railway inyecta PORT; la plantilla escucha en ese puerto y responde /healthz. Con webhooks puedes tener más de una réplica.

  6. Entiende el costo

    La página de precios de Railway (verificada el 2026-10-19) muestra un plan Hobby de $5 USD al mes que incluye $5 USD de uso, y tarifas de aproximadamente $10 USD por GB de RAM al mes y $20 USD por vCPU al mes, cobradas por segundo. Un bot pequeño e inactivo que use unos 100 MB de RAM y muy poca CPU consume más o menos $1 USD de RAM al mes con esas tarifas, lo que cabe en el uso incluido. Es una estimación: revisa la página de uso después de unos días y define un límite. railway.com/pricing

Solución de problemas

  • El build falla en npm ci: haz commit de package-lock.json o cambia el Dockerfile a npm install.
  • El bot inicia y se detiene: falta una variable; la plantilla termina con un mensaje claro en los logs.
  • 409 Conflict: tu copia local sigue haciendo polling con el mismo token. Detenla.

Compara con otros proveedores en el comparador de hosting.