Zurück zu Tutorials

Discord Bot Hosting auf Linux: Schritt-für-Schritt Tutorial

Wir gehen in diesem Tutorial davon aus, dass du die Dateien deines Bots schon hast!

Als erstes brauchst du natürlich einen passenden Linux Server. Wichtig ist, dass du zu Beginn Server Updates und Upgrades durchführst, dies geht mit folgenden Befehlen:

sudo apt update
sudo apt upgrade -y

Schritt 1: Installieren der notwendigen Software

Wenn du einen Python Bot hostest, musst du erstmal python installieren!

sudo apt install python3 -y

Wenn du einen JavaScript Bot hostest, musst du erstmal nodejs installieren!

sudo apt install nodejs -y

Was du auch noch brauchst, ist das Tool 'pip' für python (npm für nodejs), um später das requirements.txt und package.json richtig zu installieren.
Was genau das ist und was in dem File steht, kommt später noch!
Pip wird mit folgendem Befehl installiert:

sudo apt install python3-pip
sudo apt install npm

Schritt 2: Ablegen der Bot Dateien und installieren der Abhängigkeiten

Hier ist es am besten, wenn du dich über sftp mit deinem Server verbindest, dazu kannst du zum beispiel 'WinSCP' verwenden.

Wenn du dich mit deinem Server verbunden hast, erstellst du im root directory ein Ordner und nennst ihn 'DiscordBots' oder ähnlich. In diesem Ordner erstellst du einen weiteren Ordner und benennst diesen nach dem Namen deines Discord Bots. In diesen Ordner, lädst du jetzt alle benötigten Dateien deines Bots hoch, wie app.py, requirements.txt oder package.json und sonstige.

Was ist das requirements.txt und das package.json?

In Python-Projekten wird die Datei requirements.txt genutzt, um notwendige Pakete aufzulisten, während Node.js-Projekte die package.json verwenden, die sowohl Abhängigkeiten als auch Projektmetadaten und Skripte umfasst. Beide verwenden jeweilige Werkzeuge, pip für Python und npm oder yarn für Node.js, um diese Abhängigkeiten zu verwalten und zu installieren. Diese Systeme sichern die Konsistenz der Projekte über verschiedene Entwicklungsumgebungen hinweg durch genaue Versionskontrolle der Bibliotheken.

Als nächstes installierst du das requirements.txt(package.jsaon) mit folgendem Befehl:

sudo pip install -r /pfad/zum/requirements.txt

Für nodejs sollte man allerdings in das richtige Verzeichnis hineinwechseln

cd /DiscordBots/BotName
sudo npm install package.json

Schritt 3: User erstellen und Berechtigungen anpassen

Jetzt erstellst du zuerst mal einen neuen User mit folgendem Befehl:

sudo adduser botuser

Danach kannst du dich dort mit enter einfach durchklicken.
Jetzt müssen wir die Berechtigungen deiner Bot Datei ändern, damit der gerade neu erstellte User Zugriff auf diese hat. Das geht mit diesen beiden Befehlen:

sudo chown -R botuser:botuser /DiscordBots/BotName
sudo chmod -R 755 /DiscordBots/BotName

Ab jetzt hat der botuser Eigentums Rechte auf den Ordner, damit er richtig auf diese zugreiffen kann.

Schritt 4: Service Datei erstellen

Die Service Datei ist wichtig, um den Bot dann starten zu können und damit der Bot immer gestartet wird, wenn der Server neu gesrtartet wird. Um aber erstmal diese Datei zu erstellen, brauchen wir diesen Befehl:

sudo nano /etc/systemd/system/BotName.service

Die Datei sollte etwa so aussehen für Python:

[Unit]
Description=Discord Bot Service for {Bot Name}

[Service]
ExecStart=/usr/bin/python3 /pfad/zum/app.py
WorkingDirectory=/DiscordBots/BotName
Restart=always
User=botuser

[Install]
WantedBy=multi-user.target

Für nodejs:

[Unit]
Description=Discord Bot Service for (Bot Name)

[Service]
ExecStart=/usr/bin/node /DiscordBots/BotName/app.js
WorkingDirectory=/DiscordBots/BotName
Restart=always
User=botuser

[Install]
WantedBy=multi-user.target

Nach dem erstellen dieser Datei, muss unbedingt folgender befehl verwendet werden!

sudo systemctl daemon-reload

Schritt 5: Bot starten und zu autostart hinzufügen

Soweit ist alles erledigt und wir müssen den Bot nur noch starten, dies geht mit diesem Befehl:

sudo systemctl start BotName.service

Jetzt müsste der Bot eigentlich auf Discord auch online sein und bereit für den Gebrauch, allerdings sollte noch etwas getan werden und zwar einstellen, dass der Bot nach einem Server Neustart immer automatisch gestartet wird, das geht mit folgendem Befehl:

sudo systemctl enable BotName.service