Discord Bot Hosting Run Discord and Telegram bots 24/7 on your own VPS
To host a Discord or Telegram bot 24/7, run it on a small Linux VPS under systemd. Here that is a KVM server with Ubuntu or Debian and full root from €4.99/month in Amsterdam, online about a minute after your payment is confirmed, with its own IPv4 address. discord.js, discord.py, JDA, aiogram, python-telegram-bot or Go — whatever runs on Linux runs here.
- Any language Linux runs
- Own IPv4 address
- Online in about a minute
- Always-on DDoS protection
Bot VPS
For Discord and Telegram bots
- Runtime
- Node.js, Python, Go, Java… (you install)
- System
- Ubuntu · Debian
- Process manager
- systemd · pm2 · Docker
- Inbound port
- None for a Gateway bot
- IP address
- Own IPv4
- From
- €4.99/month
01Why a VPS
Why host a bot on a VPS instead of a free host?
A bot has to stay connected around the clock. Free tiers often put idle apps to sleep, share one IP address between many users and limit what you can install; a VPS is a server of your own that stays on.
Nothing goes to sleep
The server runs until you stop it: no idle timeout, no keep-alive pings needed. Your bot's Gateway connection stays up as long as your code does.
An IPv4 address of your own
Discord temporarily blocks IP addresses that send too many invalid requests. On a shared address, other people's bots can trigger that block for yours; on your own IPv4, only your own code can.
Full root
Install any runtime in any version, a database such as PostgreSQL or Redis, ffmpeg or Lavalink, and run as many processes as the plan has room for.
A fixed monthly price
€4.99/month for the smallest plan in Amsterdam, the same every month — nothing is billed by CPU hours or requests. Prepay up to 12 months and the rate drops by up to 15%.
02Networking
Do I need an open port or a domain for my bot?
Usually not. A bot that connects out to Discord or Telegram needs neither; only setups where the platform calls your server do.
Discord Gateway bot
discord.js, discord.py, JDA and most other libraries open a WebSocket from your server to Discord's Gateway. All of it is outbound, so no port has to be open and no domain is needed — a firewall that lets in SSH only is enough.
Discord interactions endpoint
Set an Interactions Endpoint URL instead, and Discord delivers each slash command as an HTTPS request to your server. That needs a public HTTPS URL — in practice a domain with a TLS certificate. Point a domain at your VPS and add HTTPS first.
Telegram bot
Long polling (getUpdates), the usual start in aiogram and python-telegram-bot, needs no domain and no open port. A webhook needs a public HTTPS URL on port 443, 80, 88 or 8443 — and while one is set, getUpdates stops working.
Our own bots run the same way: @vmheaven_bot uses long polling and our Discord app connects over the Gateway, so neither needs an inbound port.
03Deploy
How do I deploy a bot so it runs 24/7?
With systemd, which every Ubuntu and Debian server already runs: it starts the bot at boot and restarts it after a crash. Five steps from a fresh server:
- 01
Create a user for the bot
Log in over SSH and add an unprivileged user with adduser bot, so a bug in the bot cannot reach the rest of the system. Our first-ten-minutes checklist covers SSH keys and updates.
- 02
Fetch your code
Clone your repository into the bot user's home directory with git clone — or copy it over with scp or rsync.
- 03
Install the runtime
Python: apt install python3-venv, create a virtual environment and pip install your requirements inside it — pip refuses system-wide installs on current Debian and Ubuntu, and the command is python3, not python. Node.js: install a current LTS release from NodeSource or nvm, then npm ci; the distribution's nodejs package often lags behind.
- 04
Write a systemd unit
Create /etc/systemd/system/bot.service as below. Restart=always brings the bot back after a crash, and the token sits in an EnvironmentFile — a line such as DISCORD_TOKEN=… in a file with permissions 600 — not in your code or your Git history.
- 05
Enable it and watch the log
systemctl enable --now bot starts the bot now and at every boot; journalctl -u bot -f follows its log. To ship an update: git pull, then systemctl restart bot. If a webhook bot fails to restart with EADDRINUSE, the old process still holds its port.
[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target
[Service]
User=bot
WorkingDirectory=/home/bot/app
EnvironmentFile=/home/bot/app/.env
ExecStart=/usr/bin/node index.js
# Python: ExecStart=/home/bot/app/.venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetFor a Python bot, use the commented ExecStart line instead; with nvm, use the path that which node prints. After every change to a unit, run systemctl daemon-reload.
Prefer a different tool? pm2 does the same for Node.js — pm2 start index.js, then pm2 startup and pm2 save so it survives a reboot — and Docker Compose with restart: unless-stopped works for any language (docker: command not found?). systemd needs a full VM: in a container systemctl is missing, and every KVM server here has it. Before the bot goes live, switch to SSH keys and turn on a UFW firewall that lets in SSH only, plus 443 for a webhook.
Pick Ubuntu 24.04 LTS or Debian 13 (Trixie) at checkout — older releases are on the list too — and reinstall from the panel whenever you want a clean start. More on Ubuntu VPS and Debian VPS.
04Plans
Which plan does my bot need?
Less than you might think: the smallest plan runs a typical slash-command or moderation bot comfortably. Size up for voice, music and very large bots.
Standard KVM
Most botsThe most vCores and RAM per euro — 2 vCores and 4 GB RAM for €4.99. Room for the bot, its database and a second or third bot next to it.
| Plan | vCores | RAM | Storage | Amsterdam |
|---|---|---|---|---|
| STANDARD KVM 1 | 2 | 4 GB DDR4 | 20 GB | €4.99/mo |
| STANDARD KVM 2 | 4 | 8 GB DDR4 | 40 GB | €9.99/mo |
| STANDARD KVM 3 | 6 | 12 GB DDR4 | 60 GB | €14.99/mo |
Hi-CPU KVM
One hot threadFewer vCores per plan, on AMD EPYC 7443. Node.js and Python run a bot's own code in one main thread; when that thread is the bottleneck, this is the line for it.
| Plan | vCores | RAM | Storage | Amsterdam |
|---|---|---|---|---|
| HI-CPU 1 | 1 | 2 GB ECC | 20 GB | €4.99/mo |
| HI-CPU 2 | 2 | 4 GB ECC | 40 GB | €9.99/mo |
| HI-CPU 3 | 3 | 6 GB ECC | 60 GB | €14.99/mo |
Simple bots
Slash commands, moderation, reminders, a small SQLite or PostgreSQL database: the €4.99 plan. A bot like this typically uses a small part of its 4 GB.
Voice and music bots
Encoding audio with ffmpeg, or running Lavalink — a Java server — beside the bot, costs CPU for every active voice channel and memory for the JVM. Take a larger Standard plan for RAM, or Hi-CPU when one busy thread is the limit.
Big bots
From 2,500 servers on, Discord requires sharding; every shard is another Gateway connection and more memory. Grow along the Standard line — and if the kernel kills the bot for lack of memory, that is the sign.
Several bots, one server
Give each bot its own user and its own unit — bot-a.service, bot-b.service — so a crash or a deploy of one never touches the others.
Start small: an upgrade from the panel gives the same server more vCores, RAM and storage — your data and your IP address stay, and the new resources apply after a reboot.
Standard KVM and Hi-CPU KVM are sold out in Frankfurt right now. For a bot in Germany, DMCA Ignored KVM and Pentesting KVM are on sale there from €8.99 — VPS in Germany shows what Frankfurt sells.
Pay by card, PayPal or in crypto — Bitcoin, Ethereum, USDT, Litecoin, Monero and more — with no ID check: how paying in crypto works.
05Chat control
Can I manage my server from Discord or Telegram?
Yes. Our Telegram bot @vmheaven_bot and our Discord app connect to your VMHeaven account, so the server your bot runs on can be checked and restarted from the same chat app.
Connect in the panel
Open Settings → Contact, tick the consent box and connect Telegram, Discord or both. Connecting Discord also adds you to the VMHeaven Discord server, which is what lets the bot message you. /unlink or Disconnect ends it at any time.
Status and power
/services lists your servers with live status, IP address and renewal date. Start, stop or restart one with a tap — stop and restart ask for confirmation first.
Invoices and balance
/invoices shows what is open and /balance your credit; pay an invoice or top up right in the chat, by card or crypto.
Reminders and alerts
Expiry reminders 7, 3 and 1 day ahead, bundled into one message a day, a warning when your credit won't cover an auto-renewal, and a note when a new server is ready or a server is back online after its host restarted.
Support tickets
A message when support answers your ticket — the answer itself stays in the panel — and you can reply to the ticket straight from the chat.
No passwords in chat
Passwords and login details are never sent through Telegram or Discord. They stay in your e-mail and the panel.
Both bots are in beta and gain features regularly — tell us in a ticket what you are missing. To talk to other customers and the team, join our Discord server or our Telegram channel.
06Rules
What bots are allowed?
Any lawful bot. Our Acceptable Use Policy names “automated tasks, bots, and scripts for lawful purposes” as permitted use.
Allowed
Community, moderation, utility, game, music and notification bots, the APIs and dashboards behind them, and any other lawful automation.
Forbidden
Malware and botnet command-and-control, phishing and fraud, and spam. Botnet controllers are terminated automatically, and activity that gets the range blacklisted on Spamhaus or URLHaus can end the service at once.
Platform rules are yours
Discord and Telegram have terms of their own: selfbots — automated user accounts — break Discord's, and mass-DM, raid and spam tools break both. Keeping your bot within them is up to you as its owner.
The complete rules are in our Acceptable Use Policy.
07FAQ
Discord bot hosting: questions
Everything you need to know before deploying — and a human if you need more.
08Use cases & related
Related plans and guides
Other servers we run for neighbouring jobs, each with its starting price, and three guides worth reading before you order.
Related plans
- Bots, game servers and builds
AMD EPYC Hi-CPU VPS from €4.99/mo
1 to 14 AMD EPYC vCores at Standard KVM's nine prices, built for single-thread work.
- Websites, apps and game servers
Standard KVM VPS from €4.99/mo
Intel KVM with the most vCores per euro: 2 to 32 vCores in nine sizes, in Amsterdam.
- Game servers
Gaming VPS from €4.99/mo
Your own Palworld, Valheim, Rust or ARK server, with RAM sized per game and always-on DDoS mitigation.
- Ubuntu servers
Ubuntu VPS from €4.99/mo
Ubuntu LTS with root over SSH and a kernel of its own, so Docker and WireGuard work without workarounds.
- Debian servers
Debian VPS from €4.99/mo
Debian with root over SSH: pick the release at checkout, reinstall a clean system from the panel.
- Paying in crypto
Anonymous crypto VPS from €4.99/mo
BTC, ETH, USDT, LTC, XMR and more through Cryptomus, against a euro invoice.
GuidesFrom the VMHeaven blog
Ready to run your bot 24/7?
Enterprise-grade compute in the EU — no contracts, cancel anytime, backed by our 99.5% uptime SLA.
