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

Discord-Bot auf VPS: mit pm2 rund um die Uhr

Deinen Bot auf dem eigenen Rechner laufen zu lassen funktioniert wunderbar — bis zu dem Moment, in dem du ihn ausschaltest oder er in den Ruhezustand geht. Für eine dauerhafte Lösung brauchst du ein richtiges Discord bot VPS-Setup: Du verschiebst den Bot auf einen kleinen Cloud-Server und hältst ihn mit einem Prozessmanager rund um die Uhr am Laufen. In dieser Anleitung gehe ich Schritt für Schritt durch das Einrichten eines Ubuntu-VPS von Grund auf, die Installation von Node.js und das dauerhafte Betreiben eines discord.js-Bots mit pm2, sodass er auch nach einem Neustart automatisch wieder hochfährt.

Warum ein VPS und warum pm2?

Ein Bot muss eine ständige Verbindung (einen WebSocket) zu Discord aufrechterhalten. Bricht diese Verbindung ab, geht der Bot offline und reagiert nicht mehr auf Befehle. Ein VPS ist eine Linux-Maschine mit unterbrechungsfreiem Internet und Strom, 365 Tage im Jahr eingeschaltet — genau das, was du brauchst.

Warum also nicht einfach node index.js ausführen? Weil der Prozess in dem Moment stirbt, in dem du das Terminal schließt. pm2 ist ein Prozessmanager: Er hält den Bot im Hintergrund am Laufen, startet ihn bei einem Absturz automatisch neu, sammelt seine Logs und bringt den Bot von selbst wieder hoch, wenn der Server neu startet.

  • Automatischer Neustart: Wirft der Bot einen Fehler und stürzt ab, startet pm2 ihn innerhalb von Sekunden neu.
  • Boot-Resilienz: Der Bot startet automatisch, selbst nach einem Neustart des VPS.
  • Log-Verwaltung: stdout/stderr lassen sich mit einem einzigen Befehl verfolgen.
  • Keine Kosten: pm2 ist Open Source und kostenlos.

1. Einen VPS wählen und die erste Verbindung

Ein Discord-Bot verbraucht sehr wenig Ressourcen; der kleinste Plan mit 1 vCPU und 1 GB RAM reicht völlig aus. Erstelle bei einem Anbieter wie Hetzner, DigitalOcean, Contabo oder ähnlich einen Server mit vorinstalliertem Ubuntu 22.04 LTS oder 24.04 LTS. Der Anbieter gibt dir eine IP-Adresse und ein Root-Passwort (oder einen SSH-Schlüssel).

Verbinde dich von deinem eigenen Rechner per SSH:

ssh root@DEINE_SERVER_IP

Die erste Aufgabe ist das Aktualisieren der Pakete:

apt update && apt upgrade -y

2. Ein sudo-Benutzer und grundlegende Sicherheit

Alles als Root zu erledigen ist riskant. Legen wir einen separaten Benutzer an und geben ihm Rechte:

adduser bot
usermod -aG sudo bot

Mit su - bot kannst du jetzt zu diesem Benutzer wechseln. Richten wir außerdem eine einfache Firewall ein; die ausgehende Verbindung des Bots zu Discord benötigt keinen offenen Port, daher genügt es, nur SSH offen zu lassen:

sudo ufw allow OpenSSH
sudo ufw enable

3. Die richtige Node.js-Version installieren

Das Node.js aus Ubuntus eigenem Repository ist oft veraltet; discord.js v14 erfordert mindestens Node.js 16.11 und in der Praxis eine aktuelle LTS-Version. Installieren wir die neueste LTS (zum Beispiel 20.x) über das NodeSource-Repository:

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

Überprüfe die Installation:

node -v
npm -v

4. Den Code des Bots auf den Server bringen

Die sauberste Methode ist, den Code per Git zu holen. Wenn dein Bot in einem GitHub-Repository liegt:

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

Hardcode niemals Geheimnisse wie deinen Token und pushe sie nicht ins Repository. Erstelle stattdessen eine .env-Datei:

nano .env

Trage den Token hinein:

DISCORD_TOKEN=dein_geheimer_token

Damit der Bot diesen Wert liest, kannst du das Paket dotenv verwenden (npm install dotenv) und require('dotenv').config() ganz oben in deine Einstiegsdatei setzen. Füge .env immer zu deiner .gitignore hinzu.

5. Den Bot mit pm2 dauerhaft betreiben

Installieren wir pm2 global:

sudo npm install -g pm2

Starte den Bot und gib ihm einen lesbaren Namen:

pm2 start index.js --name discord-bot

Wenn die Einstiegsdatei deines Bots anders heißt (zum Beispiel bot.js oder src/index.js), gib diesen Pfad an. Um den Status zu sehen:

pm2 status

Um die Logs live zu verfolgen:

pm2 logs discord-bot

Weitere häufig genutzte Befehle:

  • pm2 restart discord-bot — startet den Bot neu (nach einem Code-Update).
  • pm2 stop discord-bot — stoppt ihn.
  • pm2 delete discord-bot — entfernt ihn aus der Liste.
  • pm2 monit — zeigt die CPU/RAM-Auslastung live an.

6. Den Bot auch über Neustarts hinweg am Leben halten

Hier steckt die eigentliche Magie. Wenn der VPS nach einem Update oder Ausfall neu startet, soll der Bot von selbst zurückkommen. Lass pm2 zuerst ein Startskript erzeugen:

pm2 startup

Dieser Befehl gibt eine einzelne Zeile aus, die mit sudo env PATH=... beginnt; kopiere diese Zeile und führe sie aus. Speichere anschließend die aktuelle Prozessliste:

pm2 save

Selbst wenn du den Server jetzt mit sudo reboot neu startest, springt pm2 beim Hochfahren ein und bringt den Prozess discord-bot automatisch wieder hoch. Trau dich, es zu testen.

7. Wenn du den Code aktualisierst

Wenn du eine neue Funktion hinzufügst, ist der Ablauf einfach: Änderungen holen, bei Bedarf Abhängigkeiten installieren, Prozess neu starten:

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

Hast du keine neue Abhängigkeit hinzugefügt, kannst du den Schritt npm install überspringen.

Häufige Fragen

Der Bot stürzt ständig ab — was macht pm2?

pm2 startet den abgestürzten Prozess automatisch neu, aber wenn die eigentliche Ursache bestehen bleibt, kann er in eine endlose Neustartschleife geraten. Lies den Fehler mit pm2 logs discord-bot; meist ist es ein ungültiger Token, eine fehlende intents-Einstellung oder eine nicht behandelte Promise-Rejection. Behebe das Problem im Code, statt dich allein auf Neustarts zu verlassen.

Warum pm2 statt screen oder nohup?

screen und nohup halten den Bot im Hintergrund, starten ihn aber bei einem Absturz nicht neu, starten ihn nicht beim Booten und bieten keine Log-Verwaltung. pm2 gibt dir all das in einem einzigen Werkzeug; für eine Produktionsumgebung ist es deutlich robuster.

Kann ich mehrere Bots auf demselben VPS betreiben?

Ja. Verwende für jeden Bot einen eigenen Ordner und einen eigenen pm2 start ... --name. Selbst ein kleiner VPS bewältigt mühelos mehrere leichte Bots; die Ressourcennutzung kannst du mit pm2 monit beobachten.

Möchtest du deinen Bot mit Sicherheit live bringen? Wenn du Hilfe bei der Discord-Bot-Entwicklung, der VPS-Einrichtung und stabilem 24/7-Hosting brauchst, nimm Kontakt mit mir auf — bringen wir dein Projekt gemeinsam zum Laufen.

Bu kategorideki tüm yazılar →

Devamı için