Guida al deploy Francoforte, Germania

Fai il deploy di Discord bot su Nodion

Un bot Discord tiene aperta una connessione invece di rispondere a richieste HTTP, quindi su Nodion gira come processo worker senza porta. Aggiungi una riga al Procfile e un processo, tieni il token in una variabile segreta, e il bot gira 24 ore su 24 a Francoforte. I bot Telegram con long polling funzionano allo stesso modo.

Fai il deploy su Nodion ›

da 1 EUR / mese

Fino a 15 € di credito di benvenuto alla registrazione

Gira come
processo worker, senza porta
Avvio
worker: python bot.py o worker: node bot.js
Librerie
discord.py, discord.js, python-telegram-bot
Regione
EU Central (Francoforte)

Deploy di Discord bot passo dopo passo

  1. Leggi il token dall'ambiente Non fare mai il commit del token del bot. Leggilo da una variabile d'ambiente, qui con discord.py; con discord.js è 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. Aggiungi un Procfile con una riga worker Un bot Python ha bisogno di un requirements.txt con discord.py. Un bot Node.js usa worker: node bot.js, discord.js nel package.json e un lockfile incluso nel commit; per un bot TypeScript con un passaggio di build, un Dockerfile è la strada più semplice. Non aggiungere una riga web:: il bot non ha un server web. Procfile
    worker: python bot.py
  3. Crea l'app e salva il token Crea un'applicazione dal tuo repository GitHub, GitLab, Bitbucket o Gitea nella regione EU Central. Nella scheda Environment, aggiungi DISCORD_TOKEN e contrassegnalo come segreto: dopo il salvataggio, il valore non si può più rileggere.
  4. Aggiungi il processo worker e disattiva web Le righe del Procfile non creano processi da sole. Nella scheda Processes, aggiungi un processo chiamato worker senza porta e con il comando vuoto, così esegue la voce del Procfile con lo stesso nome. Poi imposta web a 0 istanze o eliminalo: un bot non risponde mai all'health check HTTP di cui web ha bisogno.
  5. Fai di nuovo il deploy Se il primo deploy è partito prima che aggiungessi il worker, fai di nuovo il deploy. Il worker risulta in esecuzione appena parte, senza controllo HTTP, e nei log di runtime vedi il bot che effettua l'accesso.

Da sapere

  • Un'istanza nuova una volta al giornoI processi restano in esecuzione e non vanno in sospensione. A ogni deploy e circa una volta al giorno, Nodion sostituisce ogni istanza con una nuova: la nuova parte prima che la vecchia riceva SIGTERM. Il tuo bot deve connettersi in modo pulito all'avvio, e per un breve momento entrambe le copie possono essere online. Con un volume locale collegato non c'è la sostituzione giornaliera, e a un deploy la vecchia istanza si ferma prima che parta la nuova.
  • Resta su una sola istanzaEsegui il worker con una sola istanza. Due copie di un bot rispondono due volte a ogni messaggio, e Telegram consente una sola connessione long polling per token.
  • Salva i dati fuori dall'istanzaI file che il bot scrive, come un database SQLite, spariscono quando l'istanza viene sostituita. Tieni lo stato in PostgreSQL o Valkey nella stessa regione, oppure su un volume.
  • Bot con webhookI bot che ricevono webhook, come i bot Telegram in modalità webhook o i bot Discord con un interactions endpoint URL, sono normali app web: girano come web, ascoltano su PORT e rispondono con 2xx o 3xx sul percorso dell'health check.

Cosa gestisce Nodion per te

  • Deploy senza downtime Fai push sul tuo branch e Nodion crea una nuova release. Il traffico passa alle nuove istanze solo quando superano l'health check; una release fallita lascia attiva quella in esecuzione. Le app con un volume locale invece si riavviano, perché il disco appartiene a una sola istanza.
  • Database accanto all'app PostgreSQL, pgvector, MySQL, Valkey e ClickHouse gestiti, nella stessa regione. I database collegati arrivano come DATABASE_URL, REDIS_URL o CLICKHOUSE_URL.
  • Anteprime per ogni pull request Attiva le anteprime: ogni pull request del tuo repository riceve un'app dedicata, con un proprio URL e database nuovi e vuoti, creata automaticamente o manualmente. Le pull request dai fork e quelle dei bot vengono ignorate.
  • Worker, cron job e scalabilità Esegui i worker come processi aggiuntivi della stessa app, pianifica i job nella scheda Cron e scala ogni processo fino a 16 istanze.
  • Fase di release Con i buildpack, la riga release: del Procfile viene eseguita a ogni nuova build. Le app con Dockerfile, così come i redeploy e i rollback a un'immagine precedente, usano un comando di release impostato sull'app stessa, che ha anche la precedenza sulla riga del Procfile. Nei siti statici, la fase di release gira in un'immagine che contiene solo i file generati dalla build.
  • Log e metriche Nella dashboard trovi log di build, release e runtime, oltre alle metriche di CPU, memoria, disco e rete per ogni istanza.
  • Domini e HTTPS Un hostname predefinito con HTTPS dal primo deploy; i tuoi domini ricevono i certificati in automatico.

Discord bot su Nodion: domande e risposte

Il mio bot va in sospensione?

No. Un processo gira finché non lo scali a 0 istanze o lo elimini. Circa una volta al giorno viene sostituito con un'istanza nuova (non con un volume locale collegato), quindi assicurati che il bot si riconnetta all'avvio.

Posso ospitare un bot Telegram allo stesso modo?

Sì. Un bot con long polling, per esempio python-telegram-bot con run_polling(), gira come worker esattamente come un bot Discord, con il token in una variabile segreta. Un bot in modalità webhook è invece una normale app web.

Perché il primo deploy del mio bot fallisce?

Il bot girava come processo web, che aspetta una risposta HTTP che non arriva mai; dopo 10 minuti la release viene annullata. Aggiungi il processo worker, imposta web a 0 istanze e fai di nuovo il deploy.

Dove gira la mia app Discord bot?

Nella regione EU Central a Francoforte, in Germania. La build, il registry, l'app e i suoi database, volumi, bucket, log e metriche restano in quella regione. L'API e il control plane di Nodion sono ospitati in Germania. Nodion GmbH ha sede a Stoccarda.

Posso usare Discord bot in modo conforme al GDPR?

Nodion offre le basi per farlo: Nodion GmbH ha sede a Stoccarda, in Germania; nella regione di Francoforte l'app, i suoi database e i volumi girano in Germania; puoi sottoscrivere il DPA (accordo sul trattamento dei dati, art. 28 GDPR) in formato elettronico nella dashboard. La conformità del tuo utilizzo dipende anche da come configuri e usi l'app.

Quanto costa l'hosting di Discord bot su Nodion?

Un'istanza dell'app costa da 1 EUR al mese. La configurazione mostrata nel riquadro costa 1 EUR al mese: App 1 EUR. I prezzi sono IVA esclusa e la fatturazione è al secondo. Puoi scegliere dimensioni più grandi o più istanze quando ti servono.

Posso usare un mio dominio per la mia app Discord bot?

Sì. Ogni app riceve un hostname predefinito con HTTPS. Aggiungi il tuo dominio nella scheda Domains dell'app; il certificato TLS viene emesso e rinnovato automaticamente.

Dai al tuo agente un cloud tutto suo.

Fino a 15 € di credito quando ti registri.

Continua con GitHub

oppure con l'email

Resta aggiornato.

Novità sul prodotto, niente spam. Puoi annullare l'iscrizione quando vuoi.