0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS LightsailでDiscordbotを運用する

Last updated at Posted at 2025-11-08

目的

かなり昔にGlitchでdiscordbotを運用していたがGlitchがサービス終了してしまったためAWSに移行したい。
費用を抑えるためにEC2ではなくLightsailで運用したい。
AWSを使いたい(私欲)

手順

  1. Lightsailインスタンスの作成
  2. Node.jsのセットアップ
  3. アプリケーション配置
  4. .envファイルの作成
  5. 動作確認
  6. 常駐化
  7. セキュリティ/運用

※DiscordbotのID/TOKENの設定等については調べればその辺にあります(適当)

Lightsailインスタンスの作成

  1. AWSコンソールのLightsailの画面に遷移しCreate instanceを押す
  2. Select a platform:Linux/Unixを選択
  3. Select a blueprint:Ubuntu22.04を選択
  4. SSH key:デフォルトでOK
  5. Select a network type:IPv4(デフォルト)でOK
  6. Select a size:好きなプランを選んでください
  7. 好きな名前とかタグをつけてインスタンスの作成

Node.jsのセットアップ

-> コンソールからSSH接続

1. システム更新

bash
sudo apt-get update -y && sudo apt-get upgrade -y

2. nvm(Node Version Manager)のインストール

bash
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

3. nvmの設定をシェルに反映

bash
export NVM_DIR="$HOME/.nvm"
. "$NVM_DIR/nvm.sh"

4. Node.js LTSバージョンをインストール

bash
nvm install --lts

5. バージョン確認

bash
node -v
npm -v

6. pm2のグローバルインストール

bash
npm i -g pm2

pm2について

pm2はNode.jsアプリをバックグラウンドで動かし続けるためのプロセスマネージャーです

  • pm2の役割
    • 常駐運用
      • ターミナルが閉じられていてもプログラムを動かし続けられます
    • 自動再起動
      • アプリケーションが落ちても自動で再起動します
      • サーバーを再起動しても自動でアプリケーションを起動します
    • ログ管理
      • 実行ログを保存・リアルタイムで確認できます
    • 複数のアプリ管理
      • 複数のアプリうやAPIを同時に管理できます
    • リソース監視
      • CPUやメモリの使用量をリアルタイムで確認できます

アプリケーション配置

※ Gitですでに運用できるbotを作成した状態です

1. UbuntuにGitをインストール

bash
sudo apt-get install -y git

2. ソースコードをGithubからサーバーにクローン

bash
git clone <URL> <ディレクトリ名>

3. 依存モジュールのインストール

bash
cd <ディレクトリ名>
npm ci

.envファイルの作成

※ アプリケーションの構成によって異なる

1. envファイルを作成

bash
cd <ディレクトリ名>
touch .env

2. envファイルを編集

bash
# どちらか
nano .env
vi .env

動作確認

※ アプリケーションによって異なる

bash
# コマンドの登録
node command.js
# フォアグラウンドでテスト
node index.js

常駐化

1. バックグラウンドで起動 & pm2にプロセス登録

bash
pm2 start index.js --name <プロセス名>

2. pm2での監視・自動起動設定

bash
pm2 startup systemd -u <ユーザー名(例:$USER)> --hp <ホームディレクトリ(例:$HOME)>

3. pm2にプロセスを永続保存

bash
pm2 save

4. 動作確認

bash
pm2 status
pm2 logs <プロセス名>

更新時

1. プロジェクトディレクトリに移動

bash
cd <ディレクトリ名>

2. 最新のコードを取得

bash
git pull

3. パッケージの再インストール

bash
npm ci

4. プロセスの再起動

bash
pm2 restart <プロセス名>

5. pm2にプロセスを保存

bash
pm2 save

6. 動作確認

bash
pm2 status
pm2 logs <プロセス名>

セキュリティ/運用

  • パーミッションの制限
bash
chmod 600 .env
  • 定期更新
bash
sudo apt-get update -y && sudo apt-get upgrade -y
  • ヘルスチェック
bash
pm2 status
pm2 logs

感想

軽いアプリケーションなら24時間365日使用しても月$5~で運用できるのは本当にすごい!
しかもネットワークの設定等の難しそうなのは一切なし!めっちゃ楽!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?