Deploy guide Frankfurt, Germany
A Discord bot keeps a connection open instead of answering HTTP requests, so on Nodion it runs as a worker process without a port. Add one Procfile line and one process, keep the token in a secret variable, and the bot runs around the clock in Frankfurt. Telegram bots with long polling work the same way.
worker process, no portworker: python bot.py or worker: node bot.jsclient.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"]) requirements.txt with discord.py. A Node.js bot uses worker: node bot.js, discord.js in package.json and a committed lockfile; for a TypeScript bot with a build step, a Dockerfile is the simpler route. Leave out a web: line: the bot has no web server. Procfile worker: python bot.py DISCORD_TOKEN and mark it as secret: after saving, the value can no longer be read back. worker without a port and with an empty command, so it runs the Procfile entry of that name. Then set web to 0 instances or delete it: a bot never answers the HTTP health check that web needs. SIGTERM. Your bot has to connect cleanly when it starts, and for a short moment both copies can be online. With a local volume attached, there is no daily replacement, and on a deploy the old instance stops before the new one starts.web, listen on PORT and answer the health check path with 2xx or 3xx.DATABASE_URL, REDIS_URL or CLICKHOUSE_URL. release: line runs with every new build. Dockerfile apps, and redeploys or rollbacks to an earlier image, use a release command set on the app itself, which also takes precedence over the Procfile line. On static sites a release step runs in an image that holds only the built files. No. A process runs until you scale it to 0 instances or delete it. About once a day it is replaced with a fresh instance (not with a local volume attached), so make sure the bot reconnects on start.
Yes. A bot with long polling, for example python-telegram-bot with run_polling(), runs as a worker exactly like a Discord bot, with its token in a secret variable. A bot in webhook mode is a normal web app instead.
The bot ran as the web process, which waits for an HTTP answer that never comes; after 10 minutes the release is aborted. Add the worker process, set web to 0 instances and deploy again.
In the EU Central region in Frankfurt, Germany. Build, registry, the app and its databases, volumes, buckets, logs and metrics stay in that region, and Nodion's API and control plane are hosted in Germany. Nodion GmbH is based in Stuttgart.
Nodion provides the basis for it: Nodion GmbH is based in Stuttgart, Germany, in the Frankfurt region the app, its databases and volumes run in Germany, and you conclude the data processing agreement (DPA) under Art. 28 GDPR electronically in the dashboard. Whether your setup complies also depends on how you configure and use the app.
An app instance starts at 1 EUR per month. The setup in the cost box costs 1 EUR per month: App 1 EUR. Prices are net and billed per second, and you pick bigger sizes or more instances whenever you need them.
Yes. Every app gets a default hostname with HTTPS. Add your own domain on the app's Domains tab; the TLS certificate is issued and renewed automatically.
Earn up to 15 € in credit when signing up.
or with email
Product news, no spam. Unsubscribe anytime.
Successfully subscribed.