引用元: Matsubo Tech Blog
はじめに
マイクラサーバーを運営していると、「サーバーが落ちてしまった時に自動で再起動してほしい」と思ったことはありませんか?本記事では、systemdサービスとscreen監視を使った自動再起動システムの構築方法を詳しく解説します。
2025年現在、マイクラサーバーの安定運用には自動化が必須です。手動でサーバーを再起動するのは非効率的で、特に深夜や外出中にサーバーが停止してしまうと対応できません。
systemdによる自動起動の基本設定
引用元: XServer GAMEs
systemdサービスファイルの作成
まず、/etc/systemd/system/minecraft.service
にサービスファイルを作成します:
[Unit]
Description=Minecraft Server
After=network.target
[Service]
Type=forking
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/screen -dmS minecraft java -Xmx4G -Xms1G -jar server.jar nogui
ExecReload=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "reload"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "save-all"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "stop"\\015'
ExecStop=/bin/sleep 5
RemainAfterExit=yes
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
サービスの有効化と起動
Copy# サービスファイルを読み込み
sudo systemctl daemon-reload
# サービスを有効化(自動起動設定)
sudo systemctl enable minecraft
# サービスを開始
sudo systemctl start minecraft
# ステータス確認
sudo systemctl status minecraft
screen監視による高度な監視システム
Watchdog機能の実装
より高度な監視を行う場合は、独自のWatchdogスクリプトを作成できます:
Copy#!/bin/bash
# /opt/minecraft/watchdog.sh
SCREEN_NAME="minecraft"
SERVER_DIR="/opt/minecraft"
JAR_FILE="server.jar"
while true; do
if ! screen -list | grep -q "$SCREEN_NAME"; then
echo "$(date): Minecraft server not running, starting..."
cd $SERVER_DIR
screen -dmS $SCREEN_NAME java -Xmx4G -Xms1G -jar $JAR_FILE nogui
fi
sleep 30
done
cronによる定期チェック
cronを使用してサーバーの状態を定期的にチェックすることも可能です:
Copy# crontabに追加
*/5 * * * * /opt/minecraft/check_server.sh
チェックスクリプトの例
Copy#!/bin/bash
# /opt/minecraft/check_server.sh
if ! pgrep -f "minecraft.*server.jar" > /dev/null; then
systemctl start minecraft
echo "$(date): Minecraft server restarted" >> /var/log/minecraft_restart.log
fi
メモリ使用量監視と最適化
引用元: ConoHa for GAME
メモリリーク対策
長時間運用時のメモリリークを防ぐため、定期的な再起動も設定できます:
Copy# 毎日午前4時に再起動
0 4 * * * systemctl restart minecraft
ログ監視とアラート設定
rsyslogによるログ管理
Copy# /etc/rsyslog.d/minecraft.conf
:programname, isequal, "minecraft" /var/log/minecraft.log
& stop
Discord通知の設定
サーバーの状態変化をDiscordに通知するスクリプト:
Copy#!/bin/bash
WEBHOOK_URL="YOUR_DISCORD_WEBHOOK_URL"
MESSAGE="Minecraft server status changed: $1"
curl -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"$MESSAGE\"}" \
$WEBHOOK_URL
トラブルシューティング
よくある問題と解決方法
問題 | 原因 | 解決方法 |
---|---|---|
サービスが起動しない | 権限問題 | chown minecraft:minecraft /opt/minecraft |
自動再起動が効かない | Restart設定不備 | Restart=always を確認 |
メモリ不足エラー | メモリ割り当て不足 | -Xmx 値を調整 |
セキュリティ考慮事項
ファイアウォール設定
Copy# UFWでポート開放
sudo ufw allow 25565/tcp
sudo ufw enable
定期バックアップ
Copy#!/bin/bash
# 毎時バックアップスクリプト
rsync -av /opt/minecraft/world/ /backup/minecraft/$(date +%Y%m%d_%H%M%S)/
まとめ
systemdとscreen監視を組み合わせることで、マイクラサーバーの安定運用が実現できます。Watchdog機能により、サーバーダウン時の自動復旧も可能になります。
おすすめサーバーサービス比較
マイクラサーバーの自動化には、信頼性の高いVPSサービスの選択が重要です:
サービス名 | 特徴 | 料金目安 |
---|---|---|
XServer VPS | 高性能CPU・安定性重視 | 月額830円~ |
ConoHa VPS | 時間課金・柔軟性 | 月額678円~ |
さくら VPS | 老舗・安定運用 | 月額590円~ |
特にsystemd管理機能が必要な場合は、root権限が使えるVPSサービスを選択しましょう。
免責事項
※本記事は2025年1月時点の情報に基づいて執筆されています。内容の正確性には万全を期していますが、最新情報は各公式サイトをご確認ください。