Minecraftマルチサーバーをvpsで建てよう
初めに
友達とMinecraftで遊ぶことになった。以前は自宅の余っていたPCでサーバーを立てていたのだが、ファンの音がうるさく電気代も気になるのでvpsで建てることにした。
詳細
- ConoHavps。後からRAMやCPUをグレードアップさせることができるらしい。またSSD100GBと読み込みが高速かつ大容量。
→私は4GBプラン - 3,280円/月(2020/8月現在)にした。人数に合わせて変えていこうと思う。 - CentOS 7.6
- Tera Term
- Minecraft バージョン : 1.7.10 (竹modが最適)
- forge-1.7.10-10.13.4.1614
- 導入mod(サーバー&クライアント側) : 竹mod , Flan's mod(WW2,simple parts pack),bibliocraft,worldedit,MineAll,DigAll,CutAll,codechickencore,not enough items,storage box
- 導入mod(クライアント側) : OptiFine , 影mod(SEUS-v11.0)
初期設定
- minecraft用の一般ユーザを作成
- rootからのログインを禁止
- sshポート変更
- minecraft用(minecraftサーバー用)のディレクトリを作成
→forge_serverと記載、私は/usr/local/games/minecraft
と指定 - OpenJDKをインストール
- ファイアウォール設定
サーバー側
Forgeを導入
[1]ホームディレクトリにダウンロードしたForgeをSCPでアップロード
ファイル - SSH,SCPを選択
Fromにファイルを選択
Toには何も書かない(ホームディレクトリ)
[2]ホームディレクトリに保存した2つをminecraftディレクトリに (この場合だとforge_server)
$ cp -p forge-1.7.10-10.13.4.1614-1.7.10-installer.jar forge_server $ cp -p forge-1.7.10-10.13.4.1614-1.7.10-universal.jar forge_server
[3] ダウンロードしたインストーラーを実行
$ java -jar forge-1.7.10-10.13.4.1614-1.7.10-installer.jar nogui --installServer
"installerはけしていいよ"といわれたらOK
[4] インストーラーとインストールのログファイルは不要なので削除
$ rm forge-1.7.10-10.13.4.1614-1.7.10-installer.jar $ rm forge-1.7.10-10.13.4.1614-1.7.10-installer.jar.log
ホームディレクトリも同様に
[5] インストーラーの実行で出来上がったjarファイル(forge-1.8-11.14.4.1563.jar)の名前を変更
$ mv forge-1.7.10-10.13.4.1614-1.7.10-universal.jar minecraft_server.jar
[6]Forgeサーバー起動
$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
[7] 作成したディレクトリの所有者を[minecraft]に設定
# chown minecraft:minecraft forge_server
起動スクリプトを設定
screenのインストール
$ sudo yum -y install screen
起動スクリプトをダウンロード
$ wget -O minecraft "http://minecraft.gamepedia.com/Tutorials/Server_startup_script/Script?action=raw"
これでservice minecraft start
で起動できる
この他にもservice minecraft status
など様々なコマンドが扱える
仮想端末へ接続
screen -r minecraft
と実行することで仮想端末に接続することができる。
起動スクリプトを使用した場合はここでサーバーが正常に起動できているか確かめる。op権限を付与したりもここから
クライアント側
Forgeを導入
サーバー側のForgeインストールに使ったインストーラーを実行
mod導入
- サーバー&クライアント側mod導入
vpsのminecraftディレクトリのmodsの中にjarファイルを入れる
→TeraTermの場合ドラッグ&ドロップでパスを指定するだけ
クライアント側もForge実行後に作成されるmodsフォルダにjarファイルをいれる - クライアント側mod導入
modsフォルダにjarファイルを入れる
影modはshaderpacksの中にmod設定
- digallModは初期設定から変えたほうがよい configをいじる必要がある
# Boolean: false B:DropGather=true # Integer: 11 I:Limiter=4 # Boolean: true B:StartMode=false # String: "grass, dirt, sand, gravel, farmland, snow_layer, clay, soul_sand, mycelium" S:blockIds=grass, dirt, sand, gravel, farmland, snow_layer, clay, soul_sand, mycelium,stone # String: "iron_shovel, wooden_shovel, stone_shovel, diamond_shovel, golden_shovel" S:itemIds= stone_shovel
- bibliocraftの写真はzipファイルの中に直接入れる
パスはassets\bibliocraft\textures\custompaintings
pngしか認識しない
worldバックアップ
手動
- バックアップ用のディレクトリを作成
- cp や tar などでバックアップ
$ tar cfvz buckup_`date +%Y%m%d-%H%M%S`.tar.gz /minecraft/world
- バックアップ消去はこんな感じ 確認が欲しければyes抜きで
yes | rm -r <ディレクトリ>
スクリプト
- CentOSでのminecraft_server(マルチサーバ)バックアップ
これを参考にして作った
スクリプト作成
$ vi /<minecraftディレクトリ>/mc_backup_full.sh $ chmod +x /<minecraftディレクトリ>/mc_backup_full.sh
下はサーバーを止めてバックアップして再起するスクリプト。サーバーを止めないものもあるとさらに良い。
#!/bin/bash SERVICE='minecraft_server.jar' USERNAME=' ' #<minecraft用> SCNAME=' ' #<minecraft用> MC_PATH=' ' #<minecraftディレクトリのパス> BK_PATH=' ' #<作成したバックアップ用ディレクトリのパス> BK_TIME=`date +%Y%m%d-%H%M%S` #現在時刻 BK_NAME="$BK_PATH/mc_backup_full_${BK_TIME}.tar.gz" #バックアップディレクトリ名 BK_GEN="3" #<バックアップを何日残すか> XMX="1024M" #サーバー起動時のメモリ最大割り当て値 XMS="1024M" #サーバー起動時のメモリ初期値 cd $MC_PATH ME=`whoami` if [ $ME == $USERNAME ] ; then if pgrep -u $USERNAME -f $SERVICE > /dev/null then echo "Full backup start minecraft data..." screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."\015' sleep 10 screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015' screen -p 0 -S $SCNAME -X eval 'stuff "stop"\015' echo "Stopped minecraft_server" echo "Full Backup start ..." tar cfvz $BK_NAME $MC_PATH sleep 10 echo "Full Backup compleate!" find $BK_PATH -name "mc_backup_full*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \; echo "Starting $SERVICE..." screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui else echo "$SERVICE was not runnning." fi else echo "Please run the $USERNAME user." fi
テスト (-xを付けると実行内容を出力してくれる)
$ sh -x /<minecraftディレクトリ>/mc_backup_full.sh
定期バックアップ
cronに登録(サーバーを実行しているユーザーで実行)
$ crontab -e
上は毎日4:30にバックアップを行う
下は毎時30分、毎月や毎分なども設定できる
30 4 * * * /<minecraftディレクトリ>/mc_backup_full.sh 30 * * * * /<minecraftディレクトリ>/mc_backup_full.sh
私は毎日4:30にした。これで何もしなくても圧縮バックアップが作成されるようになった。
最後に
後はプレイして楽しもう!
余談だが、サーバー代の集金はPayPalのマネープールを使うことにした。ConoHaVPSもPayPalに対応しているので簡単に支払いができるはずだ。