OffshoreVps
Anleitungen7 Okt. 20265 Min. LesezeitVon dem OffshoreVps-Team

So hosten Sie einen Discord-Bot auf einem VPS

Einen Discord-Bot erstellen, einen discord.js-Bot auf einem Linux-VPS bereitstellen und per systemd online halten, mit Tipps zu Token und Intents.

Ein Discord-Bot verbindet sich mit dem Gateway von Discord und bleibt verbunden, braucht also eine Maschine, die immer eingeschaltet ist. Ein kleiner VPS ist günstig, bleibt online und hängt nicht von Ihrem Heim-Internet ab. Diese Anleitung stellt einen Node.js-Bot mit discord.js bereit und hält ihn per systemd am Leben.

Terminalfenster auf einem VPS mit den Befehlen zum Hosten eines Discord-Bots, beginnend mit „curl -fsSL https://deb.nodesource.com/setup_22.x“
Die Art von Befehlen, die Sie in dieser Anleitung auf Ihrem Server ausführen.

Welche VPS-Größe?

1 vCPU und 1 bis 2 GB RAM genügen für die meisten Bots. Größere Bots, die viele Server zwischenspeichern oder Audio verarbeiten, brauchen mehr. Tarife finden Sie unter Discord-Bot-Hosting.

Schritt 1: Den Bot in Discord erstellen

  1. Öffnen Sie das Discord Developer Portal und erstellen Sie eine neue Anwendung.
  2. Fügen Sie einen Bot hinzu, kopieren Sie sein Token und halten Sie es geheim.
  3. Erzeugen Sie unter OAuth2 einen Einladungslink mit den Scopes bot und applications.commands und fügen Sie den Bot Ihrem Server hinzu.

Schritt 2: Node.js installieren

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo adduser --disabled-password --gecos "" discord
Die Schritte dieser Anleitung in der Reihenfolge: 1. Welche VPS-Größe?; 2. Den Bot in Discord erstellen; 3. Node.js installieren; 4. Das Token aus dem Code heraushalten; 5. Mit systemd ausführen; 6. Gute Gewohnheiten
Die Schritte dieser Anleitung in der Reihenfolge.

Schritt 3: Den Bot schreiben

sudo -iu discord
mkdir ~/bot && cd ~/bot
npm init -y
npm install discord.js
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => console.log('Logged in as ' + client.user.tag));
client.on('interactionCreate', async (i) => {
  if (i.isChatInputCommand() && i.commandName === 'ping') await i.reply('Pong!');
});

client.login(process.env.DISCORD_TOKEN);

Registrieren Sie den Slash-Befehl /ping einmalig mit der Methode aus der discord.js-Anleitung.

Schritt 4: Das Token aus dem Code heraushalten

echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env

Schritt 5: Mit systemd ausführen

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

[Service]
User=discord
WorkingDirectory=/home/discord/bot
EnvironmentFile=/home/discord/bot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5

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

Nennen Sie die Datei /etc/systemd/system/discordbot.service.

Gute Gewohnheiten

  • Verwenden Sie nur die Intents, die Sie brauchen. Privilegierte Intents müssen im Portal eingeschaltet werden.
  • Falls ein Token jemals geleakt wird, setzen Sie es sofort im Portal zurück.
  • Der Neustart bei Fehlern ist oben eingestellt. Fügen Sie Monitoring hinzu, wenn der Bot für eine Community wichtig ist.