Zum Inhalt springen

Anleitung

Alles, was du brauchst, um deinen Bot hier laufen zu lassen, und was zu tun ist, wenn er es nicht tut.

Was deine Quelle braucht

Zwei Wege führen hinein: ein öffentliches Repository auf GitHub, GitLab, Codeberg oder Bitbucket, oder dein Projektordner als ZIP-Datei, bis 32 MB, direkt im Formular hochgeladen. In beiden Fällen muss der Bot von selbst starten. Für Node heißt das eine package.json; der Startbefehl kommt aus scripts.start, sonst aus main, sonst aus einer der Dateien index.js, bot.js oder main.js. Für Python reicht eine requirements.txt oder pyproject.toml und eine Datei main.py, bot.py oder app.py. Wird nichts davon gefunden, fragt das Formular nach dem Startbefehl; du kannst ihn jederzeit überschreiben.

Für die ZIP gilt: Packe den Projektordner selbst, nicht seinen Inhalt in Unterordnern. Ein einzelner Oberordner ist in Ordnung und wird ausgepackt. node_modules und .git bleiben draußen; Abhängigkeiten installiert der Build ohnehin selbst, und ohne die beiden bleibt fast jedes Projekt unter der Grenze. Entpackt wird in einem Container ohne Netz, symbolische Links werden entfernt.

Abhängigkeiten installiert der Build selbst: npm ci bei vorhandener package-lock.json, sonst npm install; bei Python pip install -r requirements.txt in eine eigene Umgebung. TypeScript wird nicht gebaut: Wer TypeScript schreibt, committet den Ausgabeordner oder startet mit npx tsx src/index.ts.

Die Quelle darf mitsamt Abhängigkeiten 512 MB (Frei) beziehungsweise 1 GB (Pro) nicht überschreiten. Ein Build, der darüber liegt, bricht mit einer klaren Meldung ab.

Token und Umgebungsvariablen

Das Bot-Token trägst du im Formular ein, nie ins Repository. Es landet als Umgebungsvariable im Container, standardmäßig unter DISCORD_TOKEN; der Name ist wählbar. Dein Code liest es wie überall: process.env.DISCORD_TOKEN oder os.environ["DISCORD_TOKEN"].

Das Token wird gegen die angegebene Application-ID geprüft, und es ist zugleich dein Besitznachweis: Wer das Token hat, kontrolliert die Anwendung. Ein Token, das zu einer anderen Anwendung gehört, nimmt das Formular nicht an. Steht der Bot noch nicht im Verzeichnis, entsteht mit der App ein Entwurf, den du jederzeit zum Eintrag ausbauen kannst.

Weitere Variablen (Datenbank-Adressen, API-Schlüssel, Einstellungen) trägst du daneben ein, bis zu 32 Stück. Alle Werte werden verschlüsselt gespeichert und nur für den Deploy entschlüsselt. Sie erscheinen nie in Logs, auch nicht in unseren.

Deploy, Logs und Neustart

Deployen holt den angegebenen Branch, installiert die Abhängigkeiten in einem abgeschotteten Build-Container und startet den Bot neu. Die ersten Sekunden des Builds siehst du im Deploy-Verlauf, das Ergebnis steht mit Commit-Hash dabei. In der Pro-Stufe gibt es zusätzlich einen Deploy-Hook: eine Adresse, die du als Webhook bei deinem Git-Host einträgst, damit jeder Push automatisch deployt.

Die Logs zeigen die letzten 500 Zeilen (Pro: 2.000) der Standardausgabe. Sie aktualisieren sich von selbst, solange die Seite offen ist. Schreibe, was du später sehen willst. Ein Bot, der nichts ausgibt, lässt sich nicht diagnostizieren.

Stoppen hält den Container an, die Dateien bleiben. Neustart ist ein Stopp mit anschließendem Start ohne neuen Build. In der Pro-Stufe startet ein abgestürzter Bot von selbst neu; in der freien Stufe bleibt er liegen, bis du ihn startest – das ist der Unterschied, den du bezahlst.

Die 48-Stunden-Regel

In der freien Stufe läuft ein Bot 48 Stunden ab dem Start. Danach wird er gestoppt, und du startest ihn mit einem Klick im Dashboard für die nächsten 48 Stunden. Zwei Stunden vor dem Ende erinnern wir dich per Discord-Direktnachricht, wenn du das in den Einstellungen erlaubst.

Die Regel ist keine Schikane, sondern die Rechnung hinter dem kostenlosen Angebot: Ein gestoppter Bot belegt keinen Arbeitsspeicher, und so teilen sich viele Entwickler wenige Plätze, ohne dass einer den anderen verdrängt. Wer den Bot dauerhaft laufen lassen will, nimmt Pro.

Ein Bot, der 14 Tage lang gestoppt bleibt, wird samt Dateien gelöscht. Drei Tage vorher kommt eine Vorwarnung per Mail. Dein Listing im Verzeichnis bleibt davon unberührt.

Was begrenzt ist

Arbeitsspeicher: 256 MB in der freien, 512 MB in der Pro-Stufe. Das ist eine Obergrenze, keine Zusicherung: Ein discord.js-Bot braucht typischerweise 100 bis 190 MB. Wer darüber liegt, sollte Caches für Mitglieder und Nachrichten abschalten; das ist in den meisten Bots der Unterschied zwischen 130 und 400 MB.

Prozessor: ein halber Kern (Frei) oder ein ganzer (Pro). Für einen Bot, der auf Befehle wartet, ist das reichlich. Audio-Streaming und Bildrendering sind nicht der Zweck dieses Angebots und werden abgeschaltet, wenn sie andere Bots ausbremsen.

Netzwerk: ausgehende Verbindungen sind frei, eingehende gibt es nicht. Ein Bot braucht keinen offenen Port; er spricht von sich aus mit Discord. Wer einen Webserver betreiben will, braucht einen anderen Dienst.

Ein gehosteter Bot je Person in der freien Stufe. In Pro lassen sich weitere Bots zu je 2,99 € dazunehmen.

Wenn etwas nicht funktioniert

Build fehlgeschlagen: Die erste Zeile der Meldung im Deploy-Verlauf nennt den Grund: Branch nicht gefunden, npm install mit Fehler, keine Laufzeit erkannt. Der vorherige Stand läuft unterdessen weiter, ein fehlgeschlagener Deploy nimmt nichts offline.

Bot startet, geht aber nicht online: fast immer das Token. Prüfe im Developer Portal, ob es zurückgesetzt wurde, und trage das neue unter Einstellungen ein. Die Logs zeigen dann typischerweise 401 Unauthorized oder TokenInvalid.

Bot wird neu gestartet: Er hat sein RAM-Limit überschritten. Das Dashboard zeigt die Zahl der Neustarts. Abhilfe: Caches verkleinern oder auf Pro wechseln.

Keine freien Plätze: Die freie Stufe hat eine feste Zahl gleichzeitig laufender Bots. Die Anzeige im Dashboard sagt, wie viele gerade frei sind; meist wird innerhalb weniger Stunden einer frei, weil eine 48-Stunden-Laufzeit endet.