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