Black Friday: eerste maand gratis per kwartaal · t/m 30 nov Bekijk de pakketten Voorwaarden
Nieuw hier? Probeer een Minecraft-server of Discord-bot 24 uur gratis. Gratis proberen
ServerSparkServerSpark

Kennisbank

Een Discord-bot 24/7 op een VPS draaien met systemd

Node.js of Python op Ubuntu of Debian, een aparte gebruiker, een venv, een systemd-service die na een crash herstart, en logs met journalctl.

NVMe-nodesNachtelijke back-upsBinnen minuten online

Bijgewerkt op 4 november 2026

Om een Discord-bot 24/7 op een VPS te draaien, installeer je Node.js of Python, zet je je code in de map van een eigen gebruiker en laat je systemd hem starten. systemd start de bot als de server opstart, herstart hem binnen een paar seconden na een crash en bewaart zijn logs. Screen, tmux of pm2 heb je daar niet voor nodig. Op Ubuntu 24.04 of Debian 12/13 ben je in een kwartier klaar.

Gecontroleerd op 29 oktober 2026: Ubuntu 24.04 en Debian 12 leveren Node.js 18 in hun eigen repository's, en discord.js 14.27.0 heeft Node.js 18 of nieuwer nodig (npm). discord.py 2.7.1 heeft Python 3.8 of nieuwer nodig (PyPI); Ubuntu 24.04 heeft Python 3.12.

Draai je maar één bot? Dan regelt bothosting dit allemaal voor je, vanaf €0,69 per maand bij betaling per kwartaal, met automatische pakketinstallatie en herstarts. Een VPS is handig als je ook een database, een dashboard of meerdere bots draait. Zie bothosting of een VPS?

1. Bereid de server voor

Volg eerst eerste stappen op een nieuwe VPS (SSH-sleutel, firewall, updates). Een bot heeft geen open poorten nodig: hij maakt zelf verbinding met Discord. Maak daarna een aparte gebruiker, zodat de bot niet aan de rest van het systeem kan komen:

adduser --disabled-password --gecos "" bot

2. Installeer de runtime

Node.js (discord.js):

apt install -y nodejs npm git
node --version        # 18 of nieuwer

Python (discord.py):

apt install -y python3 python3-venv git

Op Ubuntu 24.04 en Debian 12 stopt pip install buiten een virtuele omgeving met de melding externally-managed-environment. Dat is expres: geef elke bot zijn eigen venv, zoals hieronder.

3. Zet je code op de server

su - bot
git clone https://github.com/jij/jouw-bot.git mijnbot   # of upload met scp/SFTP
cd mijnbot
nano .env                                                # DISCORD_TOKEN=jouw-token
chmod 600 .env

Installeer daarna de pakketten, nog steeds als gebruiker bot:

npm install --omit=dev                         # Node.js

python3 -m venv .venv                          # Python
.venv/bin/pip install -r requirements.txt

Test het één keer met de hand (node index.js of .venv/bin/python app.py), kijk of de bot online komt in Discord, stop hem met Ctrl+C en typ exit om weer root te worden.

4. Laat systemd hem draaien

Maak /etc/systemd/system/mijnbot.service:

[Unit]
Description=Mijn Discord-bot
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/home/bot/mijnbot
ExecStart=/usr/bin/node index.js
# Python: ExecStart=/home/bot/mijnbot/.venv/bin/python app.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now mijnbot
systemctl status mijnbot

Met enable start de bot bij elke herstart van de server; door Restart=always komt hij 5 seconden na een crash weer op. Je code leest de token gewoon uit .env met dotenv of python-dotenv, net als op je eigen pc.

5. Dagelijks gebruik

  • Live logs: journalctl -u mijnbot -f (Ctrl+C om te stoppen met meekijken).
  • Herstarten na een codewijziging: su - bot -c "cd mijnbot && git pull" en daarna systemctl restart mijnbot.
  • Een tweede bot: een tweede map en een tweede servicebestand, bijvoorbeeld anderebot.service.
  • Geheugen: systemctl status mijnbot laat zien hoeveel hij gebruikt. Zet MemoryMax=512M onder [Service] als één bot nooit de hele server mag platleggen.

Wat kies ik?

  • Eén bot, verder niets: bothosting, 512 MB voor €0,69 per maand bij betaling per kwartaal (€0,79 maandelijks), 1 GB voor €1,49 (€1,79), of 2 GB voor €2,09 (€2,29) voor muziek- of AI-bots met grote caches.
  • Meerdere bots, een databaseserver, een webdashboard of andere software: VPS S met 2 vCPU, 4 GB RAM en 40 GB NVMe in Neurenberg, €7,99 per maand bij betaling per kwartaal (€8,29 maandelijks).

Veelgestelde vragen

Hoe houd ik een Discord-bot draaiend op een VPS als ik SSH sluit? Draai hem als systemd-service met Restart=always en zet hem aan met enable. Dan blijft hij draaien als je uitlogt, start hij mee met de server en herstart hij na een crash.

Gebruik ik pm2, screen of systemd? systemd zit al op elke Ubuntu-, Debian-, Rocky- en AlmaLinux-server en regelt opstarten, herstarten na een crash en logs. pm2 werkt ook voor Node.js, maar je hebt het niet nodig. screen en tmux herstarten een gecrashte bot niet.

Waarom zegt pip externally-managed-environment? Ubuntu 24.04 en Debian 12 beschermen de Python van het systeem. Maak een virtuele omgeving met python3 -m venv .venv en installeer je pakketten met .venv/bin/pip.

Heeft een Discord-bot open poorten nodig in de firewall? Nee. Een bot maakt zelf verbinding met de gateway van Discord. Zet alleen poorten open als je ook iets draait waar mensen naartoe gaan, zoals een webdashboard.

Waar zie ik de foutmeldingen van mijn bot? Met journalctl -u mijnbot -f, waarbij mijnbot de naam van je servicebestand is.