Deployhandleiding Frankfurt, Duitsland

Deploy Discord bot op Nodion

Een Discord-bot houdt een verbinding open in plaats van HTTP-requests te beantwoorden, dus op Nodion draait hij als workerproces zonder poort. Voeg één Procfile-regel en één proces toe, bewaar het token in een geheime variabele, en de bot draait de klok rond in Frankfurt. Telegram-bots met long polling werken op dezelfde manier.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Draait als
proces worker, zonder poort
Start
worker: python bot.py of worker: node bot.js
Bibliotheken
discord.py, discord.js, python-telegram-bot
Regio
EU Central (Frankfurt)

Discord bot stap voor stap deployen

  1. Lees het token uit de omgeving Commit het token van je bot nooit. Lees het uit een omgevingsvariabele, hier met discord.py; met discord.js is dat 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. Voeg een Procfile met een worker-regel toe Een Python-bot heeft een requirements.txt met discord.py nodig. Een Node.js-bot gebruikt worker: node bot.js, discord.js in package.json en een lockfile die in de repository staat; voor een TypeScript-bot met een buildstap is een Dockerfile de eenvoudigere weg. Laat een web:-regel weg: de bot heeft geen webserver. Procfile
    worker: python bot.py
  3. Maak de app aan en sla het token op Maak een applicatie aan vanuit je GitHub-, GitLab-, Bitbucket- of Gitea-repository in de regio EU Central. Voeg op het tabblad Environment DISCORD_TOKEN toe en markeer het als secret: na het opslaan kan de waarde niet meer worden uitgelezen.
  4. Voeg het workerproces toe en zet web uit Procfile-regels maken zelf geen processen aan. Voeg op het tabblad Processes een proces met de naam worker toe, zonder poort en met een leeg commando, zodat het de Procfile-regel met die naam uitvoert. Zet daarna web op 0 instanties of verwijder het: een bot beantwoordt nooit de health check via HTTP die web nodig heeft.
  5. Deploy opnieuw Liep de eerste deployment voordat je de worker toevoegde, deploy dan opnieuw. De worker geldt als actief zodra hij start, zonder HTTP-check, en in de runtime-logs zie je de bot inloggen.

Goed om te weten

  • Eén keer per dag een nieuwe instantieProcessen blijven draaien en gaan niet slapen. Bij elke deployment en ongeveer één keer per dag vervangt Nodion elke instantie door een nieuwe: de nieuwe start voordat de oude SIGTERM krijgt. Je bot moet bij het starten netjes verbinding maken, en heel even kunnen beide kopieën online zijn. Met een gekoppeld lokaal volume is er geen dagelijkse vervanging, en bij een deployment stopt de oude instantie voordat de nieuwe start.
  • Houd het bij één instantieDraai de worker met één instantie. Twee kopieën van een bot beantwoorden elk bericht twee keer, en Telegram staat maar één long-pollingverbinding per token toe.
  • Sla data op buiten de instantieBestanden die de bot schrijft, zoals een SQLite-database, zijn weg bij de volgende nieuwe instantie. Bewaar de gegevens van je bot in PostgreSQL of Valkey in dezelfde regio, of op een volume.
  • Webhook-botsBots die webhooks ontvangen, zoals Telegram-bots in webhookmodus of Discord-bots met een Interactions Endpoint URL, zijn gewone webapps: ze draaien als web, luisteren op PORT en beantwoorden het pad van de health check met 2xx of 3xx.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Discord bot op Nodion: vragen en antwoorden

Gaat mijn bot slapen?

Nee. Een proces draait tot je het naar 0 instanties schaalt of verwijdert. Ongeveer één keer per dag wordt het vervangen door een nieuwe instantie (niet met een gekoppeld lokaal volume), dus zorg dat de bot bij het starten opnieuw verbinding maakt.

Kan ik een Telegram-bot op dezelfde manier hosten?

Ja. Een bot met long polling, bijvoorbeeld python-telegram-bot met run_polling(), draait als worker, precies zoals een Discord-bot, met het token in een geheime variabele. Een bot in webhookmodus is daarentegen een gewone webapp.

Waarom mislukt de eerste deployment van mijn bot?

De bot draaide als het proces web, dat wacht op een HTTP-antwoord dat nooit komt; na 10 minuten wordt de release afgebroken. Voeg het proces worker toe, zet web op 0 instanties en deploy opnieuw.

Waar draait mijn Discord bot-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Discord bot gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Discord bot op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 1 EUR per maand: App 1 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Discord bot-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.