メインコンテンツへスキップ
【配信者必見】Discordボットを24時間稼働させる方法|VPS活用ガイド

【配信者必見】Discordボットを24時間稼働させる方法|VPS活用ガイド

公開日
更新日
読了目安37

配信者としてコミュニティを運営していると、「Discordボットが自宅PCを再起動したら止まった」「寝ている間もボットを動かし続けたい」という悩みはありませんか?

自宅PCでDiscordボットを動かすと、電気代がかさみ、停電やPCの再起動で予期せず停止するリスクがあります。特に配信者にとって、コミュニティメンバーとの接点を保つDiscordボットの停止は、信頼性を損なう大きな問題です。

Discord コミュニティサーバー

本記事では、ConoHa VPSを使ってDiscordボットを24時間365日安定稼働させる方法を、初心者にもわかりやすく解説します。

この記事でわかること - 配信者にとってのDiscordコミュニティとボットの重要性 - 自宅PC運用の問題点とVPS導入のメリット - ConoHa VPSがDiscordボット運用に最適な理由 - ボットの規模別おすすめプラン選び - Node.js/Python環境の構築手順 - 人気ボット(MEE6代替、音楽ボット等)の導入方法 - 自作ボットのデプロイと運用ノウハウ - 監視・自動再起動の設定方法

配信者にとってのDiscordコミュニティの重要性

近年、YouTubeやTwitchで活動する配信者にとって、Discordコミュニティは単なる連絡ツールを超えた存在になっています。

Discordが配信活動で果たす役割

配信プラットフォームだけでは実現できない、以下のような価値をDiscordは提供します。

リアルタイムコミュニケーション

  • 配信外でのファンとの交流
  • 視聴者同士のコミュニティ形成
  • 配信スケジュールの告知
  • ゲーム仲間の募集

エンゲージメント向上

  • メンバー限定特典の提供
  • 投票やアンケート機能の活用
  • ファンアート・二次創作の共有スペース
  • メンバーシップ特典との連携

配信の質向上

  • リアルタイムフィードバックの収集
  • 企画案の募集
  • バグ報告やテクニカルサポート
  • コラボ企画の調整

配信者のデスクセットアップ

Discordボットがコミュニティ運営を効率化

数十人から数千人規模のコミュニティを運営する配信者にとって、すべてのメッセージに目を通し、管理作業を手動で行うのは現実的ではありません。

ボットが自動化できる主な業務

  • 新規メンバーの歓迎メッセージ
  • ルール違反の自動検出とモデレーション
  • ロール(役職)の自動付与
  • 配信通知の自動送信
  • カスタムコマンドの作成
  • レベル/ランキングシステムの運用
  • 音楽再生やゲーム機能の提供

これらの機能を活用することで、配信者は配信そのものに集中でき、コミュニティの健全性も保たれます。

実例:人気配信者のDiscord活用

登録者100万人超のゲーム実況者の多くは、Discord内で以下のような仕組みを構築しています:

  • メンバーシップ連携ボット(YouTube/Twitch連携)
  • カスタムスタンプやエモート管理
  • 配信スケジュール通知Bot
  • ファンアート投稿専用チャンネルの自動整理
  • 質問箱ボット

こうした仕組みにより、数千人のアクティブユーザーがいても秩序あるコミュニティ運営が可能になっています。

ボット24時間稼働のメリットと自宅PCの問題点

Discordボットを自宅PCで運用している配信者は少なくありません。しかし、実際に運用してみると様々な課題に直面します。

自宅PCでボットを動かす際の5つの問題点

1. 電気代が意外と高い

デスクトップPCを24時間365日稼働させると、月間の電気代は以下のようになります:

消費電力100Wのデスクトップの場合
100W × 24時間 × 30日 = 72kWh/月
72kWh × 30円/kWh = 2,160円/月
年間で約26,000円の電気代

ゲーミングPCなど高性能マシンの場合、消費電力200W〜300Wになることも多く、電気代はさらに跳ね上がります。

2. 停電・再起動で突然停止

  • Windowsアップデートによる自動再起動
  • 停電や電源トラブル
  • PCのフリーズやクラッシュ
  • 誤操作による電源オフ

これらの理由で、気づいたらボットが数時間〜数日止まっていた、という事態が発生します。

サーバールーム

3. 自宅IPアドレスのセキュリティリスク

自宅PCで外部公開サービスを運用すると:

  • 自宅のグローバルIPアドレスが露出
  • DDoS攻撃の標的になる可能性
  • 不正アクセス試行のリスク
  • 家庭内ネットワーク全体への影響

4. ノイズとファンの騒音

デスクトップPCを24時間稼働させると:

  • ファンの回転音が常に響く
  • 夏場は室温上昇で冷却ファンがフル稼働
  • 配信中のマイクにノイズが乗る可能性
  • 睡眠環境への影響

5. メンテナンスの手間

自宅PCでの運用では:

  • OS再起動のたびにボット再起動が必要
  • 常にPCを占有されるため他の用途に使えない
  • PCのスペック不足でボットが不安定になることも
  • リモートからの管理が困難

VPS導入で解決できること

これらの問題は、ConoHa VPSのようなクラウドサーバーを利用することで一気に解決できます。

  • 月額数百円〜で24時間365日稼働(電気代より安い)
  • 99.99%以上の高い稼働率(停電の心配なし)
  • 外部からのSSH接続でどこからでも管理可能
  • データセンターの強固なセキュリティ
  • 自宅PCを他の用途に自由に使える
  • 複数のボットを同時稼働可能
  • スケールアップ・ダウンが容易
  • 月額料金がかかる(ただし電気代より安い場合が多い)
  • 初期設定にLinux/サーバーの基礎知識が必要
  • コマンドライン操作に慣れる必要がある

ConoHa VPSがDiscordボット運用に最適な理由

数あるVPSサービスの中で、ConoHa VPSが配信者のDiscordボット運用に特におすすめな理由を解説します。

クラウドサーバー環境

1. 圧倒的なコストパフォーマンス

ConoHa VPSは、他社VPSと比較して非常にリーズナブルな価格設定です。

料金例(まとめトク適用時)

  • 512MBプラン: 月額296円〜(キャンペーン価格)
  • 1GBプラン: 月額594円〜
  • 2GBプラン: 月額1,089円〜
  • 4GBプラン: 月額2,118円〜

さらに、3ヶ月以上のまとめトク契約でアルファSSL(年6,600円相当)が無料になるため、セキュアな運用が可能です。

2026年12月限定キャンペーン

現在、ConoHa VPSでは「プレミアムウィンターキャンペーン」を実施中(〜2026年12月19日16:00まで)。まとめトクが特別価格で利用できるため、このタイミングでの契約がお得です。

※出典:ConoHa VPS プレミアムウィンターキャンペーン

2. 申し込み後すぐに使えるスピード感

ConoHa VPSの最大の特徴は、申し込みから利用開始までの速さです。

  • Webフォームで申し込み完了後、最短25秒でサーバー起動
  • 豊富なOSテンプレートからワンクリックでインストール
  • 直感的なコントロールパネルで初心者でも操作しやすい

「今すぐDiscordボットを稼働させたい」という配信者のニーズに応えられます。

3. 最新CPUとSSDで高速処理

  • 最新世代のCPU(Intel Xeon / AMD EPYC)
  • 全プランでSSDストレージ標準搭載
  • 高速ネットワーク(上り下り最大1Gbps)

ボットの応答速度が速く、大規模コミュニティでも快適に動作します。

4. 豊富なスタートアップスクリプト

ConoHa VPSには、様々なアプリケーションを一発でインストールできるスタートアップスクリプトが用意されています。

Discord運用に役立つスクリプト

  • Node.js環境
  • Python環境
  • Docker環境
  • Bluesky/Mastodon/Misskey(独自SNS構築)
  • Claude Code/Dify/n8n(AIツール)

これらを活用すれば、環境構築の時間を大幅に短縮できます。

※出典:ConoHa VPS スタートアップスクリプト

5. 柔軟なプラン変更

Discordコミュニティの規模拡大に応じて:

  • メモリやCPUをアップグレード
  • 追加SSD(1TB/5TB/10TB)の導入
  • S3互換オブジェクトストレージの追加

など、必要に応じてスケールアップできます。

プログラミング環境

6. 配信者に優しい追加機能

MCP(Model Context Protocol)対応

  • 国内クラウド事業者初のMCP対応
  • AIツールとの連携が容易

KUSANAGIマネージャー対応

  • 自前のポートフォリオサイトをWordPressで構築
  • 世界最速級のWordPress環境

公式キャラクター「美雲このは」の2次創作OK

  • 配信の切り抜きやサムネイルに使える
  • 商用利用も可能(ガイドライン準拠)

※出典:美雲このはガイドライン

推奨プラン選び:ボットの規模別

Discordボットを運用する際、どのVPSプランを選べば良いのか迷う方も多いでしょう。ここでは、コミュニティ規模とボットの種類別におすすめプランを紹介します。

小規模コミュニティ(〜100人): 1GBプラン

おすすめ:1GBプラン(月額594円〜)

  • Discord登録メンバー: 〜100人
  • アクティブユーザー: 〜30人
  • 運用ボット数: 1〜2個

できること

  • シンプルな管理ボット(歓迎メッセージ、自動ロール付与)
  • レベルシステム・ランキングボット
  • カスタムコマンドbot
  • 軽量な音楽ボット

利用例

- Node.jsボット(discord.js) × 1
- メモリ使用量: 200〜300MB
- CPU使用率: 5〜10%
1GBプランのポイント 個人配信者や小規模コミュニティなら1GBプランで十分です。まずはこのプランから始めて、必要に応じてアップグレードするのが賢い選択です。

中規模コミュニティ(100〜500人): 2GBプラン

おすすめ:2GBプラン(月額1,089円〜)

  • Discord登録メンバー: 100〜500人
  • アクティブユーザー: 30〜100人
  • 運用ボット数: 2〜3個

できること

  • 複数の管理ボット同時稼働
  • データベース(SQLite/MongoDB)を使った機能
  • 音楽ボット + 管理ボット
  • カスタムAPI連携(YouTube/Twitch通知)

利用例

- discord.py(Python)管理ボット
- discord.js(Node.js)音楽ボット
- 合計メモリ使用量: 500〜800MB
- CPU使用率: 10〜20%
  • 複数ボットを余裕を持って運用可能
  • データベースも同一サーバーで稼働
  • 配信通知やAPIポーリングも快適
  • 初心者でも開発・テスト環境を別途構築可能

大規模コミュニティ(500人以上): 4GB以上プラン

おすすめ:4GBプラン(月額2,118円〜)

  • Discord登録メンバー: 500人以上
  • アクティブユーザー: 100〜300人
  • 運用ボット数: 3個以上

できること

  • 大規模コミュニティの管理ボット
  • 音楽ボット(複数サーバー対応)
  • データベース(PostgreSQL/MySQL)
  • 高度なモデレーション機能
  • Webダッシュボードの運用

利用例

- 管理ボット(discord.py)
- 音楽ボット(Lavalink)
- 通知ボット(API連携)
- PostgreSQLデータベース
- 合計メモリ使用量: 1〜2GB
- CPU使用率: 20〜40%

超大規模・複数サーバー運用: 8GB以上プラン

おすすめ:12GBプラン(月額4,719円〜)

  • 複数のDiscordサーバーで使用
  • ボット公開を検討(Discord Bot List登録)
  • 数千〜数万人規模のコミュニティ

できること

  • 複数サーバー対応ボット
  • シャーディング(負荷分散)
  • Redis/Memcached(キャッシュサーバー)
  • 本格的なWebダッシュボード
  • AIボット(GPT連携など)
プラン別スペック比較
1GBプランCPU 2コア / メモリ 1GB / SSD 100GB
2GBプランCPU 3コア / メモリ 2GB / SSD 100GB
4GBプランCPU 4コア / メモリ 4GB / SSD 100GB
12GBプランCPU 6コア / メモリ 12GB / SSD 100GB
24GBプランCPU 8コア / メモリ 24GB / SSD 100GB

プラン選びのチェックポイント

まず確認すべきこと

  1. Discordサーバーの現在のメンバー数
  2. 1日のアクティブユーザー数
  3. 導入予定のボットの種類と数
  4. データベースの使用有無
  5. 将来的な拡張計画

迷ったら1つ上のプランを選ぶ

  • メモリ不足はボットクラッシュの原因に
  • 余裕を持った運用が安定性につながる
  • ConoHa VPSはプラン変更が簡単

Node.js/Python環境構築手順

Discordボットを動かすには、Node.jsまたはPythonの実行環境が必要です。ここでは、ConoHa VPSでの環境構築手順を解説します。

コーディング画面

ConoHa VPSの初期セットアップ

1. ConoHa VPSアカウント作成

  1. ConoHa VPS公式サイトにアクセス
  2. 「今すぐお申し込み」をクリック
  3. メールアドレスとパスワードを入力してアカウント作成
  4. SMS認証または電話認証で本人確認

2. VPSサーバーの追加

  1. コントロールパネルにログイン
  2. 「サーバー追加」をクリック
  3. 以下の設定を選択:
サービス: VPS
プラン: 1GB以上(推奨:2GB)
イメージタイプ: Ubuntu 22.04 or 24.04
rootパスワード: 強固なパスワードを設定
ネームタグ: discord-bot-server(任意)
  1. 「追加」をクリック
  2. 約25秒でサーバーが起動

3. SSH接続設定

Windowsの場合(PowerShell使用)

ssh root@[サーバーのIPアドレス]

Macの場合(ターミナル使用)

ssh root@[サーバーのIPアドレス]

初回接続時に「Are you sure you want to continue connecting?」と聞かれたら yes と入力。

rootパスワードを入力してログイン成功。

Node.js環境の構築(discord.js用)

discord.js(JavaScript/TypeScript)でボットを作る場合のセットアップです。

1. システムアップデート

# パッケージリストを更新
apt update && apt upgrade -y

2. Node.jsインストール(NodeSource経由)

# Node.js 20.x LTSのリポジトリを追加
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -

# Node.jsとnpmをインストール
apt install -y nodejs

# バージョン確認
node -v
# v20.x.x と表示されればOK

npm -v
# 10.x.x と表示されればOK

3. ボット用ディレクトリ作成

# ボット用のディレクトリを作成
mkdir -p /opt/discord-bot
cd /opt/discord-bot

# package.json作成
npm init -y

# discord.jsインストール
npm install discord.js

4. サンプルボットを作成

# テキストエディタでボットスクリプトを作成
nano bot.js

以下のコードを貼り付け:

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ]
});

client.once('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('messageCreate', message => {
  if (message.content === '!ping') {
    message.reply('Pong!');
  }
});

// Discord Bot Tokenを環境変数から取得
client.login(process.env.DISCORD_BOT_TOKEN);

Ctrl+Oで保存、Ctrl+Xで終了。

5. 環境変数設定(Bot Token)

# .envファイル作成
nano .env

以下の内容を記述:

DISCORD_BOT_TOKEN=your_bot_token_here

Discord Developer Portalで取得したBot Tokenを your_bot_token_here に置き換えてください。

dotenvパッケージのインストール

npm install dotenv

bot.jsの先頭に追加:

require('dotenv').config();

6. ボット起動テスト

node bot.js

「Logged in as YourBotName#1234!」と表示されれば成功。

Python環境の構築(discord.py用)

discord.py(Python)でボットを作る場合のセットアップです。

1. Pythonとpipのインストール

# Python 3とpipをインストール
apt install -y python3 python3-pip python3-venv

# バージョン確認
python3 --version
# Python 3.10.x 以上であればOK

pip3 --version

2. 仮想環境の作成

# ボット用ディレクトリ作成
mkdir -p /opt/discord-bot
cd /opt/discord-bot

# 仮想環境作成
python3 -m venv venv

# 仮想環境を有効化
source venv/bin/activate

3. discord.pyのインストール

# discord.pyをインストール
pip install discord.py python-dotenv

4. サンプルボット作成

nano bot.py

以下のコードを貼り付け:

import discord
import os
from discord.ext import commands
from dotenv import load_dotenv

# 環境変数読み込み
load_dotenv()
TOKEN = os.getenv('DISCORD_BOT_TOKEN')

# Botインスタンス作成
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name}')

@bot.command()
async def ping(ctx):
    await ctx.send('Pong!')

# Bot起動
bot.run(TOKEN)

5. 環境変数設定

nano .env
DISCORD_BOT_TOKEN=your_bot_token_here

6. ボット起動テスト

python3 bot.py

環境構築の確認ポイント

環境構築チェックリスト - [ ] Node.js/Pythonが正しくインストールされている - [ ] discord.js/discord.pyがインストールされている - [ ] .envファイルにBot Tokenが設定されている - [ ] ボットが正常にDiscordサーバーにログインできる - [ ] テストコマンド(!ping)が正常に動作する

人気ボットの導入方法(MEE6代替、音楽ボット等)

既存のオープンソースボットを活用すれば、プログラミング不要でDiscordコミュニティを充実させられます。

チーム開発環境

MEE6代替:無料のオープンソース管理ボット

MEE6は便利ですが、多くの機能が有料プランに制限されています。以下のオープンソースボットなら、すべて無料で利用可能です。

1. Discord-Bot-Dashboard(多機能管理ボット)

特徴

  • Webダッシュボード付き
  • レベルシステム
  • 自動モデレーション
  • カスタムコマンド
  • 歓迎/退出メッセージ
  • 自動ロール付与

導入手順

cd /opt
git clone https://github.com/SushiTee/discord-bot-dashboard.git
cd discord-bot-dashboard

# 依存パッケージインストール
npm install

# 設定ファイル作成
cp config.example.json config.json
nano config.json

config.jsonに以下を設定:

{
  "token": "YOUR_BOT_TOKEN",
  "prefix": "!",
  "ownerID": "YOUR_DISCORD_USER_ID",
  "port": 3000
}

起動:

npm start

2. Welcomer(歓迎メッセージ専用ボット)

特徴

  • カスタマイズ可能な歓迎画像
  • 新規メンバー自動ロール付与
  • 退出メッセージ
  • サーバー統計

導入手順

cd /opt
git clone https://github.com/Discord-Welcome-Bot/Discord-Welcome-Bot.git
cd Discord-Welcome-Bot

npm install
cp .env.example .env
nano .env

.envに以下を設定:

DISCORD_TOKEN=your_bot_token
PREFIX=!

YouTube、Spotify、SoundCloudの音楽を再生できるボットです。

1. Javaのインストール(Lavalink動作に必要)

apt install -y openjdk-17-jre

# バージョン確認
java -version

2. Lavalinkサーバーのセットアップ

mkdir -p /opt/lavalink
cd /opt/lavalink

# Lavalink.jarのダウンロード(最新版を取得)
wget https://github.com/lavalink-devs/Lavalink/releases/download/4.0.0/Lavalink.jar

# 設定ファイル作成
nano application.yml

application.ymlに以下を記述:

server:
  port: 2333
  address: 0.0.0.0
lavalink:
  server:
    password: "youshallnotpass"
    sources:
      youtube: true
      soundcloud: true
    bufferDurationMs: 400
    frameBufferDurationMs: 5000
    youtubePlaylistLoadLimit: 6
    playerUpdateInterval: 5
    youtubeSearchEnabled: true
    soundcloudSearchEnabled: true

Lavalink起動:

java -jar Lavalink.jar

3. 音楽ボット本体(Erela.js使用)

cd /opt
mkdir music-bot
cd music-bot

npm init -y
npm install discord.js erela.js dotenv

bot.jsを作成:

require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const { Manager } = require('erela.js');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildVoiceStates,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ]
});

client.manager = new Manager({
  nodes: [
    {
      host: 'localhost',
      port: 2333,
      password: 'youshallnotpass',
    }
  ],
  send: (id, payload) => {
    const guild = client.guilds.cache.get(id);
    if (guild) guild.shard.send(payload);
  }
});

client.on('ready', () => {
  console.log(`Music bot logged in as ${client.user.tag}`);
  client.manager.init(client.user.id);
});

client.on('messageCreate', async (message) => {
  if (message.content.startsWith('!play ')) {
    const query = message.content.slice(6);
    const { channel } = message.member.voice;

    if (!channel) return message.reply('ボイスチャンネルに参加してください!');

    const player = client.manager.create({
      guild: message.guild.id,
      voiceChannel: channel.id,
      textChannel: message.channel.id,
    });

    player.connect();

    const res = await client.manager.search(query, message.author);
    if (res.loadType === 'LOAD_FAILED') {
      return message.reply('曲を読み込めませんでした。');
    }

    player.queue.add(res.tracks[0]);
    message.reply(`再生: ${res.tracks[0].title}`);

    if (!player.playing) player.play();
  }
});

client.manager.on('nodeConnect', node => {
  console.log(`Node ${node.options.identifier} connected`);
});

client.login(process.env.DISCORD_BOT_TOKEN);

配信通知ボット(YouTube/Twitch)

配信開始時に自動通知を送るボットです。

YouTube配信通知

cd /opt
mkdir youtube-notifier
cd youtube-notifier

npm init -y
npm install discord.js axios dotenv

notifier.jsを作成:

require('dotenv').config();
const { Client, GatewayIntentBits, EmbedBuilder } = require('discord.js');
const axios = require('axios');

const client = new Client({
  intents: [GatewayIntentBits.Guilds]
});

const YOUTUBE_API_KEY = process.env.YOUTUBE_API_KEY;
const CHANNEL_ID = process.env.YOUTUBE_CHANNEL_ID;
const DISCORD_CHANNEL_ID = process.env.DISCORD_NOTIFICATION_CHANNEL_ID;

async function checkLiveStatus() {
  try {
    const res = await axios.get(
      `https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${CHANNEL_ID}&eventType=live&type=video&key=${YOUTUBE_API_KEY}`
    );

    if (res.data.items.length > 0) {
      const stream = res.data.items[0];
      const embed = new EmbedBuilder()
        .setTitle('🔴 配信開始!')
        .setDescription(stream.snippet.title)
        .setURL(`https://www.youtube.com/watch?v=${stream.id.videoId}`)
        .setThumbnail(stream.snippet.thumbnails.high.url)
        .setColor('#FF0000');

      const channel = client.channels.cache.get(DISCORD_CHANNEL_ID);
      channel.send({ embeds: [embed], content: '@everyone' });
    }
  } catch (error) {
    console.error('Error checking live status:', error);
  }
}

client.on('ready', () => {
  console.log('YouTube Notifier ready!');
  // 5分ごとに配信状況をチェック
  setInterval(checkLiveStatus, 5 * 60 * 1000);
});

client.login(process.env.DISCORD_BOT_TOKEN);

.envに追加:

YOUTUBE_API_KEY=your_youtube_api_key
YOUTUBE_CHANNEL_ID=your_youtube_channel_id
DISCORD_NOTIFICATION_CHANNEL_ID=discord_channel_id

ボット導入のベストプラクティス

オープンソースボット導入時の注意点 - GitHubのスター数やコミット履歴を確認 - セキュリティ脆弱性がないかチェック - 定期的なアップデートを忘れずに - Bot Tokenは絶対に公開しない - 不要な権限(Administrator等)は与えない

自作ボットのデプロイ方法

自分でコーディングしたDiscordボットをConoHa VPSにデプロイする手順を解説します。

ソフトウェア開発

Gitを使ったデプロイ(推奨)

1. ローカル開発環境でボット作成

まず、自分のPC(Windows/Mac)でボットを開発します。

# プロジェクトディレクトリ作成
mkdir my-discord-bot
cd my-discord-bot

# Gitリポジトリ初期化
git init

# .gitignoreファイル作成
echo "node_modules/" >> .gitignore
echo ".env" >> .gitignore
echo "*.log" >> .gitignore

2. GitHubにプライベートリポジトリ作成

  1. GitHubにログイン
  2. 「New repository」をクリック
  3. リポジトリ名を入力(例: my-discord-bot)
  4. Privateを選択(Bot Tokenが漏れないように)
  5. 「Create repository」をクリック

3. ローカルからGitHubにプッシュ

git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/your-username/my-discord-bot.git
git push -u origin main

4. VPSにデプロイ

# VPSにSSH接続
ssh root@[VPS IPアドレス]

# ボット用ディレクトリに移動
cd /opt

# GitHubからクローン(プライベートリポジトリの場合は認証が必要)
git clone https://github.com/your-username/my-discord-bot.git
cd my-discord-bot

# 依存パッケージインストール
npm install  # Node.jsの場合
# or
pip install -r requirements.txt  # Pythonの場合

# 環境変数ファイル作成
nano .env

.envにBot Tokenなどの秘密情報を設定:

DISCORD_BOT_TOKEN=your_bot_token
DATABASE_URL=postgresql://user:password@localhost/botdb

5. ボット起動確認

# Node.jsの場合
node index.js

# Pythonの場合
python3 bot.py

正常に起動すればOK。Ctrl+Cで一旦停止。

アップデートの手順

コードを更新した際のデプロイフローです。

# ローカルで変更をコミット
git add .
git commit -m "Add new feature"
git push origin main

# VPS側で更新を取得
ssh root@[VPS IPアドレス]
cd /opt/my-discord-bot

# ボットを停止(PM2使用時はpm2 stop bot)
pm2 stop bot

# 最新コードを取得
git pull origin main

# 新しい依存パッケージがあればインストール
npm install

# ボット再起動
pm2 restart bot

環境変数の安全な管理

Bot TokenやAPIキーなどの機密情報は、環境変数で管理します。

.envファイルの使用(推奨)

# .envファイル作成
nano .env
DISCORD_BOT_TOKEN=your_bot_token_here
DATABASE_URL=postgresql://localhost/botdb
YOUTUBE_API_KEY=your_youtube_api_key
LOG_LEVEL=info

Node.jsでの読み込み

require('dotenv').config();

const token = process.env.DISCORD_BOT_TOKEN;

Pythonでの読み込み

import os
from dotenv import load_dotenv

load_dotenv()
token = os.getenv('DISCORD_BOT_TOKEN')
セキュリティのポイント - .envファイルは絶対にGitにコミットしない - .gitignoreに必ず`.env`を追加 - 本番環境とテスト環境で異なる.envを使う - Bot Tokenが漏れた場合は即座に再生成

データベースの設定(SQLite/PostgreSQL)

ボットでデータを永続化する場合、データベースが必要です。

SQLite(小規模向け)

# Node.jsの場合
npm install better-sqlite3

# Pythonの場合
pip install aiosqlite

使用例(Node.js)

const Database = require('better-sqlite3');
const db = new Database('bot.db');

db.exec(`
  CREATE TABLE IF NOT EXISTS users (
    user_id TEXT PRIMARY KEY,
    points INTEGER DEFAULT 0,
    level INTEGER DEFAULT 1
  )
`);

PostgreSQL(中〜大規模向け)

# PostgreSQLインストール
apt install -y postgresql postgresql-contrib

# PostgreSQLサービス起動
systemctl start postgresql
systemctl enable postgresql

# データベースとユーザー作成
sudo -u postgres psql

PostgreSQLコンソール内で:

CREATE DATABASE discord_bot;
CREATE USER botuser WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE discord_bot TO botuser;
\q

Node.jsでの接続

npm install pg
const { Pool } = require('pg');

const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});

pool.query('SELECT NOW()', (err, res) => {
  console.log(err, res);
  pool.end();
});

デプロイチェックリスト

デプロイ前の確認事項 - [ ] .gitignoreに.envとnode_modulesを追加済み - [ ] Bot Tokenなどの秘密情報はすべて環境変数化 - [ ] GitHubリポジトリがPrivateに設定されている - [ ] VPS上で依存パッケージが正しくインストールされている - [ ] データベース接続が正常に動作する - [ ] ログファイルの出力先を設定済み - [ ] エラーハンドリングが適切に実装されている

監視・自動再起動設定

Discordボットを24時間安定稼働させるには、クラッシュ時の自動再起動や、VPS再起動時の自動起動設定が不可欠です。

システム監視画面

PM2によるプロセス管理(Node.js推奨)

PM2は、Node.jsアプリケーションのプロセス管理ツールです。クラッシュ時の自動再起動、ログ管理、クラスタリングなどの機能を提供します。

1. PM2のインストール

# グローバルインストール
npm install -g pm2

# バージョン確認
pm2 -v

2. ボットをPM2で起動

cd /opt/my-discord-bot

# ボット起動
pm2 start index.js --name discord-bot

# 起動確認
pm2 list

3. PM2の基本コマンド

# ボット停止
pm2 stop discord-bot

# ボット再起動
pm2 restart discord-bot

# ボット削除(プロセスリストから削除)
pm2 delete discord-bot

# ログ表示
pm2 logs discord-bot

# リアルタイム監視
pm2 monit

4. VPS起動時にボットを自動起動

# PM2のスタートアップスクリプト生成
pm2 startup

# 表示されたコマンドを実行(例)
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root

# 現在のPM2プロセスを保存
pm2 save

これで、VPS再起動後も自動的にボットが起動します。

5. PM2設定ファイル(ecosystem.config.js)

より詳細な設定を行う場合、設定ファイルを使用します。

cd /opt/my-discord-bot
nano ecosystem.config.js
module.exports = {
  apps: [
    {
      name: 'discord-bot',
      script: 'index.js',
      instances: 1,
      autorestart: true,
      watch: false,
      max_memory_restart: '500M',
      env: {
        NODE_ENV: 'production'
      },
      error_file: '/var/log/discord-bot/error.log',
      out_file: '/var/log/discord-bot/out.log',
      log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
      merge_logs: true,
    }
  ]
};

ログディレクトリ作成:

mkdir -p /var/log/discord-bot

設定ファイルを使って起動:

pm2 start ecosystem.config.js
pm2 save

systemdによる管理(Python推奨)

Pythonボットの場合、systemdを使った管理が一般的です。

1. systemdサービスファイル作成

nano /etc/systemd/system/discord-bot.service

以下の内容を記述:

[Unit]
Description=Discord Bot Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/my-discord-bot
ExecStart=/opt/my-discord-bot/venv/bin/python3 bot.py
Restart=always
RestartSec=10
StandardOutput=append:/var/log/discord-bot/output.log
StandardError=append:/var/log/discord-bot/error.log

[Install]
WantedBy=multi-user.target

2. サービスの有効化と起動

# ログディレクトリ作成
mkdir -p /var/log/discord-bot

# systemdデーモンリロード
systemctl daemon-reload

# サービス有効化(VPS起動時に自動起動)
systemctl enable discord-bot

# サービス起動
systemctl start discord-bot

# ステータス確認
systemctl status discord-bot

3. systemdの基本コマンド

# ボット停止
systemctl stop discord-bot

# ボット再起動
systemctl restart discord-bot

# ログ表示
journalctl -u discord-bot -f

# ログの最新100行表示
journalctl -u discord-bot -n 100

ログ管理とローテーション

ログファイルが肥大化するのを防ぐため、ログローテーションを設定します。

logrotateの設定

nano /etc/logrotate.d/discord-bot
/var/log/discord-bot/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0644 root root
}

この設定により:

  • 毎日ログがローテーション
  • 過去7日分を保持
  • 古いログは圧縮して保存
  • 空のログファイルは削除

監視とアラート設定

ボットの稼働状況を監視し、問題発生時に通知を受け取る仕組みを作ります。

1. ヘルスチェックスクリプト

nano /opt/healthcheck.sh
#!/bin/bash

# ボットのプロセスをチェック
if ! pm2 list | grep -q "discord-bot.*online"; then
  echo "Discord bot is down! Restarting..."
  pm2 restart discord-bot

  # Discord Webhookに通知(オプション)
  curl -X POST "YOUR_DISCORD_WEBHOOK_URL" \
    -H "Content-Type: application/json" \
    -d '{"content":"🚨 Discord bot was down and has been restarted automatically."}'
fi

実行権限を付与:

chmod +x /opt/healthcheck.sh

2. cronで定期実行

crontab -e

以下を追加(5分ごとにチェック):

*/5 * * * * /opt/healthcheck.sh >> /var/log/healthcheck.log 2>&1

3. Discord Webhookで通知

ボットのステータスをDiscordに通知する仕組みです。

Node.jsボット内で実装例

const axios = require('axios');

const WEBHOOK_URL = process.env.DISCORD_WEBHOOK_URL;

async function sendAlert(message) {
  try {
    await axios.post(WEBHOOK_URL, {
      content: `🔔 <strong>Alert</strong>: ${message}`,
      username: 'Bot Monitor'
    });
  } catch (error) {
    console.error('Failed to send webhook:', error);
  }
}

// ボット起動時
client.on('ready', () => {
  sendAlert('Bot has started successfully!');
});

// エラー発生時
client.on('error', (error) => {
  sendAlert(`Error occurred: ${error.message}`);
});

パフォーマンス監視

ボットのメモリ使用量やCPU使用率を監視します。

PM2 Plusの利用(無料プラン)

# PM2 Plusに登録
pm2 register

# リアルタイム監視ダッシュボードURL取得
pm2 link [secret_key] [public_key]

Webダッシュボードで以下を確認可能:

  • CPU使用率
  • メモリ使用量
  • イベントログ
  • エラーレート

htopでリソース監視

# htopインストール
apt install -y htop

# 起動
htop

Node.jsやPythonプロセスのリソース使用状況をリアルタイムで確認できます。

自動再起動設定のベストプラクティス

  • PM2/systemdで自動再起動を有効化
  • VPS起動時の自動起動を設定
  • ログローテーションで肥大化を防止
  • ヘルスチェックスクリプトで異常を早期検知
  • Discord Webhookで通知を受け取る
  • 定期的なメモリ使用量の監視
  • 再起動ループに陥らないようエラーハンドリングを徹底
  • ログが大量に出力される場合はlogrotateを設定
  • PM2のmax_memory_restartで無限メモリ消費を防止
  • cronジョブの実行時間が重ならないよう調整

まとめ

Discordボットを24時間安定稼働させるには、自宅PCではなくVPSの活用が不可欠です。本記事で紹介したConoHa VPSを使えば、月額数百円から信頼性の高いボット運用環境を構築できます。

まとめ

Discord Bot 24時間稼働のポイント - 自宅PC運用は電気代・停電リスク・セキュリティ面で課題が多い - ConoHa VPSなら月額296円〜で高速・安定稼働を実現 - コミュニティ規模に応じて1GB〜4GBプランを選択 - Node.js/Python環境は30分程度で構築可能 - 既存のオープンソースボットを活用すればコーディング不要 - PM2/systemdで自動再起動・自動起動を設定 - ログ管理とヘルスチェックで長期安定運用

配信者としてコミュニティを大切にしたいなら、Discordボットの安定稼働は必須です。今回紹介した手順を参考に、ぜひVPSでのボット運用にチャレンジしてみてください。

ConoHa VPS公式サイトはこちら【配信者必見】Discordボットを24時間稼働させる方法|VPS活用ガイド - 画像1


画像クレジット

本記事で使用している画像の一部は Unsplash より提供されています。

  • Discord コミュニティサーバー: Photo by SCREEN POST on Unsplash
  • 配信者のデスクセットアップ: Photo by Ella Don on Unsplash
  • サーバールーム: Photo by Toa Heftiba on Unsplash
  • クラウドサーバー環境: Photo by imgix on Unsplash
  • プログラミング環境: Photo by Luca Bravo on Unsplash
  • チーム開発環境: Photo by Annie Spratt on Unsplash
  • ソフトウェア開発: Photo by Christopher Gower on Unsplash
  • システム監視画面: Photo by Stephen Dawson on Unsplash

よくある質問

QDiscordボットを稼働させるのに必要なVPSスペックは?
A
小規模コミュニティ(〜100人)なら1GBプラン、中規模(100〜500人)なら2GBプラン、大規模(500人以上)または複数ボット運用なら4GBプラン以上がおすすめです。まずは小さいプランから始めて、必要に応じてアップグレードするのが賢い選択です。
Q自宅PCでDiscordボットを動かすのとVPSの違いは?
A
自宅PCの場合、電気代が月1,000〜2,000円かかる上に停電や再起動でボットが停止します。VPSなら月額数百円から利用でき、24時間365日安定稼働します。また、自宅のIPアドレスを晒さないセキュリティ面のメリットもあります。
Qプログラミング初心者でもDiscordボットを運用できますか?
A
はい、可能です。既存のオープンソースボット(MEE6代替のボットなど)を利用すれば、プログラミング知識なしでも導入できます。Node.jsやPythonの基礎を学べば、カスタムボットの作成も十分可能です。
QConoHa VPSのまとめトクとは何ですか?
A
3ヶ月以上の長期利用で割引が適用される料金プランです。時間課金より大幅に安くなり、さらに3ヶ月以上でアルファSSL(年6,600円相当)が無料になります。継続してボットを運用する予定なら、まとめトクがお得です。
Qボットが落ちた時に自動で再起動させる方法は?
A
PM2やsystemdといったプロセス管理ツールを使用します。これらを設定すると、ボットがクラッシュした場合や、VPS再起動時に自動的にボットが起動します。本記事では具体的な設定方法を解説しています。
Q複数のDiscordボットを1つのVPSで運用できますか?
A
はい、可能です。メモリに余裕があれば、1つのVPSで複数のボットを同時に稼働できます。ただし、各ボットのメモリ使用量を考慮して適切なプランを選びましょう。4GB以上のプランなら複数ボットの運用も快適です。
QConoHa VPSでDiscordボットを運用する際のセキュリティ対策は?
A
まず、ファイアウォール設定でSSHポート(22番)のアクセス制限を行いましょう。また、Discord Bot TokenやAPIキーは環境変数(.envファイル)で管理し、GitHubなどにアップロードしないよう注意が必要です。

この記事で紹介したサービス

すぐに使える高速レンタルサーバー ConoHa VPS

  • 最新CPUとSSDストレージで高速処理
  • Webからお申込み後すぐに使える
  • 豊富なOS・アプリケーションテンプレート(無料)

※ 詳細な情報は公式サイトでご確認ください

この記事を書いた人

TK

モリミー

Webエンジニア / テクニカルライター / マーケター

都内で働くWebエンジニア。テクニカルライターをしています。 映画やゲームが好きです。

あわせて読みたい

こちらの記事もおすすめ