【2025年10月最新】マイクラサーバー自動再起動システム完全ガイド

目次

冒頭の直接回答

マイクラサーバーの自動再起動システムは、cronやsystemdタイマー、スクリプトを使用して定期的にサーバーを再起動し、メモリリークやパフォーマンス低下を防ぐ仕組みです。VPSやレンタルサーバーで運用する場合、1日1回程度の自動再起動を設定することで、サーバーの安定性を大幅に向上させることができます。

要点

  • 自動再起動により、メモリリークやラグを解消し、常に快適なプレイ環境を維持できる
  • Linuxではcronやsystemd、WindowsではタスクスケジューラとPowerShellスクリプトで実装可能
  • プレイヤーへの事前通知機能を組み込むことで、ゲームデータの損失を防止できる
  • 定期再起動と異常検知による自動復旧を組み合わせることで、24時間安定稼働を実現
  • VPSやゲーム特化型サーバーを利用すれば、初心者でも簡単に自動再起動環境を構築できる

マイクラサーバー自動再起動が必要な理由

サーバーの長時間稼働で発生する問題

マインクラフトサーバーを長時間稼働させると、メモリリークによる使用メモリの増加、チャンク読み込みの遅延、エンティティ処理の負荷蓄積などが発生します。特に多人数プレイやMODを導入している環境では、数日間連続稼働するだけでTPSが20から10以下に低下し、ブロック設置の遅延やモブのワープ現象が頻発します。

定期的な再起動を実施することで、これらの問題をリセットし、常に最適なパフォーマンスを維持できます。一般的には1日1回、深夜帯やプレイヤーが少ない時間帯に自動再起動を設定するのが推奨されています。

自動化によるメリット

手動での再起動管理は、サーバー管理者の負担が大きく、タイミングを逃すと障害につながります。自動再起動システムを導入すれば、管理者が不在でも定期的にサーバーがリフレッシュされ、以下のメリットが得られます。

  • 管理者の作業負担を大幅に削減
  • プレイヤーへの事前通知で安心感を提供
  • バックアップと組み合わせてデータ保護を強化
  • 異常終了時の自動復旧機能で障害時間を最小化
  • ログ記録により問題発生パターンの分析が可能

Linux環境での自動再起動システム構築方法

cronを使用した定期再起動の設定

Linux環境で最も一般的な方法は、cronジョブを使用した定期実行です。以下の手順で設定できます。

1. 再起動スクリプトの作成

#!/bin/bash
# マイクラサーバー自動再起動スクリプト

# サーバーディレクトリ
SERVER_DIR="/home/minecraft/server"
cd $SERVER_DIR

# プレイヤーへの事前通知(5分前)
screen -S minecraft -X stuff "say サーバーは5分後に再起動します$(printf \\r)"
sleep 240

# 1分前の最終通知
screen -S minecraft -X stuff "say サーバーは1分後に再起動します。安全な場所に移動してください$(printf \\r)"
sleep 60

# サーバー停止
screen -S minecraft -X stuff "stop$(printf \\r)"
sleep 10

# バックアップ作成(オプション)
tar -czf backup/world_$(date +%Y%m%d_%H%M%S).tar.gz world world_nether world_the_end

# サーバー起動
screen -dmS minecraft java -Xms4G -Xmx8G -jar server.jar nogui

echo "$(date): サーバーを再起動しました" >> restart.log

このスクリプトを /home/minecraft/restart.sh として保存し、実行権限を付与します。

chmod +x /home/minecraft/restart.sh

2. cronジョブの登録

crontab -e

エディタが開いたら、以下の行を追加します(毎日午前4時に実行)。

0 4 * * * /home/minecraft/restart.sh

設定を保存すれば、自動再起動システムの構築は完了です。

systemdタイマーを使用した高度な設定

より柔軟な制御が必要な場合は、systemdタイマーを使用します。この方法では、サービスの依存関係管理や詳細なログ記録が可能になります。

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

/etc/systemd/system/minecraft-restart.service を作成:

[Unit]
Description=Minecraft Server Restart
After=network.target

[Service]
Type=oneshot
User=minecraft
ExecStart=/home/minecraft/restart.sh
StandardOutput=journal
StandardError=journal

2. タイマーファイルの作成

/etc/systemd/system/minecraft-restart.timer を作成:

[Unit]
Description=Minecraft Server Restart Timer

[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true

[Install]
WantedBy=timers.target

3. タイマーの有効化

sudo systemctl daemon-reload
sudo systemctl enable minecraft-restart.timer
sudo systemctl start minecraft-restart.timer

タイマーの状態確認:

systemctl status minecraft-restart.timer

Windows環境での自動再起動システム構築方法

タスクスケジューラとPowerShellスクリプト

Windows ServerやWindows 10/11でマイクラサーバーを運用している場合は、タスクスケジューラとPowerShellスクリプトを組み合わせます。

1. PowerShell再起動スクリプトの作成

C:\minecraft\restart.ps1 として以下を保存:

# マイクラサーバー自動再起動スクリプト

$serverPath = "C:\minecraft\server"
$jarFile = "server.jar"
$javaParams = "-Xms4G -Xmx8G"

# サーバープロセスの検索
$serverProcess = Get-Process java -ErrorAction SilentlyContinue | Where-Object {$_.MainWindowTitle -like "*Minecraft*"}

if ($serverProcess) {
    # プレイヤーへの通知(Rconを使用する場合はmcrconをインストール)
    # ここでは簡易的にプロセス終了のみ実施

    # サーバー停止
    Stop-Process -Id $serverProcess.Id -Force
    Start-Sleep -Seconds 10
}

# バックアップ作成
$backupPath = "C:\minecraft\backup\world_$(Get-Date -Format 'yyyyMMdd_HHmmss').zip"
Compress-Archive -Path "$serverPath\world*" -DestinationPath $backupPath

# サーバー起動
Set-Location $serverPath
Start-Process java -ArgumentList "$javaParams -jar $jarFile nogui" -WindowStyle Minimized

# ログ記録
Add-Content -Path "C:\minecraft\restart.log" -Value "$(Get-Date): サーバーを再起動しました"

2. タスクスケジューラの設定

  1. タスクスケジューラを開く(taskschd.msc
  2. 「タスクの作成」を選択
  3. 全般タブ:名前を「Minecraft Auto Restart」に設定
  4. トリガータブ:「新規」をクリックし、毎日午前4時に設定
  5. 操作タブ:「新規」をクリック
  • プログラム:powershell.exe
  • 引数:-ExecutionPolicy Bypass -File C:\minecraft\restart.ps1
  1. 「OK」をクリックして保存

プレイヤー通知機能の実装

Rconを使用した事前通知システム

プレイヤーに再起動を事前通知するには、Rcon(Remote Console)を使用します。

1. server.propertiesでRconを有効化

enable-rcon=true
rcon.password=your_secure_password
rcon.port=25575

2. mcrconのインストール(Linux)

sudo apt install mcrcon

3. 通知スクリプトの組み込み

#!/bin/bash
# 5分前通知
mcrcon -H localhost -P 25575 -p your_secure_password "say §c§l【重要】サーバーは5分後に再起動します"
sleep 240

# 1分前通知
mcrcon -H localhost -P 25575 -p your_secure_password "say §e§l【警告】サーバーは1分後に再起動します。安全な場所に移動してください"
sleep 60

# サーバー停止
mcrcon -H localhost -P 25575 -p your_secure_password "stop"

カラーコード(§c、§e)を使用することで、チャット画面で目立つ通知を表示できます。

Discordへの通知連携

サーバー再起動をDiscordに通知することで、プレイヤーがゲーム外でも状況を把握できます。

#!/bin/bash
DISCORD_WEBHOOK="https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"

# Discord通知関数
send_discord_notification() {
    curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"$1\"}" $DISCORD_WEBHOOK
}

# 再起動前通知
send_discord_notification "🔄 マイクラサーバーは5分後に定期再起動します"

# ... 再起動処理 ...

# 再起動完了通知
send_discord_notification "✅ マイクラサーバーの再起動が完了しました。接続可能です"

異常検知と自動復旧機能の追加

プロセス監視と自動再起動

サーバーが異常終了した場合に自動的に復旧させる監視スクリプトを実装します。

#!/bin/bash
# マイクラサーバー監視・自動復旧スクリプト

SERVER_DIR="/home/minecraft/server"
SCREEN_NAME="minecraft"

while true; do
    # サーバープロセスの確認
    if ! screen -list | grep -q "$SCREEN_NAME"; then
        echo "$(date): サーバーが停止しています。再起動を実行します" >> /home/minecraft/recovery.log

        cd $SERVER_DIR
        screen -dmS minecraft java -Xms4G -Xmx8G -jar server.jar nogui

        # Discord通知(オプション)
        curl -H "Content-Type: application/json" -X POST \
            -d '{"content":"⚠️ サーバーの異常停止を検知し、自動再起動を実行しました"}' \
            $DISCORD_WEBHOOK
    fi

    sleep 60  # 60秒ごとに監視
done

このスクリプトをsystemdサービスとして登録することで、システム起動時に自動的に監視が開始されます。

メモリ使用量による自動再起動

メモリ使用量が閾値を超えた場合に自動再起動する仕組みも有効です。

#!/bin/bash
# メモリベース自動再起動スクリプト

# メモリ使用量閾値(90%)
THRESHOLD=90

# 現在のメモリ使用率を取得
MEMORY_USAGE=$(free | grep Mem | awk '{print int($3/$2 * 100)}')

if [ $MEMORY_USAGE -gt $THRESHOLD ]; then
    echo "$(date): メモリ使用率 ${MEMORY_USAGE}% が閾値を超えました。再起動を実行します" >> /home/minecraft/memory_restart.log

    # 再起動処理
    /home/minecraft/restart.sh
fi

このスクリプトをcronで10分ごとに実行すれば、メモリ不足による障害を未然に防げます。


バックアップと自動再起動の連携

再起動前の自動バックアップ

再起動時にワールドデータを自動バックアップすることで、データ損失のリスクを最小化します。

#!/bin/bash
# バックアップ統合再起動スクリプト

SERVER_DIR="/home/minecraft/server"
BACKUP_DIR="/home/minecraft/backup"
DAYS_TO_KEEP=7

# 古いバックアップの削除(7日以上前)
find $BACKUP_DIR -name "world_*.tar.gz" -mtime +$DAYS_TO_KEEP -delete

# サーバー停止前にsaveコマンドを実行
screen -S minecraft -X stuff "save-all$(printf \\r)"
sleep 5

# ワールドデータのバックアップ
cd $SERVER_DIR
tar -czf $BACKUP_DIR/world_$(date +%Y%m%d_%H%M%S).tar.gz world world_nether world_the_end

# 通常の再起動処理
/home/minecraft/restart.sh

増分バックアップによる効率化

rsyncを使用した増分バックアップで、ディスク容量を節約できます。

#!/bin/bash
# 増分バックアップスクリプト

BACKUP_DIR="/home/minecraft/backup/incremental"
DATE=$(date +%Y%m%d_%H%M%S)

# 最新のバックアップへのシンボリックリンク
LATEST="$BACKUP_DIR/latest"

# 増分バックアップの実行
rsync -a --delete --link-dest="$LATEST" \
    /home/minecraft/server/world* \
    "$BACKUP_DIR/$DATE/"

# シンボリックリンクの更新
rm -f "$LATEST"
ln -s "$DATE" "$LATEST"

マイクラサーバー 自動再起動 スクリプト

効率的な自動再起動スクリプトを作成するためのベストプラクティスを紹介します。

エラーハンドリングを含む完全版スクリプト

本番環境で使用できる、エラーハンドリングとログ記録を含む完全版スクリプトです。

#!/bin/bash
# 本番環境用マイクラ自動再起起動スクリプト

set -e  # エラー時に即座に終了

# 設定
SERVER_DIR="/home/minecraft/server"
SCREEN_NAME="minecraft"
JAVA_OPTS="-Xms4G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled"
LOG_FILE="/home/minecraft/restart.log"
ERROR_LOG="/home/minecraft/restart_error.log"

# ログ関数
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}

error_log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - ERROR: $1" | tee -a "$ERROR_LOG"
}

# 事前チェック
if [ ! -d "$SERVER_DIR" ]; then
    error_log "サーバーディレクトリが存在しません: $SERVER_DIR"
    exit 1
fi

cd "$SERVER_DIR" || exit 1

# プレイヤー通知
log "再起動プロセスを開始します"
screen -S "$SCREEN_NAME" -X stuff "say §c§l【定期再起動】サーバーは5分後に再起動します$(printf \\r)" 2>/dev/null || true
sleep 240

screen -S "$SCREEN_NAME" -X stuff "say §e§l【定期再起動】サーバーは1分後に再起動します$(printf \\r)" 2>/dev/null || true
sleep 60

# ワールド保存
log "ワールドデータを保存中..."
screen -S "$SCREEN_NAME" -X stuff "save-all$(printf \\r)" 2>/dev/null || true
sleep 5

# サーバー停止
log "サーバーを停止中..."
screen -S "$SCREEN_NAME" -X stuff "stop$(printf \\r)" 2>/dev/null || true

# サーバープロセスの完全停止を待機
TIMEOUT=30
while [ $TIMEOUT -gt 0 ]; do
    if ! screen -list | grep -q "$SCREEN_NAME"; then
        break
    fi
    sleep 1
    TIMEOUT=$((TIMEOUT - 1))
done

if screen -list | grep -q "$SCREEN_NAME"; then
    error_log "サーバーが正常に停止しませんでした。強制終了します"
    screen -S "$SCREEN_NAME" -X quit
    sleep 2
fi

# バックアップ作成
log "バックアップを作成中..."
BACKUP_FILE="backup/world_$(date +%Y%m%d_%H%M%S).tar.gz"
mkdir -p backup
tar -czf "$BACKUP_FILE" world world_nether world_the_end 2>/dev/null || error_log "バックアップ作成に失敗しました"

# サーバー起動
log "サーバーを起動中..."
screen -dmS "$SCREEN_NAME" java $JAVA_OPTS -jar server.jar nogui

# 起動確認
sleep 10
if screen -list | grep -q "$SCREEN_NAME"; then
    log "サーバーの再起動が完了しました"
else
    error_log "サーバーの起動に失敗しました"
    exit 1
fi

マイクラサーバー 自動再起動 Windows

Windows環境に特化した自動再起動システムの構築方法を詳しく解説します。

Windows Serverでの運用ノウハウ

Windows Server環境でマイクラサーバーを運用する場合、以下の設定が推奨されます。

1. Windows Firewall設定

PowerShellで必要なポートを開放:

New-NetFirewallRule -DisplayName "Minecraft Server" -Direction Inbound -LocalPort 25565 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "Minecraft Rcon" -Direction Inbound -LocalPort 25575 -Protocol TCP -Action Allow

2. サービスとしての登録

NSSMを使用してマイクラサーバーをWindowsサービス化:

# NSSMのダウンロードとインストール
Invoke-WebRequest -Uri "https://nssm.cc/release/nssm-2.24.zip" -OutFile "nssm.zip"
Expand-Archive nssm.zip -DestinationPath C:\tools\
$env:Path += ";C:\tools\nssm-2.24\win64"

# サービスの作成
nssm install MinecraftServer "C:\Program Files\Java\jdk-17\bin\java.exe" "-Xms4G -Xmx8G -jar C:\minecraft\server\server.jar nogui"
nssm set MinecraftServer AppDirectory C:\minecraft\server
nssm set MinecraftServer Start SERVICE_AUTO_START

3. 高度なタスクスケジューラ設定

XMLファイルでタスクをインポート:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2">
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2025-01-01T04:00:00</StartBoundary>
      <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Actions>
    <Exec>
      <Command>powershell.exe</Command>
      <Arguments>-ExecutionPolicy Bypass -File C:\minecraft\restart.ps1</Arguments>
    </Exec>
  </Actions>
</Task>

マイクラサーバー 自動再起動 ConoHa

ConoHa VPSでマイクラサーバーを運用する際の自動再起動設定方法です。

ConoHa VPS特有の設定

ConoHa VPSのテンプレート機能を活用すれば、初期設定済みのマイクラサーバーを即座に構築できます。

1. アプリケーションテンプレートの利用

ConoHa VPSの管理画面から「Minecraft」テンプレートを選択すると、Java版サーバーが自動インストールされます。rootパスワードとSSH接続情報は申し込み完了メールに記載されています。

2. 自動再起動スクリプトの配置

SSH接続後、以下のコマンドで自動再起動を設定:

# マイクラユーザーに切り替え
sudo su - minecraft

# 再起動スクリプトの作成
cat > /home/minecraft/auto_restart.sh << 'EOF'
#!/bin/bash
cd /opt/minecraft_server
screen -S minecraft -X stuff "say サーバーは5分後に再起動します$(printf \\r)"
sleep 300
screen -S minecraft -X stuff "stop$(printf \\r)"
sleep 10
screen -dmS minecraft java -Xmx3G -Xms3G -jar server.jar nogui
EOF

chmod +x /home/minecraft/auto_restart.sh

# cronジョブの設定
crontab -e
# 以下を追加: 毎日午前4時に実行
0 4 * * * /home/minecraft/auto_restart.sh

ConoHa VPSはデフォルトで2GBプランでも快適に動作しますが、10人以上の同時接続を想定する場合は4GB以上のプランを推奨します。


マイクラサーバー 自動再起動 Ubuntu

Ubuntu環境でのマイクラサーバー自動再起動の最適な構築方法を解説します。

Ubuntu 22.04 LTS推奨設定

Ubuntu 22.04 LTSは2027年4月までサポートされており、長期運用に最適です。

1. 必要パッケージのインストール

sudo apt update
sudo apt install -y openjdk-17-jre-headless screen curl wget

2. 専用ユーザーの作成

sudo useradd -m -s /bin/bash minecraft
sudo su - minecraft

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

/etc/systemd/system/minecraft.service を作成:

[Unit]
Description=Minecraft Server
After=network.target

[Service]
Type=forking
User=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/usr/bin/screen -dmS minecraft /usr/bin/java -Xms4G -Xmx8G -jar server.jar nogui
ExecStop=/usr/bin/screen -S minecraft -X stuff "stop\n"
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

4. 自動再起動タイマーの設定

sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
sudo systemctl start minecraft.service

# 自動再起動タイマーの作成(前述のsystemdタイマーを使用)
sudo systemctl enable minecraft-restart.timer
sudo systemctl start minecraft-restart.timer

マイクラサーバー 自動再起動 コマンド

サーバー管理に役立つコマンド集を紹介します。

必須コマンド一覧

サーバー状態確認

# プロセス確認
ps aux | grep java

# メモリ使用量確認
free -h

# ディスク使用量確認
df -h

# screen セッション確認
screen -ls

# ログのリアルタイム表示
tail -f /home/minecraft/server/logs/latest.log

手動再起動コマンド

# screenセッションへのアタッチ
screen -r minecraft

# サーバー停止(screenセッション内で実行)
stop

# screenセッションのデタッチ
Ctrl+A、その後D

# サーバー起動
screen -dmS minecraft java -Xms4G -Xmx8G -jar server.jar nogui

トラブルシューティングコマンド

# 強制終了が必要な場合
pkill -9 java

# ポート使用状況確認
netstat -tulpn | grep 25565

# 再起動ログの確認
tail -n 50 /home/minecraft/restart.log

# エラーログの確認
tail -n 50 /home/minecraft/restart_error.log

比較表:自動再起動方法別の特徴

方法難易度柔軟性通知機能おすすめ環境
cron + Shell★☆☆★★☆別途実装Linux VPS
systemd timer★★☆★★★別途実装Ubuntu/CentOS
Windowsタスク★☆☆★☆☆別途実装Windows Server
管理パネル機能☆☆☆★☆☆標準搭載ConoHa/XServer
監視スクリプト★★★★★★統合可能24時間運用

サーバー診断とプラン選択

目次