Minecraft【サーバー】簡単なバッチファイルで、マイクラサーバーを自動化。

2024-02-16

Windowsで動作確認。

バッチファイルを使って作業を自動化し、サーバー運用の負担を減らす。

マイクラサーバーを作る方法は、Windowsでも多くの情報のがありますが、自動化となるとLinuxを使ったものが多いです。今回はWindowsの標準機能だけで、プロキシ・サーバーの起動、停止、ワールドのバックアップ、古いログやワールドの削除まで、バッチファイルを使って自動化していきます。※Window11では動作未確認。

◻︎Mac・Linuxはこちら。

 

◻︎バッチファイルで作業の自動化。
・複数のサーバーを同時に起動、終了。
・ワールドデータのバックアップ。
・古いログやバックアップの削除。
・タスクスケジューラでプログラムのループを作成。

 

 

目次

1.準備
・フォルダーの場所。

2.個別にバッチファイルを作成
・バックアップ用バッチファイル。
・削除用バッチファイル。
・バッチファイルを別のサーバーに複製。
・プロキシのバッチファイル。

3.一括バッチファイルを作成
・起動用バッチファイル。
・削除用バッチファイル。
・再起動用バッチファイル。
・停止用バッチファイル。
・その他。

4.スケジュール管理
・タスクスケジューラの設定。
・設定のサンプル。

 

準備

フォルダーの場所。

 
proxyは「velocity」を使用。serverは「PaperMC」を使い「lobby」と「build」の2つを使用。ワールド名も同じにしています。Dドライブの直下にproxy、serverを設置。batと名前を付けた空フォルダーも作っておきます。「jar」はアップデートの度にバージョン名を変えるのも面倒なので、単純化しておきます。※ファイルの場所やサーバー名は各自変更してください。例)paper-1.20.2-263.jar→paper.jar

個別にバッチファイルを作成

起動用バッチファイル「lobby.bat」と同じ場所に、ワールドをバックアップするための「backup」フォルダーを作っておきます。さらにワールドデータを保存する「backup.bat」とログやバックアップを削除する「delete.bat」を作ります。※プロキシには「backup」フォルダーは不要。

 

バックアップ用バッチファイル。

◻︎backup.bat「lobby」の場合。
titleはシェルを起動した時、どのバッチファイルが動いているか分かるように付けています。timeoutを使って時間を調節。ファイルやフォルダーを選択した状態で、ウィンドウのタブ「ホーム」のパスのコピーからファイルパスをコピーできます。

※「rem」は残っていても動作します。原因不明ですが、コメントを付けると動作しない。

@echo off
title backup_lobby
rem
md D:\server\lobby\backup\lobby
xcopy /e "D:\server\lobby\lobby" "D:\server\lobby\backup\lobby"
rem
timeout 5 > nul 2>&1
rem
cd D:\server\lobby\backup
powershell compress-archive lobby lobby.zip
rem
timeout 1 > nul 2>&1
rem
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set hh=%time:~0,2%
set mn=%time:~3,2%
rem
set filename=%yyyy%%mm%%dd%_%hh%%mn%
ren lobby.zip %filename%.zip
rem
timeout 1 > nul 2>&1
rem
rmdir /s /q "lobby"
rem
exit

「lobby」サーバーのbackupフォルダーの中にワールド名「lobby」を複製。5秒待ってから複製した「lobby」を「zip」形式で圧縮。1秒待ってから日付と時間を取得し、圧縮した「lobby」の名前を変更。さらに1秒待ってから複製した「lobby」を削除して、シェルを閉じています。

株式会社ソフテル zipファイルの作り方を参考にさせていただきました。

 

削除用バッチファイル。

◻︎delete.bat「lobby」の場合。

@echo off
title delete_lobby
setlocal
rem
forfiles /P "D:\server\lobby\logs" /M *.gz /C "cmd /C Del /S @path" /D -10
forfiles /P "D:\server\lobby\backup" /M *.zip /C "cmd /C Del /S @path" /D -10
rem
exit

バッチファイルを実行時、10日以上前のログやバックアップしたワールドを削除。※-10の数字を変えると、期間を変更出来ます。

株式会社ビヨンド ログの削除方法を参考にさせていただきました。

 

バッチファイルを別のサーバーに複製。

「lobby」サーバーで作ったバッチファイル「backup.bat」と「delete.bat」を「build」サーバーに複製します。テキストエディタでバッチファイルを開き「lobby」を「build」にすべて置換します。他にもサーバーがある場合は、同じ手順で複製していきます。

 

プロキシのバッチファイル。

プロキシではワールドのバックアップはしないので、必要なのは「delete.bat」のみ。※ファイルパスがサーバーと違うので注意。

◻︎delete.bat「proxy」の場合。

@echo off
title delete_proxy
setlocal
rem
forfiles /P "D:\proxy\logs" /M *.gz /C "cmd /C Del /S @path" /D -10
rem
exit

 

一括バッチファイルを作成

「bat」フォルダーの中に、プロキシやサーバーを一括で操作する、4つのバッチファイルを作ります。個別で作ったバッチファイルのファイルパスを指定するだけです。※ファイル名は各自変更。

 

起動用バッチファイル。

◻︎boot.bat

@echo off
title boot
rem
cd D:\proxy
start "" proxy.bat
rem
cd D:\server\lobby
start "" lobby.bat
rem
cd D:\server\build
start "" build.bat
rem
exit

起動バッチファイルがあるディレクトリに移動してから、各バッチファイルを開き、boot.batを閉じています。ワールドをバックアップをせずに、プロキシやサーバーを起動したい時に使います。

◻︎playitの追加

cd C:\Program Files\playit_gg\bin
start "" playit.exe

playitなど、トンネルアプリも同時に起動したい場合は、boot.batに追加してください。

 

削除用バッチファイル。

◻︎del_all.bat

@echo off
title del_all
rem
cd D:\proxy
start "" delete.bat
rem
cd D:\server\lobby
start "" delete.bat
rem
cd D:\server\build
start "" delete.bat
rem
exit

 

再起動用バッチファイル。

◻︎re_boot.bat

@echo off
title re_boot
rem
cd D:\server\lobby
start "" backup.bat
rem
cd D:\server\build
start "" backup.bat
rem
timeout 20 > nul 2>&1
rem
cd "D:\bat
start "" boot.bat

ワールドをバックアップしてから、20秒後にプロキシ、サーバーを起動します。

 

停止用バッチファイル。

◻︎stop.bat

@echo off
title stop
taskkill /im cmd.exe

起動中の全てのシェルを停止するバッチファイル。

 

◻︎playitを停止する場合。

@echo off
title stop
taskkill /f /im playit.exe
taskkill /im cmd.exe

シェルを停止するより前に、playit.exeをtaskkillします。

 

その他。

◻︎あると便利なバッチファイル。
更新頻度が多い、PaperMC(プラグインサーバー)、Geyser(統合版プラグイン)など、ダウンロードしたプログラムを各フォルダーに一括で上書きするバッチファイル。

コマンドプロンプトでは、コマンドから起動中のシェルを選んでプログラムを実行出来ません。定期メッセージなどは、サーバーログイン時にメッセージを表示するプラグインを使います。サーバーの再起動中に、メッセージを書き換えた「config.yml」を上書きするバッチファイルがあると便利です。

WarmWelcome by Neliz サーバーログイン時にメッセージを表示するプラグイン。

 

スケジュール管理

一括起動出来るようになったバッチファイルを「タスクスケジューラ」を使って、時間や日付で管理します。Windowsの標準プログラムです。※一度設定しておくとパソコンを再起動しても消えません。

 

タスクスケジューラの設定。

WindowsキーとRを押して、ファイル名を指定して実行を表示。「tasksche.msc」と入力してタスクスケジューラを起動します。

 

◎タスクスケジューラ

左の項目から、タスクスケジューラーライブラリを選択して、右の項目の操作から、新しいフォルダーを選択。「マイクラサーバー」を作ります。マイクラサーバーのフォルダーを選択し、基本タスクの作成...からチュートリアルを進めます。※作成したタスクは後からでも変更出来ます。

◻︎チュートリアル
◎基本タスクの作成
名前や説明を入力。

◎タスクトリガー
時間や曜日を細かく指定出来ます。パソコンの再起動時なども選択可。

◎操作
プログラムの開始を選択。

◎プログラムの開始
参照を押して、目的のバッチファイルを選択。開始(オプション)(T):には、ファイルディレクトリを入力。

◎要約
内容を確認したら、完了を押します。同じ手順を繰り返し、他のバッチファイルも登録します。

設定のサンプル。

今回作ったバッチファイルで、設定したサンプルです。

◻︎サーバー停止:毎日午前4時にサーバー停止。/stop.bat
◻︎サーバー再起動:毎日午前4時1分ににサーバー再起動。/re_boot.bat
◻︎起動:パソコンを再起動した時、サーバーを起動。/boot.bat ※re_boot.batを使う場合は不要。
◻︎過去データ削除:毎月10日、20日、30日の午前4時3分に、ログファイルやワールドのバックアップを削除。/del_all.bat

※パソコンも自動で再起動したい場合は、タスクを追加し、時間を調整してください。