Die richtige Kompatibilität für deinen Discord-Bot wählen¶
Wenn du eine Bestellung für einen Discord-Bot anlegst, fragt der Einrichtungsassistent jetzt zusätzlich zur Laufzeit (Node.js, Python, Bun, Deno, Java oder Andere) auch nach einer Kompatibilität. Diese Seite erklärt, was diese Auswahl bewirkt, wann sie wichtig wird und wie du sie für einen bereits laufenden Bot änderst.
Die zwei Optionen¶
Leichtgewichtig ist die Voreinstellung. Sie verwendet ein kleines Basis-Image (im Hintergrund Alpine Linux), das schneller startet, weniger Speicher belegt und sich schnell herunterladen lässt. Für die meisten Bots passt das genau: alles, was reine JavaScript- oder Python-Bibliotheken nutzt, die üblichen Discord-SDKs, einfache HTTP-Clients und so weiter.
Standard (Bessere Kompatibilität) verwendet ein größeres Basis-Image (auf Debian aufgebaut), das die Systemwerkzeuge mitbringt, die manche Bibliotheken erwarten. Du gibst dafür ein wenig Kaltstartzeit und Speicher auf und bekommst eine deutlich breitere Paketunterstützung.
Wenn dein Bot heute sauber installiert, lass es bei Leichtgewichtig. Wenn nicht, ist Standard fast immer die richtige Antwort.
Wann Leichtgewichtig nicht ausreicht¶
Manche Pakete laden während der Installation ein vorkompiliertes Binary herunter (der gute Fall), andere müssen ein Binary direkt aus C/C++-Quellcode als Teil von npm install oder pip install kompilieren. Die leichtgewichtige Basis bringt weder eine C/C++-Toolchain noch die Systembibliotheken mit, gegen die diese Pakete linken. Alles, was kompiliert werden muss, schlägt also fehl.
Das sind die häufigsten Verdächtigen:
- Node.js / npm:
canvas,sharp,bcrypt,better-sqlite3,node-canvas,puppeteer, die Sprachhelfer fürdiscord.js(@discordjs/opus,sodium-native),node-sass. - Python / pip:
Pillow,cryptography,lxml,numpy(gelegentlich) und alles, waslibffi,libxml2,libpngodercairoeinbindet.
Meistens merkst du es auf die unangenehme Art: Die Installation bricht mit Fehlermeldungen ab, die node-gyp, prebuild-install, gcc, python: not found oder Cannot find module erwähnen. Der Bot landet anschließend in einer Endlosschleife aus Neustarts.
Schneller Test
Öffne die package.json oder requirements.txt deines Bots. Wenn dort eines der oben genannten Pakete auftaucht, fang direkt mit Standard an.
Was du mit Standard aufgibst¶
Praktisch gesehen wenig:
- Das Image liegt bei rund 80–150 MB komprimiert statt rund 50 MB. Das fällt dir nur auf, wenn du ständig rebuildest.
- Der erste Download auf einem kalten Node dauert ein paar Sekunden länger. Folgende Neustarts auf demselben Node sind identisch.
- Eine etwas größere Angriffsfläche für Sicherheitsupdates. Beide Basen werden von ihren Upstream-Projekten gepflegt, und wir halten sie aktuell.
Für einen Discord-Bot, der Tage oder Wochen am Stück läuft, fallen diese Kosten nicht ins Gewicht. Wir wählen Leichtgewichtig nur deshalb als Standard, weil die meisten Bots tatsächlich nicht mehr brauchen.
Einen bestehenden Bot auf Standard umstellen¶
Wenn du den Bot schon angelegt hast und er an Build-Fehlern scheitert, musst du ihn nicht stornieren und neu bestellen. Öffne den Bot im Dashboard, gehe auf Konfiguration und ändere dort die Kompatibilität. Die Umstellung wird beim nächsten Neustart aktiv und löst eine frische Abhängigkeitsinstallation auf dem neuen Basis-Image aus.
Alte Abhängigkeiten müssen eventuell entfernt werden
Wenn dein Bot schon eine Weile an der Installation gescheitert ist, kann das Verzeichnis node_modules/ (oder __pycache__/, venv/ usw.) auf dem Server-Volume in einem halbkaputten Zustand sein. Wenn die Installation nach dem Wechsel auf Standard immer noch nicht durchläuft, lösche dieses Verzeichnis aus dem Dateimanager und starte einmal neu. Die Laufzeit baut es dann von Grund auf neu auf.
Häufige Fragen¶
Kann ich von Standard zurück auf Leichtgewichtig wechseln?
Ja, an derselben Stelle. Es gibt keinen Migrationsschritt. Wenn deine Abhängigkeiten auf Leichtgewichtig sauber installieren, verhält sich der Bot genauso wie einer, der von Anfang an auf Leichtgewichtig lief.
Ändert das die Version von Node / Python / Java, die mein Bot ausführt?
Nein. Die Hauptversion deiner Laufzeit (Node 22, Python 3.13, Java 21 usw.) ist in beiden Optionen identisch. Was sich ändert, ist die Betriebssystem-Basis darunter, nicht die Sprachlaufzeit.
Ist Standard langsamer?
Sobald der Container läuft, nein. Die Laufzeiten selbst sind identisch. Der einzige messbare Unterschied ist die Download-Zeit des Images auf einem Node, der dieses Image noch nie ausgeführt hat, und das ist ein einmaliger Aufwand.
Warum dann Leichtgewichtig als Voreinstellung, wenn Standard kompatibler ist?
Die meisten Discord-Bots sind kleine, reine Sprachprojekte und ziehen aus einer schwereren Basis keinen Nutzen. Alle auf Standard zu setzen würde größere Images und langsamere Kaltstarts für eine Mehrheit von Bots bedeuten, die davon nie profitieren. Wir bieten die Wahl an, damit die Bots, die sie wirklich brauchen, sie sauber aktivieren können.
Was, wenn mein Bot die Laufzeit „Andere" mit einer eigenen start.sh nutzt?
Die gleiche Auswahl gilt. Leichtgewichtig gibt dir eine Alpine-Shell, Standard eine Debian-Shell. Wenn dein Skript apt-get aufruft, brauchst du Standard; ruft es apk auf, brauchst du Leichtgewichtig. Reine POSIX-Skripte laufen auf beiden.