NorthflankでDiscord Botを無料で常時起動
NorthflankというサービスでDiscord Botを動かす方法をまとめました。
この記事で紹介するとき、日本語の記事が見つからなかったのでないなら書けばいいじゃないというマリー・アントワネット的な思考で描きました
Northflankとは
Discord Botの常時起動の方法でよく聞くHerokuと同じPaaS (Platform as a Service) にあたるサービスです。(ただし、Herokuの無料枠は廃止されています。)
GitHubやGitLabなどと連携すると、リポジトリから簡単にデプロイでき、CI/CD機能によりプッシュ時に自動でデプロイされて便利です。
Python、Ruby、Rust、PHP、TypeScript、React、Vue.jsなどが動作します。サンプルコードも用意されています。
こちらから確認できます。
Developer Sandboxプランでは、0.2 shared CPU、512MBのRAM、1GBのストレージのマシンを2つ利用できます。
言語
Python 3.11
用意するもの
- Botのリポジトリ
- クレジットカードまたはデビットカード(プリペイドカードが使えるかどうかは不明)
テストコード
このコードはこちらの記事のコードをベースに作成させていただきました。
登録
メアド、Google、GitHub、GitLab、BitBucketでの登録ができます。
自分のリポジトリを使うならGitHub、GitLab、BitBucketのどれかの方がいいです。

次に出てくるページでユーザー名を登録してしてください。(写真撮り忘れた)
ここでは2でDeveloper Sandboxを選んでおけばいいです。

これで登録完了です。
プロジェクト作成
まず、プロジェクトを作成します。
上のCreate NewからProjectを選択してください。

Project Nameには任意なプロジェクト名を選んで、リージョンはアメリカとイギリスの好きな方を選んでください。

これでプロジェクトは完成です。
デプロイ
いよいよDiscord Botをデプロイしていきます。
まず先ほどと同様にCreate Newを押して、今度はServiceを選択してください。
Service nameには任意の名前を入れてください。
Repositryには自分のリポジトリを選択するか、リポジトリのURLを入れてください。
GitHub等でアカウントを作っていたら自動で自分のリポジトリが選べるようになっているはずです。(違ったらすみません。)

ビルド方法にはDockerfileとHeroku Buildpackがあるのですが、今回はDockerfileにします。
Dockerfileを選択するとリポジトリから自動で読み取ってポートなどの設定を自動でやってくれます。
もし自動で読み取れないならVerifyを押して読み取らせてください。

次に、Environment variablesのRuntime variablesをクリックして、環境変数を設定していきます。
Add variableをクリックしてテストコードの場合だとKeyにDISCORD_TOKENと入れて、ValueにBotのTokenを入れてください。
jsonやenvの形式で入れることもできます。

最後にマシンのスペックを設定していきます。
Developer Sandboxプランなら2つまでnf-compute-10でもnf-compute-20でも無料なので特別な理由がないならnf-compute-20に変えましょう。

そしてCreate Serivceを押してデプロイ...って言いたいところですが支払い方法を追加していないとここでカードで認証するように言われるのでカードを追加しましょう。(プリペイドカード使えたかは覚えてません。デビットは使える。)
Developer Sandboxプランから変えなければ請求が来ることはありません。(料金改訂があるかもしれないので決済履歴や料金は定期的に見るようにしましょう。)
追加したら自動でデプロイが開始されます。
デプロイから起動までは数分程度かかるので少し待ちましょう。
Botがオンラインになりました。

おわりに
使ってみた感想として環境変数にjsonやenvが使えることや、無料枠を超えてしまう機能は警告や制限がされて請求が発生しないようになっているUIが気に入りました。
過去のデプロイのログも結構残っているのでそれも高評価。(いつまで保管されているか不明)
Northflankで半年くらいBlueskyのBotをデプロイしてますが、今の所ダウンしていることはあっても気づかないくらいしかないです。
無料枠の中では比較的高いスペックのマシンが2つ使えるので、他の用途にも使えて結構おすすめです。
最後まで読んでいただきありがとうございました。
↓Northflankで運用しているBot
Discussion