Free bot hosts are fine right up until they aren't. The moment your bot joins its tenth server, opens a database connection, or needs to answer a slash command at 3am, the free tier's sleep timers and idle kills start dropping you offline. This is the note we give every user who asks us why their bot keeps going unresponsive: at that scale you've outgrown the free lane and want a small, always-on discord bot hosting VPS instead. Below is exactly how we run one, and what it costs.
Why free tiers stop working once you're serious
Free and hobby platforms keep costs down by putting your process to sleep when there's no inbound web traffic, then cold-starting it on the next request. A Discord bot doesn't work that way — it holds a persistent WebSocket gateway connection to Discord and needs to be awake to receive events. When the host idles it out, the gateway drops, your bot shows offline, and reconnect storms can get you rate-limited. Add a database, a few scheduled jobs, and 10+ guilds, and you're now running a small always-on service, not a toy.
The other wall is resources. Free tiers cap RAM and CPU hard, and a bot that caches members, handles voice, or runs an ORM will happily blow past those caps. The fix isn't a bigger free tier — it's a box you actually control, where nothing kills the process but you.
What an always-on discord bot hosting VPS gives you
A VPS is just a small Linux machine with root SSH. Your bot runs as a normal process that stays up 24/7, restarts itself if it crashes, and survives reboots. No sleep, no idle timeout, no request-based lifecycle — the process runs until you stop it. For a single production bot you don't need much: our entry VPS I is 2GB RAM, 1 vCPU and 40GB NVMe at EUR 4/mo, which comfortably runs a Node or Python bot, a local Postgres or SQLite, and a reverse proxy for any webhook endpoints.
Because we bill hourly (EUR 0.0056/hr on VPS I, metered to the second), an intermittent or event-driven bot doesn't have to pay for a full month it doesn't use — spin it up, run it, and only pay for the hours it's on. Every plan includes IPv4 + IPv6, unmetered symmetric 1 Gbps, and root access, so you're never fighting the platform to install a runtime or open a port. Median deploy from our panel is around 47 seconds, so you're at an SSH prompt fast.
How we keep a bot running 24/7
Uptime isn't the machine staying on — it's the process staying on. Two things do that on a plain VPS, and we lean on both:
- A process supervisor. Run the bot under
systemdorpm2so it auto-restarts on crash and starts again after a reboot. A five-line systemd unit withRestart=alwaysis all it takes; pm2 gives you the same plus log rotation if you prefer Node tooling. - Graceful reconnects. Let your library (discord.js, discord.py, serenity) handle gateway resumes — don't hard-exit on a disconnect. The supervisor is your safety net for real crashes, not for every transient blip.
That combination is what turns "a server that's on" into "a bot that's up." Backed by our 99.9% uptime SLA on the underlying VPS, the only downtime you should see is your own deploys — and even those you can make near-zero by reloading under pm2.
Node vs Python — same box, same recipe
The stack doesn't change the sizing much. A discord.js bot and a discord.py bot both idle in the low tens of megabytes and scale with what you cache and compute. Install your runtime (Node LTS or Python 3.x), pull your code, set your token as an environment variable — never in the repo — and hand the process to the supervisor. If you build from a repo, wiring your VPS into a simple CI/CD pipeline means a push can rebuild and reload the bot for you. The 41 OS templates cover the usual Debian/Ubuntu bases most bot guides assume.
Picking a size
Start small and move up only when you measure a reason to. Here's how we map common bot workloads to plans:
| Plan | Specs | Price | Good for |
|---|---|---|---|
| VPS I | 2GB / 1 vCPU / 40GB | EUR 4/mo (EUR 0.0056/hr) | One bot, 10+ servers, small DB |
| VPS II | 4GB / 2 vCPU / 80GB | EUR 6/mo | Bot + heavier DB, light voice/media |
| VPS III | 8GB / 2 vCPU / 120GB | EUR 10/mo | Multiple bots or high-cache workloads |
Because it's hourly and the resize is quick, over-provisioning early is a waste — jump a tier the week you actually see memory pressure, not before.
How Noded Can Help
We run our own network — AS60982 across 13 EU POPs with sub-5ms intra-EU latency and free 1 Tbps DDoS protection on every plan — so your bot sits close to Discord's edge and stays reachable under attack. If you've outgrown the free lane, our Discord bot hosting gives you a root VPS from EUR 4/mo or EUR 0.0056/hr, deployed in under a minute, with IPv4 + IPv6 and a 99.9% SLA. Bring your token, run it under systemd or pm2, and let it stay up. We'll keep the box on; you keep the bot on.
FAQ
How much does it cost to host a Discord bot 24/7?
On our entry VPS I it's EUR 4/mo, or EUR 0.0056/hr billed to the second if you'd rather pay only for the hours the bot runs. That gets you 2GB RAM, 1 vCPU, 40GB NVMe, root SSH and IPv4 + IPv6 — enough for a single production bot with a small database.
Why does my bot keep going offline on free hosting?
Free tiers sleep or idle-kill your process when there's no web traffic, but a Discord bot needs to stay awake to hold its gateway connection. An always-on VPS never idles the process, so the bot stays online until you stop it.
How do I make my bot restart automatically if it crashes?
Run it under a process supervisor. A systemd unit with Restart=always, or pm2, will relaunch the bot on crash and again after a reboot — no manual intervention needed.
Can I host a Node.js and a Python bot on the same VPS?
Yes. You have root SSH, so install both runtimes and run each bot as its own supervised process. A 2GB VPS I handles a couple of lightweight bots; step up to VPS II or III if you cache heavily or add voice.
Is hourly billing better than monthly for a Discord bot?
For an always-on bot the monthly rate is usually cheaper. Hourly (EUR 0.0056/hr, to the second) shines for intermittent or event-driven bots you don't run around the clock — you only pay for the hours it's actually on.