# Discord.js-Bot deployen

> Schritt-für-Schritt-Anleitung zum Deployment eines Discord.js-(Node.js-)Bots bei Daki Hosting.

Diese Anleitung führt dich durch das Deployment eines Discord.js-Bots bei Daki Hosting — von der Erstellung deines Servers bis zu einem Bot, der online ist und dessen Token sicher gespeichert ist.

## Das lernst du hier

- Wie du einen Node.js-Server für deinen Bot erstellst
- Wie du deinen Code hochlädst
- Wie du Install-Befehl, Startup Command und Docker-Image konfigurierst
- Wie du deinen Bot-Token sicher über eine `.env`-Datei hinterlegst
- Wie du deinen Bot startest und prüfst, ob er funktioniert

---

## Voraussetzungen

- Ein Daki-Konto (Free Tier oder bezahlt) — siehe [Konto erstellen](https://daki.cc/de/wiki/guides/account-create)
- Ein Discord-Bot mit einem **Bot-Token**, erstellt im [Discord Developer Portal](https://discord.com/developers/applications)
- Dein Quellcode inklusive einer `package.json` mit `discord.js` und `dotenv` als Abhängigkeiten

> **Info:** Discord-Bots verbinden sich **ausgehend** mit den Servern von Discord und benötigen keinen eingehenden Port. Deshalb funktionieren Discord-Bots sowohl im Free Tier als auch mit bezahlten Plänen. Beantwortet dein Bot zusätzlich HTTP-Anfragen (z. B. für Slash-Command-Interaktionen oder Webhooks), brauchst du einen bezahlten Plan, denn öffentlich erreichbare Ports gibt es nur in bezahlten Plänen. Siehe [Netzwerk & Zuteilungen](https://daki.cc/de/wiki/guides/network-allocations).

---

## Deployment

**Schritt 1: Node.js-Server erstellen**

1. Melde dich im Free-Tier-Dashboard auf [free.daki.cc](https://free.daki.cc) oder im Billing Panel auf [billing.daki.cc](https://billing.daki.cc) an.
2. Erstelle einen neuen Server und wähle das **Node.js**-Egg.
3. Gib deinem Server einen Namen (z. B. `MyDiscordBot`).

Die vollständige Anleitung findest du unter [Deinen ersten Server erstellen](https://daki.cc/de/wiki/guides/create-server).

**Schritt 2: Portal öffnen**

Melde dich per SSO im Portal an (über **Open Portal** auf der Account-Seite im Dashboard oder auf der Service-Seite im Billing Panel) oder direkt auf [portal.daki.cc](https://portal.daki.cc). Siehe [Portal-Überblick](https://daki.cc/de/wiki/guides/portal).

**Schritt 3: Code deines Bots hochladen**

**Option A — als ZIP hochladen (am einfachsten):**
1. Komprimiere deinen Projektordner lokal zu einer `.zip`-Datei.
2. Gehe im Portal zum Tab **Files** und klicke auf **Upload**.
3. Klicke mit der rechten Maustaste auf die `.zip`-Datei und dann auf **Extract**.

**Option B — per SFTP (ohne Größenlimit):**
Verbinde dich mit deinen SFTP-Zugangsdaten aus dem Tab **Settings** und lade deinen Ordner direkt hoch. Siehe [Dateiverwaltung](https://daki.cc/de/wiki/guides/file-manager).

> **Info:** Nimm den Ordner `node_modules` **nicht** in den Upload auf — er wird vom Install-Befehl automatisch installiert. `package.json` und `package-lock.json` gehören dagegen unbedingt dazu.

**Schritt 4: Tab Startup konfigurieren**

Öffne den Tab **Startup** und konfiguriere alle drei Felder:

**1. Docker Image** — Wähle die Node.js-Version, die dein Bot benötigt (z. B. **Node.js 22** oder **Node.js 24**). Node.js 24 LTS ist eine sichere Standardwahl, wenn du dir unsicher bist. Vermeide Versionen mit der Markierung **EOL**, denn sie erhalten keine Sicherheitsupdates mehr.

**2. Install Command** — Setze diesen Befehl, damit deine Abhängigkeiten automatisch installiert werden:
```
npm install
```
**3. Startup Command** — Setze hier den Befehl, der deinen Bot startet:
- `node index.js` — wenn deine Einstiegsdatei `index.js` heißt
- `node bot.js` — wenn deine Einstiegsdatei `bot.js` heißt
- `npm start` — wenn du ein `start`-Skript in deiner `package.json` hast

Du kannst diese Befehle frei an die Struktur deines Projekts anpassen.

Siehe [Starteinstellungen](https://daki.cc/de/wiki/guides/startup-settings) für eine vollständige Erklärung.

**Schritt 5: Bot-Token über eine .env-Datei hinterlegen**

Dein Bot braucht seinen Discord-Token, um sich zu verbinden. Speichere ihn in einer `.env`-Datei auf dem Server, damit er nie in deinem Quellcode landet.

1. Klicke im Tab **Files** auf **New File** und nenne die Datei `.env`.
2. Trage deinen Token ein:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Klicke auf **Save**.

Lade ihn in deinem Bot-Code mit `dotenv`:
```js
require('dotenv').config();

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.login(process.env.BOT_TOKEN);
```
Stelle sicher, dass `dotenv` in den Abhängigkeiten deiner `package.json` steht, damit es vom Install-Befehl installiert wird.

Siehe [Umgebungsvariablen](https://daki.cc/de/wiki/guides/environment-variables) für mehr Details zur Verwendung von `.env`-Dateien.

**Schritt 6: Bot starten**

Klicke im Tab **Console** auf **Start**. Ein erfolgreicher Start gibt die Login-Bestätigung deines Bots aus:

```

Logged in as MyBot#1234!

```
Erscheinen stattdessen Fehler, sieh in der Anleitung zur [Fehlerbehebung](https://daki.cc/de/wiki/guides/troubleshooting) nach.

---

## Häufige Probleme

**Error: Cannot find module 'discord.js'**

Deine Abhängigkeiten wurden nicht installiert. Prüfe, ob deine `package.json` `discord.js` als Abhängigkeit auflistet und ob der Install-Befehl im Tab **Startup** auf `npm install` gesetzt ist. Starte den Server neu, um die Installation auszulösen.

**Error: Cannot find module 'dotenv'**

Füge `dotenv` zu den Abhängigkeiten in deiner `package.json` hinzu und starte den Server neu, damit es installiert wird.

**Error: An invalid token was provided**

Dein Bot-Token in der `.env`-Datei ist falsch oder fehlt. Öffne im Tab **Files** die Datei `.env` und prüfe den Wert. Achte auf Leerzeichen, Anführungszeichen oder Zeilenumbrüche.

**Der Bot startet, trennt die Verbindung aber kurz darauf**

Meist fehlen die **Gateway Intents**. Aktiviere im Discord Developer Portal die benötigten privilegierten Intents (z. B. Message Content Intent) für deine Bot-Anwendung und stelle sicher, dass dein Code sie anfordert.

**Server stürzt sofort nach dem Start ab**

Öffne den Tab **Console** und lies den Fehler. Häufige Ursachen: falscher Startbefehl (Tippfehler im Dateinamen), falsche Node.js-Version oder fehlender `node_modules`-Ordner. Siehe [Fehlerbehebung](https://daki.cc/de/wiki/guides/troubleshooting).

---

## Nächste Schritte

- [Umgebungsvariablen](https://daki.cc/de/wiki/guides/environment-variables) — Vollständige Anleitung zu `.env`-Dateien und zum Auslesen von Variablen im Code.
- [Kostenlosen Server aktiv halten](https://daki.cc/de/wiki/guides/save-free-server-from-purge) — Sieh Werbung an, um deinen Free-Tier-Server am Leben zu halten.
- [Dateiverwaltung](https://daki.cc/de/wiki/guides/file-manager) — Aktualisiere deine Code-Dateien nach Änderungen.

---
Source: https://daki.cc/de/wiki/guides/deploy-discordjs
