EQVPS

How to Host a Discord Bot on a VPS 24/7 (No-KYC, Crypto-Paid)

Jun 22, 2026 · 3 min read · EQVPS Team

A Discord bot on your laptop dies the moment you close the lid. Fine for testing — useless for a bot your server actually depends on. Move it to a VPS and it stays online: it survives your wifi dropping, doesn't stop when you sleep, and reconnects to Discord on its own.

Here's the whole thing — a minimal bot, a service that keeps it alive, and how to pay without handing over an ID.

Why a VPS, not your laptop

A Discord bot needs a stable, always-on connection to Discord's gateway. A laptop sleeps, reboots for updates, and changes networks — every time, the bot drops offline and members notice. A VPS holds one steady connection around the clock. That's the entire reason people move bots off personal machines.

What size — and how you pay

A Discord bot is light. It holds a websocket and reacts to events, so the box mostly waits:

Two practical calls:

It's CPU-only and runs from a single datacenter in Germany — perfectly fine for a bot, worth knowing if you need a GPU or a specific region.

A minimal bot

SSH in, install Python, and drop in a small discord.py bot:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/bot && cd ~/bot
python3 -m venv venv && source venv/bin/activate
pip install -U discord.py
# bot.py
import os, discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f"online as {client.user}")

@client.event
async def on_message(m):
    if m.author == client.user:
        return
    if m.content == "!ping":
        await m.channel.send("pong")

client.run(os.environ["DISCORD_TOKEN"])

Get the token from the Discord Developer Portal (your application → Bot → Reset Token), and enable the Message Content intent there if your bot reads messages.

Keep it alive with systemd

Running python bot.py in your SSH session means the bot dies when you disconnect. A systemd service fixes that — it restarts on crashes and survives reboots:

# /etc/systemd/system/discordbot.service
[Unit]
Description=Discord bot
After=network-online.target

[Service]
User=botuser
WorkingDirectory=/home/botuser/bot
Environment=DISCORD_TOKEN=your-token-here
ExecStart=/home/botuser/bot/venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
sudo journalctl -u discordbot -f   # watch the logs

That's the difference between "a script I run" and "a bot that runs itself."

Honest caveats

Within that, a Discord bot on its own server just stays up — which is the whole point. Pick a plan, pay in crypto, and have it online in minutes. If you also run other bots, the same systemd pattern keeps any process alive.

FAQ

What VPS do I need for a Discord bot?

The smallest one. A Discord bot mostly idles on a websocket waiting for events, so 1 GB RAM and 1–2 cores handles most bots fine. You only need more if the bot itself does heavy work — image generation, a local model, music streaming for many servers.

Can I host a Discord bot without KYC?

Yes. Sign up with just an email and pay in crypto (USDC or USDT on Base or Ethereum) — no ID, no card. Convenient if you'd rather not tie a side-project bot to your identity.

Do I need a dedicated IP or open ports for a Discord bot?

No. The bot connects out to Discord's gateway over a websocket — it's all outbound, so a NAT VPS with port-forwarded SSH is enough. You only need inbound ports if you also run a web dashboard or receive webhooks.

How do I keep the bot running after I close SSH?

Run it as a systemd service. Started in your terminal, the bot dies when you log out; under systemd it stays up after logout, restarts on crashes, and comes back after a reboot.

Is it safe to put my bot token on a VPS?

Keep it in an environment variable or a root-only file, run the bot as a non-root user, and never commit it to git. A separate VPS is actually a safer home for a token than your main machine — if it leaks, you rotate one token, not your whole setup.

← Back to blogSee plans & pricing →