Skip to main content

Discord Bot Hosting

Discord bot hosting that stays online

A bot on your laptop goes offline when your laptop does. Put the same container on Hostim.dev and it runs all the time. A bot only makes outgoing connections, so it needs no public port. The price is flat €2.50 a month on EU servers.

1000+apps deployed
380+developers building
260+services running now
Oct 2025in production since

What a bot needs from a host

Five things, and here is how each one maps to a Hostim feature.

Runs 24/7

The container runs continuously. There is no sleep mode and no scale-to-zero, so the bot is connected to Discord from the moment it starts until you stop it.

Restarts when it crashes

If the bot process exits, Hostim starts it again. You do not need a watchdog or a systemd unit.

Keeps the token secret

The Discord token goes in an environment variable, not in the image or the repository. You can change it without rebuilding.

Keeps data across restarts

Attach a volume for a SQLite database or a JSON file, and the data survives a redeploy or a crash. Write files inside the volume's mount path.

Shows logs

The Logs tab streams everything the bot prints, so you can see why it disconnected or which command it failed on.

How to host a Discord bot on Hostim

A bot is a container with no public port. These are the steps in the dashboard.

  1. Put a Dockerfile in the repo. Hostim builds from a Dockerfile, so the repo needs one. A short Python bot:

    Dockerfile (discord.py)

    FROM python:3.12-slim
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY bot.py .
    CMD ["python", "bot.py"]
    
    The same for a Node.js bot:

    Dockerfile (discord.js)

    FROM node:20-slim
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci --omit=dev
    COPY index.js .
    CMD ["node", "index.js"]
    
    See deploying from Git for the Dockerfile path and build context rules.
  2. Create a project. A project holds the bot, its databases and its volumes.
  3. Add an app from Git or from a Docker image. From Git, Hostim builds the image for you. From a registry, point it at a public or private image. See deploying from Docker.
  4. Under HTTP Service, choose No HTTP. A bot only makes outgoing connections to Discord, so it does not need a public port or a domain. No HTTP is the right choice. Note that a health check path needs HTTP, so a No HTTP app has no health check path — that is expected for a bot. See advanced app settings.
  5. Add DISCORD_TOKEN as an environment variable. Put the token in the Envs tab, not in the code. See environment variables.
  6. Attach a volume if the bot writes files. A SQLite file or a JSON store must live inside the volume's mount path or it is lost on the next deploy. See volumes.
  7. Deploy. The container starts and connects to Discord.
  8. Read the logs. Open the Logs tab to watch the bot start and to debug any error. See logs.

Telegram bots

A Telegram bot runs the same way, with one extra decision. If the bot reads updates by long polling, it only makes outgoing connections, so choose No HTTP and give it no port, exactly like the Discord bot.

If the bot uses webhook mode, Telegram must reach it, so it needs a public HTTPS URL. Choose Public website and Hostim gives the app an HTTPS domain with a certificate already in place. Point the webhook at that URL.

Free bot hosting vs paid

Hostim is not free. The cheapest app plan is €2.50 a month for one shared core and a 1 GB RAM limit. New accounts get a 5-day trial with no credit card, then it is €2.50 a month.

Free bot hosts are not the same thing. Many cap RAM, sleep the bot or restart it on a timer, or ask you to renew every few days. A bot that sleeps cannot hold a connection. A €2.50 a month container does not sleep: it runs until you stop it.

If a bot is idle most of the time, that flat price is the thing you are paying for — a container that is always there when an event arrives.

When Hostim is not the right choice

  • If you only want a free host for a small hobby bot, a free host may be enough. Hostim is not free after the trial.
  • Hostim needs a Dockerfile or an image. There is no one-click "upload your .py" today.
  • There is one region, in the EU. If your bot must run in another continent, this is not it.

In the EU, on purpose

Hostim runs in German data centers under EU jurisdiction, with no US parent company and no CLOUD Act exposure.

Every project includes a free Postgres (256 MB), MySQL (256 MB), Redis (128 MB) and a 1 GB volume, in the same place as the bot.

Discord bot hosting FAQ

Is there free Discord bot hosting on Hostim?

No. Hostim is not free. New accounts get a 5-day trial with no credit card required, which is enough to deploy the bot and check that it stays online. After the trial the cheapest app plan is €2.50 per month for one shared core and a 1 GB RAM limit, billed hourly in EUR excluding VAT.

Does my bot need a port?

No. A Discord bot only makes outgoing connections to Discord, so it does not need a public port or a domain. Under HTTP Service choose No HTTP. The exception is a Telegram bot in webhook mode, which needs a public HTTPS URL; choose Public website for that and Hostim gives the app a domain.

How do I keep my bot online 24/7?

Run it as a container that does not sleep. Hostim has no sleep mode and no scale-to-zero, so the bot stays connected continuously. If the bot process exits, Hostim starts it again, so you do not need a watchdog process.

Can I host a Telegram bot?

Yes, the same as a Discord bot. A long-polling Telegram bot needs no port, so choose No HTTP. A webhook-mode bot must be reachable by Telegram over HTTPS, so choose Public website and point the webhook at the HTTPS domain Hostim provides.

Where do I put my bot token?

In an environment variable, never in the code or the image. Add DISCORD_TOKEN (or TELEGRAM_BOT_TOKEN) in the Envs tab of the app. That keeps the token out of the repository and lets you rotate it without rebuilding the image.

Can my bot use a database?

Yes. Every project includes a free Postgres (256 MB), MySQL (256 MB), Redis (128 MB) and a 1 GB volume. For a small bot a SQLite or JSON file on that volume is enough; for shared state use the managed Postgres, MySQL or Redis, whose connection details are exposed to the app as environment variables.

Start now

Put something live today.

Open the dashboard and deploy a Docker image, a Git repo or a template. The 5-day trial project needs no card.