aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Discord-bots

Discord bot op VPS: 24/7 draaien met pm2

Je bot op je eigen computer draaien werkt prima, tot het moment dat je hem uitzet of hij in slaapstand gaat. Voor een permanente oplossing heb je een echte Discord bot VPS-installatie nodig: je verplaatst de bot naar een kleine cloudserver en houdt hem 24/7 in de lucht met een procesmanager. In deze gids loop ik stap voor stap door het opzetten van een Ubuntu-VPS vanaf nul, het installeren van Node.js en het permanent draaien van een discord.js-bot met pm2, zodat hij ook na een herstart automatisch weer opstart.

Waarom een VPS en waarom pm2?

Een bot moet een constante verbinding (een WebSocket) met Discord openhouden. Valt die verbinding weg, dan gaat de bot offline en reageert hij niet meer op commando's. Een VPS is een Linux-machine met onafgebroken internet en stroom, 365 dagen per jaar aan — precies wat je nodig hebt.

Waarom dan niet gewoon node index.js draaien? Omdat op het moment dat je de terminal sluit, het proces sterft. pm2 is een procesmanager: hij houdt de bot op de achtergrond draaiend, herstart hem automatisch bij een crash, verzamelt zijn logs en brengt de bot vanzelf weer omhoog wanneer de server herstart.

  • Automatische herstart: als de bot een fout gooit en crasht, herstart pm2 hem binnen seconden.
  • Bestand tegen herstart: de bot start automatisch op, zelfs nadat de VPS opnieuw is opgestart.
  • Logbeheer: stdout/stderr zijn met één commando te volgen.
  • Geen kosten: pm2 is open source en gratis.

1. Een VPS kiezen en de eerste verbinding

Een Discord-bot gebruikt heel weinig resources; het kleinste plan met 1 vCPU en 1 GB RAM is ruim voldoende. Maak bij een aanbieder als Hetzner, DigitalOcean, Contabo of vergelijkbaar een server aan met Ubuntu 22.04 LTS of 24.04 LTS vooraf geïnstalleerd. De aanbieder geeft je een IP-adres en een root-wachtwoord (of een SSH-sleutel).

Verbind vanaf je eigen machine via SSH:

ssh root@JOUW_SERVER_IP

De eerste klus is de pakketten bijwerken:

apt update && apt upgrade -y

2. Een sudo-gebruiker en basisbeveiliging

Alles als root doen is riskant. Laten we een aparte gebruiker aanmaken en rechten geven:

adduser bot
usermod -aG sudo bot

Je kunt nu met su - bot naar deze gebruiker overschakelen. Laten we ook een eenvoudige firewall instellen; de uitgaande verbinding van de bot naar Discord heeft geen open poort nodig, dus alleen SSH openlaten is voldoende:

sudo ufw allow OpenSSH
sudo ufw enable

3. De juiste Node.js-versie installeren

De Node.js in Ubuntu's eigen repository is vaak verouderd; discord.js v14 vereist minstens Node.js 16.11, en in de praktijk een actuele LTS-versie. Laten we de nieuwste LTS (bijvoorbeeld 20.x) installeren via de NodeSource-repository:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Controleer de installatie:

node -v
npm -v

4. De code van je bot op de server krijgen

De netste methode is de code via Git ophalen. Als je bot in een GitHub-repository staat:

git clone https://github.com/gebruiker/bot-repo.git
cd bot-repo
npm install

Zet nooit geheimen zoals je token hard in de code en push ze niet naar de repository. Maak in plaats daarvan een .env-bestand:

nano .env

Zet de token erin:

DISCORD_TOKEN=jouw_geheime_token

Om de bot deze waarde te laten lezen, kun je het dotenv-pakket gebruiken (npm install dotenv) en require('dotenv').config() bovenaan je startbestand zetten. Voeg .env altijd toe aan je .gitignore.

5. De bot permanent draaien met pm2

Laten we pm2 globaal installeren:

sudo npm install -g pm2

Start de bot en geef hem een leesbare naam:

pm2 start index.js --name discord-bot

Als het startbestand van je bot anders heet (bijvoorbeeld bot.js of src/index.js), gebruik dan dat pad. Om de status te zien:

pm2 status

Om de logs live te volgen:

pm2 logs discord-bot

Andere veelgebruikte commando's:

  • pm2 restart discord-bot — herstart de bot (na een code-update).
  • pm2 stop discord-bot — stopt hem.
  • pm2 delete discord-bot — haalt hem uit de lijst.
  • pm2 monit — toont het CPU/RAM-gebruik live.

6. De bot in de lucht houden, zelfs na een herstart

Hier zit de echte magie. Wanneer de VPS na een update of storing opnieuw opstart, willen we dat de bot vanzelf terugkomt. Laat pm2 eerst een opstartscript genereren:

pm2 startup

Dit commando toont één regel die begint met sudo env PATH=...; kopieer die regel en voer hem uit. Sla daarna de huidige proceslijst op:

pm2 save

Zelfs als je de server nu met sudo reboot herstart, springt pm2 bij het opstarten in actie en brengt het discord-bot-proces automatisch weer omhoog. Wees niet bang om het te testen.

7. Wanneer je de code bijwerkt

Als je een nieuwe functie toevoegt, is de stroom simpel: haal de wijzigingen op, installeer indien nodig de dependencies, herstart het proces:

cd bot-repo
git pull
npm install
pm2 restart discord-bot

Als je geen nieuwe dependency hebt toegevoegd, kun je de stap npm install overslaan.

Veelgestelde vragen

De bot blijft crashen — wat doet pm2?

pm2 herstart het gecrashte proces automatisch, maar als de onderliggende oorzaak blijft bestaan, kan hij in een eindeloze herstartlus terechtkomen. Lees de fout met pm2 logs discord-bot; meestal is het een ongeldige token, een ontbrekende intents-instelling of een niet-afgehandelde Promise-rejection. Los het probleem op in de code in plaats van alleen op herstarten te vertrouwen.

Waarom pm2 in plaats van screen of nohup?

screen en nohup houden de bot op de achtergrond, maar herstarten hem niet bij een crash, starten hem niet bij het opstarten en bieden geen logbeheer. pm2 geeft je dat allemaal in één tool; voor een productieomgeving is het veel robuuster.

Kan ik meerdere bots op dezelfde VPS draaien?

Ja. Gebruik een aparte map en een aparte pm2 start ... --name voor elke bot. Zelfs een kleine VPS draait moeiteloos meerdere lichte bots; je kunt het resourcegebruik volgen met pm2 monit.

Wil je je bot met vertrouwen live zetten? Heb je hulp nodig bij Discord-botontwikkeling, VPS-installatie en stabiele 24/7-hosting, neem dan contact met me op — laten we je project samen opstarten.

Bu kategorideki tüm yazılar →

Devamı için