Deploy-Guide Frankfurt, Deutschland

Discord bot auf Nodion deployen

Ein Discord-Bot hält eine Verbindung offen, statt HTTP-Anfragen zu beantworten, deshalb läuft er auf Nodion als Worker-Prozess ohne Port. Eine Procfile-Zeile, ein Prozess, das Token als Secret, und der Bot läuft rund um die Uhr in Frankfurt. Telegram-Bots mit Long Polling funktionieren genauso.

Auf Nodion deployen ›

ab 1 EUR / Monat

Bis zu 15 € Guthaben beim Registrieren

Läuft als
Prozess worker, ohne Port
Start
worker: python bot.py oder worker: node bot.js
Bibliotheken
discord.py, discord.js, python-telegram-bot
Region
EU Central (Frankfurt)

Discord bot Schritt für Schritt deployen

  1. Das Token aus der Umgebung lesen Committe das Bot-Token nie. Lies es aus einer Environment-Variable, hier mit discord.py; mit discord.js heißt das client.login(process.env.DISCORD_TOKEN). bot.py
    import os
    
    import discord
    
    intents = discord.Intents.default()
    client = discord.Client(intents=intents)
    
    
    @client.event
    async def on_ready():
        print(f"Logged in as {client.user}")
    
    
    client.run(os.environ["DISCORD_TOKEN"])
  2. Eine Procfile mit worker-Zeile anlegen Ein Python-Bot braucht eine requirements.txt mit discord.py. Ein Node.js-Bot nutzt worker: node bot.js, discord.js in der package.json und ein committetes Lockfile; für einen TypeScript-Bot mit Build-Schritt ist ein Dockerfile der einfachere Weg. Lass die web:-Zeile weg: Der Bot hat keinen Webserver. Procfile
    worker: python bot.py
  3. App anlegen und Token hinterlegen Lege eine Application aus deinem GitHub-, GitLab-, Bitbucket- oder Gitea-Repository in der Region EU Central an. Auf dem Tab Environment legst du DISCORD_TOKEN an und markierst es als Secret: Nach dem Speichern lässt sich der Wert nicht mehr auslesen.
  4. Worker-Prozess anlegen und web abschalten Procfile-Zeilen legen keine Prozesse an. Leg auf dem Tab Processes einen Prozess worker ohne Port und mit leerem Befehl an, dann führt er den gleichnamigen Procfile-Eintrag aus. Setz anschließend web auf 0 Instanzen oder lösch den Prozess: Ein Bot beantwortet nie den HTTP-Health-Check, den web braucht.
  5. Erneut deployen Lief der erste Deploy, bevor du den Worker angelegt hast, deploy noch einmal. Der Worker gilt als laufend, sobald er startet, ohne HTTP-Check, und in den Laufzeit-Logs siehst du, wie sich der Bot anmeldet.

Gut zu wissen

  • Einmal am Tag eine frische InstanzProzesse laufen durch und schlafen nicht ein. Bei jedem Deploy und etwa einmal am Tag ersetzt Nodion jede Instanz durch eine frische: Die neue startet, bevor die alte SIGTERM bekommt. Dein Bot muss sich beim Start sauber verbinden, und für einen kurzen Moment können beide Kopien online sein. Mit einem lokalen Volume entfällt der tägliche Austausch, und bei einem Deploy stoppt die alte Instanz, bevor die neue startet.
  • Bei einer Instanz bleibenLass den Worker mit einer Instanz laufen. Zwei Kopien eines Bots beantworten jede Nachricht doppelt, und Telegram erlaubt pro Token nur eine Long-Polling-Verbindung.
  • Daten außerhalb der Instanz speichernDateien, die der Bot schreibt, etwa eine SQLite-Datenbank, sind mit der nächsten frischen Instanz weg. Den Zustand legst du in PostgreSQL oder Valkey in derselben Region ab, oder auf einem Volume.
  • Webhook-BotsBots, die Webhooks empfangen, etwa Telegram-Bots im Webhook-Modus oder Discord-Bots mit Interactions Endpoint URL, sind normale Web-Apps: Sie laufen als web, lauschen auf PORT und beantworten den Health-Check-Pfad mit 2xx oder 3xx.

Was Nodion für dich betreibt

  • Deploys ohne Downtime Push auf deinen Branch und Nodion baut ein neues Release. Der Traffic wechselt erst, wenn die neuen Instanzen ihren Health Check bestehen; ein fehlgeschlagenes Release lässt das laufende stehen. Apps mit lokalem Volume starten stattdessen neu, weil die Disk zu einer Instanz gehört.
  • Datenbanken neben der App Managed PostgreSQL, pgvector, MySQL, Valkey und ClickHouse in derselben Region. Angehängte Datenbanken kommen als DATABASE_URL, REDIS_URL oder CLICKHOUSE_URL in die App.
  • Previews pro Pull Request Schalte Previews ein, und Pull Requests aus deinem Repository bekommen eine eigene App mit eigener URL und frischen, leeren Datenbanken, automatisch oder per Hand angelegt. Forks und Bot-Pull-Requests werden übersprungen.
  • Worker, Cron Jobs und Skalierung Worker laufen als weitere Prozesse derselben App, Jobs planst du auf dem Tab Cron, und jeden Prozess skalierst du auf bis zu 16 Instanzen.
  • Release-Schritt Mit Buildpacks läuft eine release:-Zeile in der Procfile bei jedem neuen Build. Dockerfile-Apps sowie Redeploys und Rollbacks auf ein früheres Image nutzen einen Release Command, der an der App selbst gesetzt ist; er hat auch Vorrang vor der Procfile-Zeile. Bei statischen Sites läuft ein Release-Schritt in einem Image, das nur die gebauten Dateien enthält.
  • Logs und Metriken Build-, Release- und Laufzeit-Logs sowie CPU-, Speicher-, Disk- und Netzwerk-Metriken für jede Instanz im Dashboard.
  • Domains und HTTPS Ein Default-Hostname mit HTTPS ab dem ersten Deploy; deine eigenen Domains bekommen automatisch Zertifikate.

Discord bot auf Nodion: Fragen und Antworten

Schläft mein Bot ein?

Nein. Ein Prozess läuft, bis du ihn auf 0 Instanzen setzt oder löschst. Etwa einmal am Tag wird er durch eine frische Instanz ersetzt (nicht mit lokalem Volume); sorg also dafür, dass sich der Bot beim Start neu verbindet.

Kann ich einen Telegram-Bot genauso hosten?

Ja. Ein Bot mit Long Polling, etwa python-telegram-bot mit run_polling(), läuft genau wie ein Discord-Bot als Worker, mit dem Token als Secret. Ein Bot im Webhook-Modus ist dagegen eine normale Web-App.

Warum scheitert der erste Deploy meines Bots?

Der Bot lief als Prozess web, und der wartet auf eine HTTP-Antwort, die nie kommt; nach 10 Minuten wird das Release abgebrochen. Leg den Prozess worker an, setz web auf 0 Instanzen und deploy noch einmal.

Wo läuft meine Discord bot-App?

In der Region EU Central in Frankfurt. Build, Registry, die App und ihre Datenbanken, Volumes, Buckets, Logs und Metriken bleiben in dieser Region, API und Control Plane von Nodion werden in Deutschland gehostet. Die Nodion GmbH hat ihren Sitz in Stuttgart.

Kann ich Discord bot DSGVO-konform betreiben?

Nodion schafft die Voraussetzungen dafür: Die Nodion GmbH hat ihren Sitz in Stuttgart, in der Region Frankfurt laufen App, Datenbanken und Volumes in Deutschland, und den Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO schließt du im Dashboard elektronisch ab. Ob dein Einsatz DSGVO-konform ist, hängt auch davon ab, wie du die App konfigurierst und nutzt.

Was kostet Discord bot-Hosting auf Nodion?

Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 1 EUR im Monat: App 1 EUR. Preise sind netto, Abrechnung pro Sekunde, größere Varianten oder mehr Instanzen wählst du jederzeit.

Kann ich eine eigene Domain für meine Discord bot-App nutzen?

Ja. Jede App bekommt einen Default-Hostnamen mit HTTPS. Deine eigene Domain nimmst du auf dem Tab Domains dazu, das TLS-Zertifikat wird automatisch ausgestellt und erneuert.

Gibt es Support auf Deutsch?

Ja. Nodion ist ein deutsches Unternehmen mit Sitz in Stuttgart, der Support antwortet auf Deutsch und auf Englisch.

Gib deinem Agenten eine Cloud.

Bis zu 15 € Guthaben beim Registrieren.

Weiter mit GitHub

oder per E-Mail

Bleib auf dem Laufenden.

Produktnews, kein Spam. Jederzeit abbestellen.