Przewodnik wdrożeniowy Frankfurt nad Menem, Niemcy

Wdróż Discord bot na Nodion

Bot Discorda utrzymuje otwarte połączenie zamiast odpowiadać na żądania HTTP, więc na Nodion działa jako proces worker bez portu. Dodaj jedną linię w Procfile i jeden proces, trzymaj token w zmiennej oznaczonej jako sekret, a bot będzie działał przez całą dobę we Frankfurcie nad Menem. Boty Telegrama korzystające z long pollingu działają tak samo.

Wdróż na Nodion ›

od 1 EUR / mies.

Do 15 € środków na start przy rejestracji

Działa jako
proces worker, bez portu
Start
worker: python bot.py lub worker: node bot.js
Biblioteki
discord.py, discord.js, python-telegram-bot
Region
EU Central (Frankfurt)

Wdróż Discord bot krok po kroku

  1. Odczytaj token ze środowiska Nigdy nie dodawaj tokenu bota do repozytorium. Odczytaj go ze zmiennej środowiskowej, tutaj z discord.py; w discord.js służy do tego 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. Dodaj Procfile z linią worker Bot napisany w Pythonie potrzebuje pliku requirements.txt z discord.py. Bot w Node.js używa worker: node bot.js i discord.js w package.json, a lockfile musi być w repozytorium; dla bota w TypeScripcie wymagającego buildu prostszym rozwiązaniem jest Dockerfile. Pomiń linię web:: bot nie ma serwera WWW. Procfile
    worker: python bot.py
  3. Utwórz aplikację i zapisz token Utwórz aplikację ze swojego repozytorium GitHub, GitLab, Bitbucket lub Gitea w regionie EU Central. W zakładce Environment dodaj zmienną DISCORD_TOKEN i oznacz ją jako sekret: po zapisaniu wartości nie da się już odczytać.
  4. Dodaj proces worker i wyłącz web Linie w Procfile same nie tworzą procesów. W zakładce Processes dodaj proces o nazwie worker bez portu i z pustym poleceniem, aby uruchamiał wpis z Procfile o tej nazwie. Następnie ustaw web na 0 instancji albo usuń ten proces: bot nie odpowie na health check HTTP, którego potrzebuje web.
  5. Wdróż ponownie Jeśli pierwsze wdrożenie odbyło się przed dodaniem workera, wdróż ponownie. Worker jest uznawany za uruchomiony od razu po starcie, bez sprawdzania HTTP, a w logach z działania aplikacji widać, jak bot się loguje.

Warto wiedzieć

  • Raz dziennie nowa instancjaProcesy działają bez przerwy i nie usypiają. Przy każdym wdrożeniu i mniej więcej raz dziennie Nodion zastępuje każdą instancję nową: nowa uruchamia się, zanim stara dostanie SIGTERM. Twój bot musi przy starcie poprawnie nawiązać połączenie, a przez krótką chwilę obie kopie mogą być online. Przy podłączonym lokalnym wolumenie nie ma codziennej wymiany, a przy wdrożeniu stara instancja zatrzymuje się, zanim wystartuje nowa.
  • Zostań przy jednej instancjiUruchamiaj workera w jednej instancji. Dwie kopie bota odpowiadają na każdą wiadomość dwa razy, a Telegram pozwala tylko na jedno połączenie long polling na token.
  • Przechowuj dane poza instancjąPliki zapisywane przez bota, na przykład baza SQLite, znikają wraz z kolejną nową instancją. Przechowuj stan w PostgreSQL lub Valkey w tym samym regionie albo na wolumenie.
  • Boty z webhookamiBoty odbierające webhooki, na przykład boty Telegrama w trybie webhook albo boty Discorda z Interactions Endpoint URL, są zwykłymi aplikacjami webowymi: działają jako web, nasłuchują na PORT i odpowiadają na ścieżce health checku kodem 2xx lub 3xx.

Czym Nodion zajmuje się za Ciebie

  • Wdrożenia bez przestojów Wypchnij zmiany do swojej gałęzi, a Nodion zbuduje nowy release. Ruch przełącza się, gdy nowe instancje przejdą health check; nieudany release nie wpływa na działającą wersję. Aplikacje z lokalnym wolumenem są natomiast uruchamiane ponownie, bo dysk należy do jednej instancji.
  • Bazy danych obok aplikacji Zarządzane PostgreSQL, pgvector, MySQL, Valkey i ClickHouse w tym samym regionie. Podłączone bazy danych trafiają do aplikacji jako DATABASE_URL, REDIS_URL lub CLICKHOUSE_URL.
  • Środowiska podglądu dla pull requestów Włącz środowiska podglądu, a każdy pull request z Twojego repozytorium dostanie własną aplikację z własnym adresem URL i nowymi, pustymi bazami danych, tworzoną automatycznie lub ręcznie. Forki i pull requesty od botów są pomijane.
  • Workery, zadania cron i skalowanie Uruchamiaj workery jako dodatkowe procesy tej samej aplikacji, planuj zadania w zakładce Cron i skaluj każdy proces do 16 instancji.
  • Etap release W przypadku buildpacków linia release: w Procfile uruchamia się przy każdym nowym buildzie. Aplikacje z Dockerfile, a także ponowne wdrożenia i rollbacki do wcześniejszego obrazu, korzystają z polecenia release ustawionego w samej aplikacji, które ma też pierwszeństwo przed linią z Procfile. W przypadku stron statycznych krok release działa w obrazie zawierającym tylko zbudowane pliki.
  • Logi i metryki W dashboardzie znajdziesz logi z builda, release'u i działania aplikacji oraz metryki CPU, pamięci, dysku i sieci dla każdej instancji.
  • Domeny i HTTPS Domyślna nazwa hosta z HTTPS od pierwszego wdrożenia; Twoje własne domeny automatycznie dostają certyfikaty.

Discord bot na Nodion: pytania i odpowiedzi

Czy mój bot przechodzi w stan uśpienia?

Nie. Proces działa, dopóki nie przeskalujesz go do 0 instancji albo nie usuniesz. Mniej więcej raz dziennie jest zastępowany nową instancją (chyba że ma podłączony lokalny wolumen), więc zadbaj o to, by bot przy starcie ponownie nawiązywał połączenie.

Czy mogę w ten sam sposób hostować bota Telegrama?

Tak. Bot z long pollingiem, na przykład python-telegram-bot z run_polling(), działa jako worker dokładnie tak jak bot Discorda, z tokenem w zmiennej oznaczonej jako sekret. Bot w trybie webhook jest natomiast zwykłą aplikacją webową.

Dlaczego pierwsze wdrożenie mojego bota się nie udaje?

Bot działał jako proces web, który czeka na odpowiedź HTTP, a ta nigdy nie przychodzi; po 10 minutach release zostaje przerwany. Dodaj proces worker, ustaw web na 0 instancji i wdróż ponownie.

Gdzie działa moja aplikacja Discord bot?

W regionie EU Central we Frankfurcie nad Menem (Niemcy). Build, rejestr, aplikacja oraz jej bazy danych, wolumeny, buckety, logi i metryki pozostają w tym regionie, a API i warstwa sterowania (control plane) Nodion są hostowane w Niemczech. Nodion GmbH ma siedzibę w Stuttgarcie.

Czy mogę wykorzystywać Discord bot zgodnie z RODO?

Nodion zapewnia do tego podstawy: Nodion GmbH ma siedzibę w Stuttgarcie (Niemcy), w regionie Frankfurt nad Menem aplikacja, jej bazy danych i wolumeny działają w Niemczech, a umowę powierzenia przetwarzania danych (DPA, art. 28 RODO) zawierasz elektronicznie w dashboardzie. To, czy Twoje wdrożenie spełnia wymogi RODO, zależy też od tego, jak skonfigurujesz aplikację i jak z niej korzystasz.

Ile kosztuje uruchomienie Discord bot na Nodion?

Instancja aplikacji kosztuje od 1 EUR miesięcznie. Konfiguracja z ramki kosztuje 1 EUR miesięcznie: Aplikacja 1 EUR. Ceny są podane netto, a rozliczenie następuje co do sekundy. Większe rozmiary lub więcej instancji możesz wybrać w dowolnym momencie.

Czy mogę użyć własnej domeny dla mojej aplikacji Discord bot?

Tak. Każda aplikacja dostaje domyślną nazwę hosta z HTTPS. Własną domenę dodasz w zakładce Domains aplikacji, a certyfikat TLS jest wystawiany i odnawiany automatycznie.

Daj swojemu agentowi chmurę.

Zyskaj do 15 € środków na start przy rejestracji.

Kontynuuj z GitHub

lub przez e-mail

Bądź na bieżąco.

Nowości produktowe, bez spamu. Możesz zrezygnować w każdej chwili.