Discord bots have a hosting market all their own. Bot developers start on free tiers (Replit, Glitch, Heroku-style platforms), eventually hit the limits, and look for "real" hosting. The good news: Discord bots are some of the lightest workloads in existence, so the "real" hosting is genuinely cheap. This guide covers what bot hosting actually needs, why free tiers fail at scale, and the configuration that keeps your bot online 24/7 without babysitting.
What's in this guide
What Discord bots actually need
A Discord bot is a small program that maintains a WebSocket connection to Discord's gateway, receives events (messages, reactions, joins), and responds via the Discord API. Resource profile:
- Memory: low. Most Python or Node bots use 50-200MB RAM. Java/Kotlin bots use 200-500MB. Even bots in 1000+ servers rarely cross 1GB.
- CPU: very low. Idle most of the time, brief spikes when handling commands. A 1 vCPU plan handles bots in tens of thousands of servers.
- Network: light. A few KB/s sustained for a typical bot. Music bots are the exception — they stream audio at 64-256 Kbps per active voice channel.
- Disk: minimal. The bot binary, dependencies, and a small database. 10GB is plenty.
- Latency to Discord: matters a little. Lower latency to Discord's gateway = slightly snappier responses. The difference between 30ms and 200ms is barely perceptible to users.
- 24/7 uptime: essential. A bot that goes offline disconnects from voice channels, misses commands, and frustrates users. Reliability beats raw performance.
The implication: almost any "real" VPS handles a Discord bot trivially. The question becomes about uptime and reliability, not raw specs.
Why free tier hosting eventually fails
Most bot devs start on free tiers — Replit, Glitch, Render free, etc. — and hit predictable problems:
- Sleep policies. Free tiers shut down "idle" containers after a few minutes. Your bot disconnects. You wake it up with a ping every 5 minutes (a hack that works until the platform notices).
- Time limits. Many free tiers cap monthly runtime. Bot exceeds the cap mid-month, goes offline.
- Resource throttling. Free tiers throttle CPU under any sustained load. Your bot's command response times degrade.
- Network restrictions. Some free tiers block voice gateway connections (so music bots don't work) or rate-limit outbound API calls.
- Persistent storage cost. Many free platforms reset filesystems on restart. Your bot loses its SQLite database every deploy.
- Eventually, a paid tier. Free tiers are loss leaders. Once you grow, the platform's paid tier costs $7-25/mo for what a real $4/mo VPS would do better.
The point at which "I should just buy a real VPS" is usually when you've spent more time fighting free-tier limitations than the VPS would cost in a year.
Sizing by bot type
| Bot scale | RAM | vCPU | Disk | Plan tier |
|---|---|---|---|---|
| Personal bot, 1-10 servers | 512MB | 1 vCPU | 20GB | Starter ($3.99/mo) |
| Mid-size bot, 100-1000 servers | 1-2GB | 1 vCPU | 20GB | Starter or Pro |
| Large bot, 1000-10,000 servers | 2-4GB | 1-2 vCPU | 40GB | Pro ($7.99/mo) |
| Major bot, 10,000+ servers | 4-8GB | 2-4 vCPU | 60GB | Premium ($15.99/mo) |
| Top-tier (100k+ servers, sharded) | 16GB+ | 4+ vCPU | 80GB+ | Multiple Premium or dedicated |
For 95% of bot developers, the entry-tier Starter plan at $3.99/mo is genuinely enough. Don't over-buy.
Resource use by language
Roughly, by ascending memory footprint:
- Go (DiscordGo): 30-100MB. Compiled, lean. Best resource efficiency.
- Rust (serenity, twilight): 30-100MB. Similar to Go.
- Python (discord.py, py-cord): 100-300MB. Most popular for hobby bots. Easy to write, moderate memory.
- Node.js (discord.js): 150-400MB. Most popular for production bots. Async-friendly, large ecosystem.
- Java/Kotlin (JDA, Discord4J): 300-800MB. JVM overhead. Heavier but well-suited for large bots.
The language doesn't make your bot faster or slower in user-perceived terms — Discord rate limits dominate any per-language differences. Pick the language you already know.
Music bots specifically
Music bots are the heaviest bot category. They stream audio to voice channels, which is meaningfully more resource-intensive than text-only bots. Specifics:
- Per active voice channel: 30-100MB RAM, 64-256 Kbps bandwidth, light CPU.
- Bot in 100 servers, 10 simultaneously playing music: 1-2 GB RAM, 1-2 Mbps bandwidth.
- Bot in 1000 servers, 100 simultaneously playing music: 4-8 GB RAM, 10-25 Mbps bandwidth. OliveVPS Pro or Premium tier.
- Major music bot (Hydra/Rythm-scale, since shut down): Tens of thousands of concurrent voice connections, requires sharded architecture across multiple VPS instances.
Music bots also benefit from low latency to Discord's voice servers — pick a region near a major Discord voice region. Frankfurt and US East are common defaults.
Note that running large public music bots is a different category from hobby music bots — Discord's terms have tightened around YouTube-streaming bots, and major music bots have been shut down. Self-hosted personal music bots remain fine.
Region selection
Discord operates voice servers globally. Bot-to-Discord-gateway latency is rarely a major concern (Discord's gateway is widely distributed). What matters more for music bots is bot-to-voice-server latency.
Reasonable defaults:
- European audience: Frankfurt or London. Discord has strong voice presence in both.
- US audience: New York for East Coast or Dallas for central; Los Angeles for West.
- Indian audience: Mumbai or Singapore.
- Australian audience: Sydney.
- Brazilian audience: São Paulo.
For globally-spread audiences, pick the region matching your largest user concentration. Bot latency variance of 50-100ms across regions doesn't matter for text bots; for music bots it can affect voice connection quality, but not by much. All OliveVPS regions →
Production configuration
Setup we recommend for keeping bots up reliably:
1. Use a process manager
Don't run your bot in a screen session. Use systemd, pm2, or supervisord — something that auto-restarts on crash and starts on boot. Our PM2 guide covers this for Node.js bots; the principle applies to any language.
2. Log to a file you actually look at
Bots crash for weird reasons. Logs tell you why. Pipe stdout/stderr to a logfile, rotate it (logrotate or pm2-logrotate), and check it when something breaks.
3. Set up basic monitoring
A simple cron that emails you if your bot's process dies, or a separate VPS that pings your bot's healthcheck endpoint every minute. Keeps you from finding out your bot has been offline for three days from a Discord user.
4. Daily backups of your bot's data
Whatever the bot stores — SQLite database, JSON config files, user preferences — back it up. Restic or borg to S3-compatible storage. Backup guide →
5. Use git for deploys
git pull on the VPS, restart the process. Or set up a webhook that auto-deploys on push to main. Either way, no SFTP'ing files manually.
Discord bot hosting from $3.99/mo
Real KVM VPS, dedicated cores, 24/7 uptime, no sleep policies, no time limits. Same hardware as our biggest customers — just smaller portions.
See VPS Plans →Common mistakes
Buying way more VPS than the bot needs. A music bot in 50 servers does not need a $50/mo VPS. Start with Starter ($3.99/mo), upgrade only if you actually need more.
Hard-coding the bot token in source control. Use environment variables. A bot token leaked to GitHub is a bot that gets banned within hours.
Running the bot as root. Create a dedicated low-privilege user. If your bot has a vulnerability, root access compounds it.
Not handling rate limits properly. Discord rate-limits API calls. Libraries handle this if you let them, but ignoring rate-limit responses gets your bot temp-banned. Read your library's rate-limiting docs.
No graceful shutdown. When you restart your bot, handle SIGTERM and disconnect cleanly. Otherwise, Discord sees abrupt disconnects and can be slow to recognize the bot is back online.
FAQ
What's the cheapest VPS for a Discord bot?
Around $4/mo for a real VPS with KVM virtualization, dedicated CPU, and NVMe storage from a quality host. OliveVPS Starter at $3.99/mo. Below that, you're getting OpenVZ or shared CPU and inconsistent uptime — not worth saving a dollar.
Can I run multiple bots on one VPS?
Yes. Easily. A 1GB VPS can run 5-10 small bots concurrently. Use systemd or PM2 to manage them as separate services. The constraint is RAM — once each bot starts using significant memory, you need a bigger plan.
Should I use Docker for my Discord bot?
Optional. Docker adds a thin abstraction layer that makes deploys cleaner and isolates dependencies, but adds 30-50MB of overhead and slight complexity. For small personal bots, it's overkill. For production bots you deploy frequently, it's worthwhile. Our Docker guide covers setup.
How do I keep my bot running 24/7?
Three layers: (1) a process manager (systemd/PM2) that restarts on crash, (2) a real VPS that doesn't have sleep policies, (3) basic monitoring that alerts you when (1) and (2) fail. The combination gets you 99.9%+ uptime with minimal effort.
Will Discord ban me for self-hosting a bot?
No — self-hosting is the standard way to run bots. Discord cares about what your bot does (spam, ToS violations, etc.), not where it runs. Run a normal bot from your VPS, no problem.