PR: この記事にはアフィリエイトリンクが含まれています。購入により当サイトに手数料が支払われることがあります。
【配信者必見】Discordボットを24時間稼働させる方法|VPS活用ガイド
配信者としてコミュニティを運営していると、「Discordボットが自宅PCを再起動したら止まった」「寝ている間もボットを動かし続けたい」という悩みはありませんか?
自宅PCでDiscordボットを動かすと、電気代がかさみ、停電やPCの再起動で予期せず停止するリスクがあります。特に配信者にとって、コミュニティメンバーとの接点を保つDiscordボットの停止は、信頼性を損なう大きな問題です。
本記事では、ConoHa VPSを使ってDiscordボットを24時間365日安定稼働させる方法を、初心者にもわかりやすく解説します。
配信者にとってのDiscordコミュニティの重要性
近年、YouTubeやTwitchで活動する配信者にとって、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円相当)が無料になるため、セキュアな運用が可能です。
現在、ConoHa VPSでは「プレミアムウィンターキャンペーン」を実施中(〜2026年12月19日16:00まで)。まとめトクが特別価格で利用できるため、このタイミングでの契約がお得です。
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ツール)
これらを活用すれば、環境構築の時間を大幅に短縮できます。
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%
中規模コミュニティ(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 |
プラン選びのチェックポイント
まず確認すべきこと
- Discordサーバーの現在のメンバー数
- 1日のアクティブユーザー数
- 導入予定のボットの種類と数
- データベースの使用有無
- 将来的な拡張計画
迷ったら1つ上のプランを選ぶ
- メモリ不足はボットクラッシュの原因に
- 余裕を持った運用が安定性につながる
- ConoHa VPSはプラン変更が簡単
Node.js/Python環境構築手順
Discordボットを動かすには、Node.jsまたはPythonの実行環境が必要です。ここでは、ConoHa VPSでの環境構築手順を解説します。
ConoHa VPSの初期セットアップ
1. ConoHa VPSアカウント作成
- ConoHa VPS公式サイトにアクセス
- 「今すぐお申し込み」をクリック
- メールアドレスとパスワードを入力してアカウント作成
- SMS認証または電話認証で本人確認
2. VPSサーバーの追加
- コントロールパネルにログイン
- 「サーバー追加」をクリック
- 以下の設定を選択:
サービス: VPS
プラン: 1GB以上(推奨:2GB)
イメージタイプ: Ubuntu 22.04 or 24.04
rootパスワード: 強固なパスワードを設定
ネームタグ: discord-bot-server(任意)
- 「追加」をクリック
- 約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
環境構築の確認ポイント
人気ボットの導入方法(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=!
音楽ボット:Lavalink + Erela.js
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
ボット導入のベストプラクティス
自作ボットのデプロイ方法
自分でコーディングした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にプライベートリポジトリ作成
- GitHubにログイン
- 「New repository」をクリック
- リポジトリ名を入力(例: my-discord-bot)
- Privateを選択(Bot Tokenが漏れないように)
- 「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')
データベースの設定(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();
});
デプロイチェックリスト
監視・自動再起動設定
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でのボット運用にチャレンジしてみてください。
画像クレジット
本記事で使用している画像の一部は 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
よくある質問
この記事で紹介したサービス
すぐに使える高速レンタルサーバー ConoHa VPS
- ✓最新CPUとSSDストレージで高速処理
- ✓Webからお申込み後すぐに使える
- ✓豊富なOS・アプリケーションテンプレート(無料)
※ 詳細な情報は公式サイトでご確認ください
関連トピック完全ガイド
詳細解説記事
このトピックに関する5件の記事で、 包括的な情報を提供しています。
