Telegram bot hosting

Host your Telegram bot, from a template or your repository

Paste the token from BotFather and the grammY starter is answering /start within a minute, or point us at your own repository in any of eight runtimes. Polling needs no address and runs on the free tier; webhooks run behind the web address. Every push redeploys the bot.

  • First bot free, no card
  • Polling or webhooks
  • Always on, no sleep timer
  • Europe and North America
helper-botStarterOnline
Status
Online
Tier
Starter · 1 GB · 1 vCPU
Updates
Long polling, no address
Auto-deploy
main · 6b1d4e8
09:14:02Cloning github.com/FadeHost/telegram-starter-bot (main)
09:14:04Runtime: Node.js (package-lock.json found)
09:14:05npm ci: added 28 packages in 9 s
09:14:14> node index.js
09:14:15[bot] logged in as @example_helper_bot (polling mode)
09:14:15[bot] polling for updates
09:18:27/start handled in 96 ms
 

Two ways to run it

A Telegram bot gets its updates one of two ways, and the choice decides whether it needs a web address at all. The template does both: one environment variable switches between them.

Polling

Works on the free tier

The bot opens a connection to Telegram and asks for updates. Nothing has to reach it from outside, so it needs no web address and no open port. This is what the template does unless you tell it otherwise, and it is the right answer for almost every bot.

  • No address, no certificate, nothing to point at the bot
  • Runs on the free 256 MB tier as it is
  • TELEGRAM_BOT_TOKEN is the only variable you have to set

Webhooks

Needs the always-on address

Telegram delivers each update to your bot's https address instead. Set TELEGRAM_MODE to webhook and WEBHOOK_URL to the app's address, and the template registers https://name.fadehost.app/telegram when it starts. Telegram only delivers to ports 443, 80, 88 and 8443 over https with a valid certificate, which the web address meets as it is.

  • Worth it when the bot already serves a dashboard or an API on the same address
  • Worth it when you would rather Telegram called the bot than hold a connection open
  • WEBHOOK_SECRET travels with every update; the bot refuses updates without it
  • The address has to answer at any moment, so it has to be the always-on one: $2/mo or $20/yr

From BotFather to a live bot

  1. 1

    Get a token from BotFather

    In Telegram, message @BotFather, send /newbot, answer two questions and copy the token it hands back. It looks like 123456789:AAF... and it is the only thing that identifies your bot.

  2. 2

    Deploy the template or your repository

    In the panel, open Apps, host something and choose the Telegram bot. Take the template as it is, or point us at your own repository, public or private. The token goes in the environment table, never in the code.

  3. 3

    Send /start

    We clone the code, install it and start the bot. The live console shows it log in as your bot and answer the first update. Edit a handler, push, and the new version deploys itself.

What the template reads

One KEY=value per line in the environment table on the bot's page, values masked once they are saved.

TELEGRAM_BOT_TOKEN=123456789:AAF-token-from-botfather
TELEGRAM_MODE=polling
WEBHOOK_URL=https://helper-bot.fadehost.app
WEBHOOK_SECRET=a-long-random-string
PORT=8080

Polling needs the first line and nothing else. The next three are read only when TELEGRAM_MODE is webhook. PORT is set for you on every app, so leave it out unless your code wants a different one.

View the template source

What every bot gets

A Telegram bot is an app on the same runtime as everything else we host, so it gets what every app gets. All of it is on the bot's own page in the panel.

Push to deploy

Connect the FadeHost GitHub App once and every push to the branch reinstalls and restarts the bot. No SSH, no restart button.

Private repositories

Pick the repository through the GitHub App, or paste the URL with an access token. We fetch the code on every deploy and never store your credentials.

Live console

Everything the bot prints lands on its page as it happens, with the install and build output above it.

Crash doctor

When the bot dies in a loop we read the log and name the cause in plain words, usually within a minute: a token Telegram rejected, a package that is not installed, a handler that throws on every update.

Environment variables

TELEGRAM_BOT_TOKEN and the rest live in a table in the panel with their values masked. Edit, save once, and the bot restarts with the new values.

Deploy history and rollback

Every deploy is listed with its commit. Roll back pins the bot to an older one and redeploys it; unpin when the fix is pushed.

Scheduled commands

Run a command inside the bot's container on a cron schedule: a nightly cleanup, a digest, a reminder job. Ten per bot, each run keeping its exit code and last output.

Usage chart

CPU and memory over the last 24 hours, sampled every five minutes, on the bot's page. A bot sitting at its memory limit is obvious before it starts restarting.

Eight runtimes

Node.js, Python, Bun, Deno, Go, Java, PHP and Ruby, picked from what is in the repository. grammY, telegraf, python-telegram-bot and aiogram run as they are.

A web address

Give the bot a name and it answers at https://name.fadehost.app over HTTPS: the webhook endpoint, a dashboard, a status page. Free addresses sleep when idle; always on is $2 a month or $20 a year.

MySQL database

Paid bots include a MySQL database at no extra cost. One click creates it and the connection details land in the bot's environment.

One private network

From the bot's container you reach your databases and your game servers by name, on a network only your account is on.

Three regions

Europe West (France), Canada East (Montreal) or USA West (Oregon). Pick the one closest to you and to whatever the bot talks to.

Dockerfile and Railpack builds

Paid bots can build into an image instead of installing at start: your Dockerfile, or Railpack when there is none, started in seconds on every restart.

Backups

A daily backup of everything under /data for $1 a month per bot, kept seven days, restored in one click.

Always on, locked down

Non-root, a read-only filesystem apart from its own storage, hard memory and CPU limits, and an automatic restart if the bot falls over. No sleep timer, nothing to renew.

Pricing

Per bot, per month, on the same bill as your game servers and your other apps. Yearly is ten months for twelve.

Free
$0/mo
Starter
$2/mo
or $20/yr
Standard
$3/mo
or $30/yr
Pro
$6/mo
or $60/yr
RAM256 MB1 GB2 GB4 GB
CPU0.25 vCPU1 vCPU1 vCPU3 vCPU
Disk under /data3 GB5 GB10 GB20 GB
Databasenot on this tierMySQL includedMySQL includedMySQL included
Web addressSleeps when idle+$2/mo always on+$2/mo always on+$2/mo always on
Daily backups, 7 days+$1/mo+$1/mo+$1/mo+$1/mo
Image buildsnot on this tierDockerfile, RailpackDockerfile, RailpackDockerfile, Railpack
Bots1 per verified accountAs many as you pay forAs many as you pay forAs many as you pay for
Start freeAdd StarterAdd StandardAdd Pro
  • Always on, no sleep timer, no coins, no daily renewals
  • GitHub auto-deploy, live console, crash doctor
  • Deploy history and rollback, scheduled commands, usage chart
  • Environment variables, private network, three regions

What a typical setup costs

A polling bot

Free tier

$0

256 MB, a quarter of a CPU and 3 GB of disk, always on. Polling needs no address, so there is nothing else to pay for. One free app per verified account.

A webhook bot

Starter plus the always-on address

$4/mo

1 GB and 1 vCPU at $2, the address at $2, so Telegram always has somewhere to deliver. $40 a year if you pay yearly.

Bots go on the same subscription as your game servers and your other apps. Add one in the plan builder: one account, one bill.

Frequently asked questions

Is Telegram bot hosting free?
Yes. Every verified account gets one app free, and a bot is an app: 256 MB of RAM, a quarter of a CPU and 3 GB of disk, always on. No card, no coins, no daily renewal clicks and no sleep timer. Polling mode needs nothing else. Paid tiers are $2, $3 and $6 a month, or $20, $30 and $60 a year.
Polling or webhooks, which should I use?
Polling unless you have a reason not to. The bot asks Telegram for updates over an outgoing connection, so it needs no web address and runs on the free tier; the template uses it by default. Webhooks are worth it when the bot already has a web address for a dashboard or an API, or when you would rather Telegram called the bot than hold a connection open.
What does webhook mode need?
An always-on web address, which means a paid tier: $2 a month or $20 a year on top of the bot. Set TELEGRAM_MODE to webhook and WEBHOOK_URL to the address, and the template registers the webhook at /telegram when it starts. Set WEBHOOK_SECRET as well: Telegram sends it with every update and the bot refuses updates without it. Telegram only delivers to ports 443, 80, 88 and 8443 over https with a valid certificate, which https://name.fadehost.app meets as it is. A free address sleeps when nobody is using it, which is not what you want on the receiving end of a webhook.
What is in the template?
A grammY bot in Node.js with /start, /help, /ping, /id, an inline button and an echo. index.js wires up polling or webhook mode and every handler lives in src/commands.js, so adding a command is a few lines. It is a public MIT repository you can read, fork and change.
Which languages and libraries can I use?
Node.js, Python, Bun, Deno, Go, Java, PHP and Ruby, picked from what is in your repository. Anything that talks to the Bot API works: grammY, telegraf and node-telegram-bot-api on Node.js, python-telegram-bot and aiogram on Python. A language we do not detect can still run on a paid tier, which builds your Dockerfile.
Can I deploy my own repository?
Yes, public or private. Install the FadeHost GitHub App and pick the repository, or paste the URL with an access token. We clone it, install the dependencies, run your build if there is one and start the bot, and every push to the branch redeploys it.
Can I run a userbot with Telethon or Pyrogram?
A bot that logs in with a token from BotFather is what this is for, in any library. Automating a personal Telegram account against Telegram's own rules, adding members in bulk, scraping groups or sending unsolicited messages, is not allowed here. The full rules are in the terms.
Where does the bot keep its data?
Under /data, which survives deploys and restarts. The code directory is replaced with your repository on every deploy, so a file written next to the code is gone after the next push. For more than a file or two, a paid bot includes a MySQL database at no extra cost; PostgreSQL and Redis are managed databases on the same private network.
Can the bot also have a web page or a dashboard?
Yes. Give it a name and it answers at https://name.fadehost.app over HTTPS: a settings page, a status page, the webhook endpoint, or all three on one address. The bot listens on the PORT variable and we route the name to it. On the free tier that address sleeps when nobody is using it and wakes on the next request; on a paid tier it stays on for $2 a month or $20 a year.
What happens when the bot crashes?
It restarts on its own, and the crash doctor reads the log and names the cause, most often a token Telegram rejected with a 401 or a dependency missing from package.json. The live console keeps the output, so you can see what the bot said last.
What happens when a push breaks the bot?
Open the bot's deploy history, find the last commit that worked and roll back to it. The bot redeploys pinned to that commit while you fix the code; unpin when the fix is pushed.
What are the limits on each tier?
Free: 256 MB, 0.25 vCPU, 3 GB of disk, one app. Starter, Standard and Pro: 1, 2 and 4 GB of RAM, 1, 1 and 3 vCPU, and 5, 10 and 20 GB of disk. Every bot has a hard memory and CPU limit, and the 24 hour usage chart on its page shows how close it is running.
Where does my bot run?
Europe West (France), Canada East (Montreal) or USA West (Oregon). Pick the region closest to you and to the databases or game servers the bot talks to.
Can I run more than one Telegram bot?
One app is free per verified account. After that, add a tier for each bot at $2, $3 or $6 a month, on the same subscription as your game servers and your other apps.

What a bot may and may not do is in the terms.