Skip to content

Discord bot VPS that keeps discord.py and discord.js online 24/7

Root SSH on a headless Linux server with systemd built in. Node.js, Python and pm2 are one command away. Deploy once, let pm2 restart your bot in seconds if it crashes, and stop worrying about your laptop lid.

  • Servers in Germany and the Netherlands
  • Restart after a crash in under 5 seconds
  • Pay with crypto, no KYC

Home PCs weren't built for bots

Your users don't care that your ISP hiccupped or Windows rebooted for updates. Missed messages and silent gateway disconnects are how good bots get removed.

Gateway disconnects

Home connections drop the WebSocket every few hours. Discord's resume window is 3 minutes. Miss it and you lose events until a full re-identify.

Power and sleep

Laptops close and desktops sleep. One Windows Update reboot at 2am and your bot is offline until you wake up.

Static IPs and firewalls

Rate limits, IP-locked webhooks and OAuth callbacks assume a stable IP. Home ISPs change yours whenever they like.

Bot crashed at 3am? pm2 caught it before your users did.

Every Linux image ships with systemd, and pm2 is one npm install away. Set Restart=always once and a crashed process is back online in under five seconds, with rotated logs.

  • Auto-restart on a crash, memory leak or exit code
  • Starts again after a server reboot with pm2 startup or systemd
  • Log rotation and per-bot metrics with pm2
~/mybot
$ pm2 start bot.js --name mybot
[PM2] Starting bot.js in fork_mode (1 instance)
[PM2] Done.
$ pm2 startup
[PM2] Init system found: systemd
$ pm2 save
[PM2] Saving current process list...

Ship in any language

One apt-get away. Use nvm, pyenv or asdf. Your server, your toolchain.

  • Node.js
    discord.js, Eris, Sapphire
    18, 20, 22 LTS
  • Python
    discord.py, Pycord, Nextcord
    3.10, 3.11, 3.12
  • Go
    discordgo, Disgord
    1.21, 1.22
  • Rust
    serenity, twilight-rs
    stable, nightly

Close to Discord's European gateway

Near the European regions where Discord runs gateway and voice servers.

  • Germany
    EU data center close to Discord's European gateway and voice regions
  • Netherlands
    EU data center close to Discord's European gateway and voice regions

From one hobby bot to a sharded public bot

1. One bot, one server

A discord.py bot in 5 to 20 guilds runs happily on the Basic plan. 6 GB RAM is plenty with member cache off.

2. Several bots or workers

Add a music bot, a modmail bot or a scraping worker. Standard gives you 8 GB and 4 vCPU, and pm2 supervises them all.

3. Sharded and public

Past 2,500 guilds Discord requires sharding. Pro's 6 vCPU and 12 GB run AutoShardingManager, Lavalink and Postgres in Docker Compose.

Discord bot VPS plans

Linux VPS plans with root access. The Basic plan is plenty for most single bots.

Questions bot developers ask

Still unsure? Our team answers on live chat and in tickets.

Why can't I just run my bot on my laptop or home PC?

Three things break in production: your machine isn't awake at 4am when Discord rate-limits your gateway and your bot needs to reconnect, your home ISP assigns a dynamic IP and occasionally drops the WebSocket for a few seconds (Discord marks that as a disconnect and starts a resume window), and Windows Update decides to reboot on Tuesday. A VPS is a headless Linux box with a static IP, systemd, and 99.9% uptime: the same environment every serious public bot runs on.

How do I keep discord.py / discord.js running after I disconnect SSH?

Don't use nohup or screen. Use a proper process manager. For Node.js, pm2 gives you `pm2 start bot.js --name mybot`, auto-restart on crash, log rotation, and `pm2 startup` for boot persistence. For Python, a systemd unit file (10 lines) with Restart=always and RestartSec=5 is the standard. systemd is built into our Linux images and pm2 is one npm install away.

Do you offer auto-restart if my bot crashes?

The VPS itself has 99.9% uptime, but your bot process crashing is up to your code, and that's exactly what pm2 and systemd solve. Combined with a Restart=always policy, a crashed bot is back online in under 5 seconds. We can also help you wire up a simple healthcheck endpoint that Uptime Kuma or Better Stack can ping.

How much RAM does a discord.py or discord.js bot actually need?

A small bot in 20–50 servers with cached members off runs comfortably in 150–300 MB. Enable member cache or presence intents and that climbs quickly: a bot in 1000 guilds with the members intent typically sits at 800 MB–1.5 GB. Music bots with lavalink push another 200–500 MB per node. The Basic plan is plenty for single-server bots; Standard and up make sense once you're sharded or caching members.

Do I need sharding?

Discord requires sharding above 2,500 guilds. discord.js's AutoShardingManager and discord.py's AutoShardedBot handle the split for you. You just need enough CPU cores and RAM to run multiple gateway connections. The Pro and Advanced plans are where sharding starts being a real workload.

Linux or Windows for Discord bots?

Linux, always. Every deployment tool, every logging pipeline, and Discord's own libraries assume Linux. Pick Ubuntu or Debian when you order and install Node.js, Python, or Docker in a minute. Windows RDP is available if you're bridging with a Windows-only game server, but it's the wrong tool for a bot.

Can I run a music bot with Lavalink?

Yes. Lavalink is a Java process: install openjdk, drop the jar, run behind systemd. The Standard plan (4 vCPU / 8 GB) handles Lavalink plus a discord.js bot serving music to a dozen guilds. For a public music bot serving thousands of guilds, Advanced or a custom build with separate Lavalink servers is the right sizing.

What about latency to Discord's servers?

Our servers are in Germany and the Netherlands, close to the European regions where Discord runs gateway and voice servers, so slash commands feel instant for EU communities. Bots with a mostly American or Asian audience still work fine: for a bot, a stable gateway connection matters more than the last few milliseconds.

How fast can I deploy?

Your server is set up as soon as your crypto payment confirms: a minute or two on USDT TRC-20, 10–20 minutes on BTC or XMR. You get root SSH credentials the moment the VM is imaged; `git clone && npm install && pm2 start` and you're live.

Give your bot a static IP and a real init system.

Spin up a Linux VPS, git clone, pm2 start, and stop checking whether your bot is still online.